目次
- X API v2 のレートリミット
- X API Enterprise のレートリミット
- レートリミットと認証方式
- HTTP ヘッダーとレスポンスコード
- レートリミットからの復旧手順
- レートリミットを回避するためのヒント
X API v2 のレートリミット
endpoint | Pro の上限 | Basic の上限 | Free の上限 |
---|---|---|---|
Tweets | |||
DELETE /2/tweets/:id | 15分あたり50リクエスト ユーザー単位 | 15分あたり5リクエスト ユーザー単位 | 24時間あたり17リクエスト ユーザー単位 24時間あたり17リクエスト App単位 |
DELETE /2/users/:id/likes/:tweet_id | 50件のリクエスト / 15分 ユーザー単位 | 100件のリクエスト / 24時間 ユーザー単位 | 1件のリクエスト / 15分 ユーザー単位 |
DELETE /2/users/:id/retweets/:tweet_id | 50件のリクエスト / 15分 ユーザーごと | 5件のリクエスト / 15分 ユーザーごと | 1件のリクエスト / 15分 ユーザーごと |
GET /2/tweets | 15分あたり900リクエスト ユーザー単位 15分あたり450リクエスト App単位 | 15分あたり15リクエスト ユーザー単位 15分あたり15リクエスト App単位 | 15分あたり1リクエスト ユーザー単位 15分あたり1リクエスト App単位 |
GET /2/tweets/:id | 15分あたり900件のリクエスト ユーザー単位 15分あたり450件のリクエスト App単位 | 15分あたり15件のリクエスト ユーザー単位 15分あたり15件のリクエスト App単位 | 15分あたり1件のリクエスト ユーザー単位 15分あたり1件のリクエスト App単位 |
GET /2/tweets/:id/liking_users | 75 requests / 15 mins ユーザーごと 75 requests / 15 mins Appごと | 5 requests / 15 mins ユーザーごと 25 requests / 15 mins Appごと | 1 requests / 15 mins ユーザーごと 1 requests / 15 mins Appごと |
GET /2/tweets/:id/quote_tweets | 15分あたり75リクエスト ユーザー単位 15分あたり75リクエスト App単位 | 15分あたり5リクエスト ユーザー単位 15分あたり5リクエスト App単位 | 15分あたり1リクエスト ユーザー単位 15分あたり1リクエスト App単位 |
GET /2/tweets/:id/retweeted_by | 75リクエスト / 15分 ユーザー単位 75リクエスト / 15分 App単位 | 5リクエスト / 15分 ユーザー単位 5リクエスト / 15分 App単位 | 1リクエスト / 15分 ユーザー単位 1リクエスト / 15分 App単位 |
GET /2/tweets/counts/all | 15分あたり 300 リクエスト App単位 | ||
GET /2/tweets/counts/recent | 300リクエスト / 15分 Appごと | 5リクエスト / 15分 Appごと | 1リクエスト / 15分 Appごと |
GET /2/tweets/search/all | 1 リクエスト/秒 ユーザーごと 1 リクエスト/秒 App ごと | ||
GET /2/tweets/search/recent | 300件のリクエスト / 15分 ユーザー単位 450件のリクエスト / 15分 App単位 | 60件のリクエスト / 15分 ユーザー単位 60件のリクエスト / 15分 App単位 | 1件のリクエスト / 15分 ユーザー単位 1件のリクエスト / 15分 App単位 |
GET /2/tweets/search/stream | 15分あたり50リクエスト Appごと | ||
GET /2/tweets/search/stream/rules | 450件のリクエスト / 15分 Appごと | ||
GET /2/users/:id/liked_tweets | 15分あたり75リクエスト ユーザー単位 15分あたり75リクエスト App単位 | 15分あたり5リクエスト ユーザー単位 15分あたり5リクエスト App単位 | 15分あたり1リクエスト ユーザー単位 15分あたり1リクエスト App単位 |
GET /2/users/:id/mentions | 300 リクエスト / 15 分 ユーザー単位 450 リクエスト / 15 分 App 単位 | 10 リクエスト / 15 分 ユーザー単位 15 リクエスト / 15 分 App 単位 | 1 リクエスト / 15 分 ユーザー単位 1 リクエスト / 15 分 App 単位 |
GET /2/users/:id/timelines/reverse_chronological | 15分あたり 180 件のリクエスト ユーザー単位 | 15分あたり 5 件のリクエスト ユーザー単位 | 15分あたり 1 件のリクエスト ユーザー単位 |
GET /2/users/:id/tweets | 900 リクエスト / 15分 ユーザー単位 1500 リクエスト / 15分 App 単位 | 5 リクエスト / 15分 ユーザー単位 10 リクエスト / 15分 App 単位 | 1 リクエスト / 15分 ユーザー単位 1 リクエスト / 15分 App 単位 |
GET /2/users/reposts_of_me | 75 requests / 15 mins ユーザー単位 | 75 requests / 15 mins ユーザー単位 | 1 requests / 15 mins ユーザー単位 |
POST /2/tweets | 100 リクエスト / 15分 ユーザー単位 10,000 リクエスト / 24時間 App 単位 | 100 リクエスト / 24時間 ユーザー単位 1,667 リクエスト / 24時間 App 単位 | 17 リクエスト / 24時間 ユーザー単位 17 リクエスト / 24時間 App 単位 |
POST /2/tweets/search/stream/rules | 100件のリクエスト / 15分 App単位 | ||
POST /2/users/:id/likes | 24時間あたり1,000リクエスト ユーザー単位 | 24時間あたり200リクエスト ユーザー単位 | 15分あたり1リクエスト ユーザー単位 |
POST /2/users/:id/retweets | 15分あたり50件のリクエスト ユーザー単位 | 15分あたり5件のリクエスト ユーザー単位 | 15分あたり1件のリクエスト ユーザー単位 |
PUT /2/tweets/:tweet_id/hidden | 15分あたり 50 リクエスト ユーザー単位 | 15分あたり 5 リクエスト ユーザー単位 | 15分あたり 1 リクエスト ユーザー単位 |
ユーザー | |||
DELETE /2/users/:source_user_id/following/:target_user_id | 50 リクエスト / 15 分 ユーザー単位 | 5 リクエスト / 15 分 ユーザー単位 | 1 リクエスト / 15 分 ユーザー単位 |
DELETE /2/users/:source_user_id/muting/:target_user_id | 50 requests / 15 mins ユーザー単位 | 5 requests / 15 mins ユーザー単位 | 1 requests / 15 mins ユーザー単位 |
GET /2/users | 900リクエスト / 15分 ユーザー単位 300リクエスト / 15分 App単位 | 100リクエスト / 24時間 ユーザー単位 500リクエスト / 24時間 App単位 | 1リクエスト / 24時間 ユーザー単位 1リクエスト / 24時間 App単位 |
GET /2/users/:id | 15分あたり 900 requests ユーザー単位 15分あたり 300 requests App 単位 | 24時間あたり 100 requests ユーザー単位 24時間あたり 500 requests App 単位 | 24時間あたり 1 request ユーザー単位 24時間あたり 1 request App 単位 |
GET /2/users/:id/blocking | 15件のリクエスト/15分 ユーザーごと | 5件のリクエスト/15分 ユーザーごと | 1件のリクエスト/15分 ユーザーごと |
GET /2/users/:id/muting | 15 requests / 15 mins ユーザー単位 | 100 requests / 24 hours ユーザー単位 | 1 requests / 24 hours ユーザー単位 |
GET /2/users/by | 900 リクエスト/15分 ユーザー単位 300 リクエスト/15分 App 単位 | 100 リクエスト/24時間 ユーザー単位 500 リクエスト/24時間 App 単位 | 1 リクエスト/24時間 ユーザー単位 1 リクエスト/24時間 App 単位 |
GET /2/users/by/username/:username | 900リクエスト / 15分 ユーザー単位 300リクエスト / 15分 App単位 | 100リクエスト / 24時間 ユーザー単位 500リクエスト / 24時間 App単位 | 3リクエスト / 15分 ユーザー単位 3リクエスト / 15分 App単位 |
GET /2/users/me | 75 requests / 15分 ユーザー単位 | 250 requests / 24時間 ユーザー単位 | 25 requests / 24時間 ユーザー単位 |
GET /2/users/search | 900 リクエスト / 15分 ユーザー単位 300 リクエスト / 15分 App 単位 | ||
POST /2/users/:id/following | 15分あたり50リクエスト ユーザー単位 | 15分あたり5リクエスト ユーザー単位 | 15分あたり1リクエスト ユーザー単位 |
POST /2/users/:id/muting | 50件のリクエスト / 15分 ユーザーごと | 5件のリクエスト / 15分 ユーザーごと | 1件のリクエスト / 15分 ユーザーごと |
Spaces | |||
GET /2/spaces | 300件 / 15分 ユーザーごと 300件 / 15分 Appごと | 5件 / 15分 ユーザーごと 25件 / 15分 Appごと | 1件 / 15分 ユーザーごと 1件 / 15分 Appごと |
GET /2/spaces/:id | 300 リクエスト / 15 分 ユーザーごと 300 リクエスト / 15 分 App ごと | 5 リクエスト / 15 分 ユーザーごと 25 リクエスト / 15 分 App ごと | 1 リクエスト / 15 分 ユーザーごと 1 リクエスト / 15 分 App ごと |
GET /2/spaces/:id/buyers | 300 リクエスト / 15 分 ユーザーごと 300 リクエスト / 15 分 App ごと | 5 リクエスト / 15 分 ユーザーごと 25 リクエスト / 15 分 App ごと | 1 リクエスト / 15 分 ユーザーごと 1 リクエスト / 15 分 App ごと |
GET /2/spaces/:id/tweets | 300 リクエスト / 15 分 ユーザー単位 300 リクエスト / 15 分 App 単位 | 5 リクエスト / 15 分 ユーザー単位 25 リクエスト / 15 分 App 単位 | 1 リクエスト / 15 分 ユーザー単位 1 リクエスト / 15 分 App 単位 |
GET /2/spaces/by/creator_ids | 15 分あたり 300 件のリクエスト ユーザー単位 1 秒あたり 1 件のリクエスト App 単位 | 15 分あたり 5 件のリクエスト ユーザー単位 1 秒あたり 25 件のリクエスト App 単位 | 1 秒あたり 1 件のリクエスト ユーザー単位 15 分あたり 1 件のリクエスト App 単位 |
GET /2/spaces/search | 300件のリクエスト / 15分 ユーザー単位 300件のリクエスト / 15分 App単位 | 5件のリクエスト / 15分 ユーザー単位 25件のリクエスト / 15分 App単位 | 1件のリクエスト / 15分 ユーザー単位 1件のリクエスト / 15分 App単位 |
ダイレクトメッセージ | |||
DELETE /2/dm_events/:id | 24時間あたり1500リクエスト ユーザー単位 24時間あたり4000リクエスト App単位 | 15分あたり200リクエスト ユーザー単位 24時間あたり2500リクエスト App単位 | |
GET /2/dm_conversations/:dm_conversation_id/dm_events | 15リクエスト / 15分 ユーザー単位 | 1リクエスト / 24時間 ユーザー単位 | |
GET /2/dm_conversations/with/:participant_id/dm_events | 15件のリクエスト / 15分間 ユーザー単位 | 1件のリクエスト / 24時間 ユーザー単位 | |
GET /2/dm_events | 15リクエスト / 15分 ユーザー単位 | 1リクエスト / 24時間 ユーザー単位 | |
GET /2/dm_events/:id | 15リクエスト / 15分 ユーザー単位 | 5リクエスト / 24時間 ユーザー単位 | |
POST /2/dm_conversations | 15 リクエスト / 15 分 ユーザー単位 1440 リクエスト / 24 時間 App 単位 | 1 リクエスト / 24 時間 ユーザー単位 1 リクエスト / 24 時間 App 単位 | |
POST /2/dm_conversations/:dm_conversation_id/messages | 15 requests / 15 mins ユーザー単位 1440 requests / 24 hours App 単位 | 1 requests / 24 hours ユーザー単位 1 requests / 24 hours App 単位 | |
POST /2/dm_conversations/with/:participant_id/messages | 24時間あたり 1440 リクエスト ユーザー単位 24時間あたり 1440 リクエスト App 単位 | 24時間あたり 1 リクエスト ユーザー単位 24時間あたり 1 リクエスト App 単位 | |
List | |||
DELETE /2/lists/:id | 300 リクエスト / 15 分 ユーザー単位 | 5 リクエスト / 15 分 ユーザー単位 | 1 リクエスト / 15 分 ユーザー単位 |
DELETE /2/lists/:id/members/:user_id | 15分あたり300リクエスト ユーザー単位 | 15分あたり5リクエスト ユーザー単位 | 15分あたり1リクエスト ユーザー単位 |
DELETE /2/users/:id/followed_lists/:list_id | 15分あたり50リクエスト ユーザー単位 | 15分あたり5リクエスト ユーザー単位 | 15分あたり1リクエスト ユーザー単位 |
DELETE /2/users/:id/pinned_lists/:list_id | 50リクエスト / 15分 ユーザー単位 | 5リクエスト / 15分 ユーザー単位 | 1リクエスト / 15分 ユーザー単位 |
GET /2/lists/:id | 15分あたり75回のリクエスト ユーザー単位 15分あたり75回のリクエスト App単位 | 15分あたり5回のリクエスト ユーザー単位 15分あたり5回のリクエスト App単位 | 15分あたり1回のリクエスト ユーザー単位 15分あたり1回のリクエスト App単位 |
GET /2/lists/:id/members | 15分あたり900リクエスト ユーザー単位 15分あたり900リクエスト App単位 | 15分あたり5リクエスト ユーザー単位 15分あたり25リクエスト App単位 | 15分あたり1リクエスト ユーザー単位 15分あたり1リクエスト App単位 |
GET /2/lists/:id/tweets | 900 リクエスト / 15 分 ユーザー単位 900 リクエスト / 15 分 App 単位 | 5 リクエスト / 15 分 ユーザー単位 25 リクエスト / 15 分 App 単位 | |
GET /2/users/:id/list_memberships | 15分あたり75リクエスト ユーザー単位 15分あたり75リクエスト App単位 | 15分あたり5リクエスト ユーザー単位 15分あたり25リクエスト App単位 | 15分あたり1リクエスト ユーザー単位 15分あたり1リクエスト App単位 |
GET /2/users/:id/owned_lists | 15リクエスト / 15分 ユーザー単位 15リクエスト / 15分 App単位 | 100リクエスト / 24時間 ユーザー単位 500リクエスト / 24時間 App単位 | 1リクエスト / 24時間 ユーザー単位 1リクエスト / 24時間 App単位 |
GET /2/users/:id/pinned_lists | 15件のリクエスト / 15分 ユーザー単位 15件のリクエスト / 15分 App単位 | 100件のリクエスト / 24時間 ユーザー単位 500件のリクエスト / 24時間 App単位 | 1件のリクエスト / 24時間 ユーザー単位 1件のリクエスト / 24時間 App単位 |
POST /2/lists | 300リクエスト / 15分 ユーザー単位 | 100リクエスト / 24時間 ユーザー単位 | 1リクエスト / 24時間 ユーザー単位 |
POST /2/lists/:id/members | 300件のリクエスト / 15分 ユーザー単位 | 5件のリクエスト / 15分 ユーザー単位 | 1件のリクエスト / 15分 ユーザー単位 |
POST /2/users/:id/followed_lists | 50リクエスト / 15分 ユーザー単位 | 5リクエスト / 15分 ユーザー単位 | 1リクエスト / 15分 ユーザー単位 |
POST /2/users/:id/pinned_lists | 15分あたり50件のリクエスト ユーザー単位 | 15分あたり5件のリクエスト ユーザー単位 | 15分あたり1件のリクエスト ユーザー単位 |
PUT /2/lists/:id | 300件のリクエスト / 15分 ユーザー単位 | 5件のリクエスト / 15分 ユーザー単位 | 1件のリクエスト / 15分 ユーザー単位 |
ブックマーク | |||
DELETE /2/users/:id/bookmarks/:tweet_id | 15分あたり50リクエスト ユーザー単位 | 15分あたり5リクエスト ユーザー単位 | 15分あたり1リクエスト ユーザー単位 |
GET /2/users/:id/bookmarks | 15分あたり180リクエスト ユーザーごと | 15分あたり10リクエスト ユーザーごと | 15分あたり1リクエスト ユーザーごと |
GET /2/users/:id/bookmarks/folders | 50 requests / 15 mins ユーザー単位 50 requests / 15 mins App 単位 | 5 requests / 15 mins ユーザー単位 5 requests / 15 mins App 単位 | 1 requests / 15 mins ユーザー単位 1 requests / 15 mins App 単位 |
GET /2/users/:id/bookmarks/folders/:folder_id | 15分あたり50リクエスト ユーザー単位 15分あたり50リクエスト App単位 | 15分あたり5リクエスト ユーザー単位 15分あたり5リクエスト App単位 | 15分あたり1リクエスト ユーザー単位 15分あたり1リクエスト App単位 |
POST /2/users/:id/bookmarks | 50 リクエスト / 15 分 ユーザー単位 | 5 リクエスト / 15 分 ユーザー単位 | 1 リクエスト / 15 分 ユーザー単位 |
コンプライアンス | |||
GET /2/compliance/jobs | 15分あたり 150 リクエスト App ごと | 15分あたり 5 リクエスト App ごと | 15分あたり 1 リクエスト App ごと |
GET /2/compliance/jobs/:job_id | 15分あたり150リクエスト Appごと | 15分あたり5リクエスト Appごと | 15分あたり1リクエスト Appごと |
POST /2/compliance/jobs | 150件のリクエスト / 15分 App ごと | 15件のリクエスト / 15分 App ごと | 1件のリクエスト / 15分 App ごと |
使用 | |||
GET /2/usage/tweets | 50件のリクエスト / 15分 Appごと | 50件のリクエスト / 15分 Appごと | 1件のリクエスト / 15分 Appごと |
トレンド | |||
GET /2/trends/by/woeid/:id | 75リクエスト / 15分 Appごと | 15リクエスト / 15分 Appごと | |
GET /2/users/personalized_trends | 15分あたり10件のリクエスト ユーザー単位 15分あたり200件のリクエスト App単位 | 15分あたり1件のリクエスト ユーザー単位 15分あたり20件のリクエスト App単位 | 15分あたり1件のリクエスト ユーザー単位 24時間あたり1件のリクエスト App単位 |
コミュニティ | |||
GET /2/communities/:id | 15分あたり300リクエスト ユーザー単位 15分あたり300リクエスト App単位 | 15分あたり1リクエスト ユーザー単位 15分あたり25リクエスト App単位 | 15分あたり1リクエスト ユーザー単位 15分あたり1リクエスト App単位 |
GET /2/communities/search | 300 リクエスト / 15分 ユーザー単位 300 リクエスト / 15分 App 単位 | 1 リクエスト / 15分 ユーザー単位 25 リクエスト / 15分 App 単位 | 1 リクエスト / 15分 ユーザー単位 1 リクエスト / 15分 App 単位 |
レートリミットと認証方法
-
OAuth 2.0 Bearer Token: App レートリミット
この方法では、開発者用 App を代表して一定数のリクエストを行うことができます。この認証方法を使用する場合、制限は Bearer Token で行われたリクエストに基づいて決まります。
- 例: 15 分間隔あたり 450 リクエストの制限がある場合、その間隔内で App を代表して 450 件のリクエストを実行できます。
-
OAuth 1.0a User Context: ユーザーレートリミット
この方法では、ユーザー Access Token によって識別される X ユーザーを代表してリクエストを行うことができます。たとえば、Posts の非公開 metrics を取得する場合は、そのユーザーの Access Tokens を用いて認証します。これらのトークンは 3-legged OAuth フローで生成されます。
- 例: ユーザーごとに 15 分あたり 900 リクエストの制限がある場合、その時間枠内でユーザーあたり最大 900 件のリクエストを実行できます。
HTTP ヘッダーとレスポンスコード
x-rate-limit-limit
: 当該 endpoint のレートリミット上限x-rate-limit-remaining
: 15分ウィンドウ内の残りリクエスト数x-rate-limit-reset
: レートリミットがリセットされるまでの残り時間(UTC エポック秒)
エラーレスポンス
レートリミットからの復旧
“Too Many Requests” またはレートリミットのエラーが発生した場合は、リクエスト頻度を下げる必要があります。レートリミットエラーに達した際は、
x-rate-limit-reset:
HTTP ヘッダーを確認することで、レートリミットがいつリセットされるかを把握できます。もう一つの一般的なパターンは指数バックオフで、最初はリクエスト間隔を短く(例: 数秒)し、再試行のたびにその間隔を倍にしていきます。これはリクエストが成功するか、あるいは合理的な最大間隔(例: 数分)に達するまで続けます。
理想的には、クライアント側が既存のレートリミットを把握し、現在超過しているウィンドウが失効するまでリクエストを一時停止できます。15 分のリミットを超過した場合は、1〜2 分待ってから再試行するのが妥当です。
リクエスト数の制限に加え、Standard Basic のアクセスレベルでは、recent search および filtered stream の endpoints から月あたり最大 500,000 件の Posts を取得できます。月間の Posts 上限を超えた場合は、App が通知を出し、毎月の更新日を把握したうえでその日までリクエストを控えるほうが適切です。
レートリミットを避けるためのヒント
キャッシュ
アクティブなユーザーを優先する
検索結果に合わせて調整する
否可リスト
- あなたのアプリケーションが拒否されたと考える理由を説明してください。
- すでにレートリミットの対象でなくなっている場合は、どのように問題を解決したかを詳細に記述してください。