• Showing Page History #59386

このドキュメントはTwitterの公式発表によるものではない部分が含まれています。調査を行い判明した事項が後に変更されている場合もあります。

API制限とは何ですか?

Twitterが負荷軽減などのために、タイムライン取得、Fav追加、書き込みなど、主にAPI操作に関して設けている一定の制限です。この制限に到達すると、一定時間経過するまでの間APIによる操作が不可能になります。

現在かかっているAPI制限にはどのようなものがありますか?

取得系と送信系に大別されます。取得系は、主に読み取り操作に対してかかる制限、送信系はサーバに対してのデータ送信についてかかる制限です。アカウントと使用しているIPアドレスを1組として使用回数がカウントされ、規制されます。

また、検索に関する取得系のAPI制限が存在します。

取得系

タイムライン取得系API(Recent/Reply/DirectMessage)、Lists取得系を含む、データ取得系API の1時間当たりの回数制限。一般的に「API制限」と呼ばれる場合はこれを指すことが多いです。検索系のAPI使用回数は含まれません。

送信系

  • ステータス書き込みAPIの回数制限。投稿回数が多くなった場合に一定の時間投稿ができなくなります。
  • ステータス書き込みAPIの内容による制限。連続して全く同じ文字列の投稿を行った場合、2回目以降の書き込みが反映されません。文字列を変えて投稿した場合は規制対象にならず反映されます。
  • Fav追加APIの回数制限。制限回数に到達すると、一定時間Fav追加が出来なくなります。

検索系

検索結果を取得するAPIに対する1時間あたりの回数制限。IPアドレス単位でカウントされます。

これ以外にも、短時間に大量のAPIを発行した場合は規制を受けることがあります。また、取得系APIにも規制対象外のものがあります。 このように、送信系ではAPI/Webの別なく制限がかかります。Tweenでの発言投稿は常にAPIを使用します。

どの程度の規制がかかっているのですか?

調査で分かった規制は次の通りです。

取得系APIの制限

アカウント+IPアドレスの組み合わせでカウントされます。BASIC認証によりログインした場合は1時間当たり150回。xAuth(oAuth)認証の場合は1時間に350回。1時間ごとにリセットされます。回数は負荷状況により変動するといわれています。

送信系APIの制限

  • ステータス書き込みAPIの回数制限 1時間当たり125回。リセットされるまでの時間は明らかになっていません。Twitter側の都合で、40~60回程度で規制がかかってしまうこともあるようです。
  • ステータス書き込みAPIの内容制限 直前に投稿した文字列と同一でない場合には規制はかかりません。(直近10回の投稿内容まで見ている?)
  • Fav追加APIの回数制限 24時間当たり250Fav。 24時間ごとにリセットされます。

また、1日に投稿できる数にも制限があるようです。 公式には、以下のように発表されています。

  • 通常発言 1000投稿/日
  • ダイレクトメッセージ 250投稿/日

検索系APIの制限

IPアドレス単位でカウントされます。1時間当たり150回。1時間ごとにリセットされます。

取得系APIの制限はPOSTメソッドで回避できるんじゃないですか?

いいえ。2009/4/9の修正で、POSTメソッドによるタイムライン取得系APIの発行はできなくなりました。POSTメソッドで取得系APIを発行すると、「Bad Request」エラーになります。(取得系APIの制限回数を使い切ったときと同じ動作)

API制限というのは誰が決めているのですか?

Twitter運営です。Twitterクライアントや連携アプリケーションの作者が決めているわけではありません。

ユーザーとしては何ができるのですか?

ユーザーができるのは次のことだけです。

  • Twitterクライアントや連携アプリを使用する場合は、設定などによりAPI使用回数を減らす。
  • Twitterが標準で用意したWebインターフェースを使う。

Twitterクライアントを使用しています。別のクライアントに変えると改善されますか?

いいえ。されません。TwitterのAPIを使用しているTwitterクライアントは、同じ制限を受けます。

API制限にひっかからないように気をつけること

  • 同一のアカウントに対して複数のTwitterクライアントを使用しないようにします。
  • API発行回数回数を制限内に抑えるように、取得間隔を間引いてください。
  • 取得発言を増やしたい場合は、標準取得件数を増やします。
  • 取得件数を増やし、それでも取りこぼすときに取得間隔を詰めることを検討してください。
  • API制限に引っかかりそうな場合は、発言時のタイムライン取得をしないようにしてください。