このページでは、スタンダードv1.1のエンドポイントのレート制限について説明します。
プレミアムv1.1、エンタープライズ、Twitter API v2のレート制限ページもあります。
概要
スタンダード
毎日、数千人もの開発者がTwitter APIに対してリクエストを実行しています。こうした膨大な量のリクエストを管理しやすくするために、実行できるリクエストの数には制限が設けられています。こうした制限を設けることで、開発者コミュニティが安心して利用できる、信頼性と拡張性に優れたAPIの提供を実現しています。
実行できるリクエストの最大数は一定の期間または時間間隔を1つの単位として設定されています。最も一般的なリクエスト制限間隔は15分です。エンドポイントのレート制限が15分あたり900リクエストの場合は、15分の間に900件までリクエストを実行できます。
適用されるレート制限は使用している認証方法によって異なります。たとえば、OAuth 1.0aユーザーコンテキストを使用している場合、ユーザーのアクセストークン1セットにつき、1期間あたり1つの制限が適用されます。一方、OAuth 2.0ベアラートークンを使用している場合は、アプリによって実行されるリクエストに対して、1期間ごとに異なる制限が適用されます。これらの制限を超過するとエラーが返されます。ここからは、これらの制限の詳細と、レート制限を受けないようにするためのヒントを紹介していきます。
レート制限と認証方法
開発者アプリとユーザーアクセストークン両方のレベルでレート制限が設定されています。
- OAuth 2.0ベアラートークン:開発者アプリ単位
Twitter API v1.1のすべてのエンドポイントでこの認証方法を使用できます。そのため、開発者アプリに代わって特定数のリクエストをエンドポイントに対して実行する場合のみ、制限が適用されます。この認証方法を使用する場合は、ベアラートークンを使用して実行するリクエストの数によってレート制限が決定されます。エンドポイントでレート制限時間枠あたり450リクエストまで許可されている場合、ベアラートークンを渡すことで、アプリに代わって時間枠内に450回リクエストを実行できます。この制限はOAuth 1.0aユーザーコンテキストの制限とは完全に切り離してカウントされます。
- OAuth 1.0aユーザーコンテキスト:ユーザーアクセストークンセット単位
ツイートの検索と最近の検索では、ユーザーに代わって認証を行うことができます。たとえば、ツイートからプライベートメトリックを取得する場合は、対象ユーザーに関連付けられているユーザートークンで認証する必要があります。このトークンは3レッグ認証OAuthフローを使用して生成できます。 10人のユーザーが開発者アプリを許可しており、各ユーザーに代わって15分の間に900回までリクエストを実行できる場合、これらのユーザーの代わりに9,000回までリクエストを実行できます。この制限はアプリケーション単位のベアラートークンの制限とは完全に切り離してカウントされます。
注
ユーザーのレート制限はユーザーが許可しているすべてのアプリとTwitterアプリケーションでカウントされます。たとえば、あるユーザーが24時間の間にTwitterのモバイルアプリケーションで20件のツイートにいいねし、サードパーティアプリケーションで20件のツイートにいいねした場合、合計40件のリクエストがそのユーザーのレート制限としてカウントされます。つまり、このエンドポイントのユーザーレート制限が24時間あたり1,000リクエストの場合、Twitterとサードパーティのアプリを合計して、24時間の時間枠のなかでこのユーザーはあと960件のツイートにいいねできることになります。
スタンダードAPI v1.1の時間枠あたりのレート制限
POSTエンドポイント
この表で説明しているスタンダードAPIのレート制限はPOSTエンドポイントに関するものです。これらのレート制限はスタンダードAPIのエンドポイントにのみ適用され、プレミアムAPIには適用されません。
エンドポイント | レート制限の時間枠 | ユーザーあたりのレート制限 | アプリあたりのレート制限 |
POST statuses/update |
3時間* | 300* | 300* |
POST statuses/retweet/:id |
3時間* | 300* | 300* |
POST favorites/create |
24時間 | 1,000 | 1,000 |
POST friendships/create |
24時間 | 400 | 1,000 |
POST direct_messages/events/new |
24時間 | 1,000 | 15,000 |
注:3時間につき300件までという制限はPOST statuses/updateエンドポイントとPOST statuses/retweet/:idエンドポイント両方でカウントされます。つまり、3時間の間に投稿できるツイートとリツイートの件数は合計で300件までです。
たとえば、3時間の間にTwitterアプリがPOST statuses/updateエンドポイントに対して200件のリクエストを実行した場合、同じ時間枠のなかで開発者アプリがPOST statuses/retweet/:idエンドポイントに対して実行できるリクエストは100件までということになります。
GETエンドポイント
この表で説明しているスタンダードAPIのレート制限はGET(読み取り)エンドポイントに関するものです。表に記載のないエンドポイントでは、割り当てユーザーあたりのリクエスト件数がデフォルトで15件となっています。また、リクエスト時間枠はすべて15分です。 これらのレート制限はスタンダードAPIのエンドポイントにのみ適用され、プレミアムAPIには適用されません。
エンドポイント | 時間枠内で実行できるリクエスト件数(ユーザー単位) | 時間枠内で実行できるリクエスト件数(アプリ単位) |
---|---|---|
GET account/verify_credentials | 75 | 0 |
GET application/rate_limit_status | 180 | 180 |
GET favorites/list | 75 | 75 |
GET followers/ids | 15 | 15 |
GET followers/list | 15 | 15 |
GET friends/ids | 15 | 15 |
GET friends/list | 15 | 15 |
GET friendships/show | 180 | 15 |
GET geo/id/:place_id | 75 | 0 |
GET help/configuration | 15 | 15 |
GET help/languages | 15 | 15 |
GET help/privacy | 15 | 15 |
GET help/tos | 15 | 15 |
GET lists/list | 15 | 15 |
GET lists/members | 900 | 75 |
GET lists/members/show | 15 | 15 |
GET lists/memberships | 75 | 75 |
GET lists/ownerships | 15 | 15 |
GET lists/show | 75 | 75 |
GET lists/statuses | 900 | 900 |
GET lists/subscribers | 180 | 15 |
GET lists/subscribers/show | 15 | 15 |
GET lists/subscriptions | 15 | 15 |
GET search/tweets | 180 | 450 |
GET statuses/lookup | 900 | 300 |
GET statuses/mentions_timeline | 75 | 0 |
GET statuses/retweeters/ids | 75 | 300 |
GET statuses/retweets_of_me | 75 | 0 |
GET statuses/retweets/:id | 75 | 300 |
GET statuses/show/:id | 900 | 900 |
GET statuses/user_timeline | 900 | 1,500 |
GET trends/available | 75 | 75 |
GET trends/closest | 75 | 75 |
GET trends/place | 75 | 75 |
GET users/lookup | 900 | 300 |
GET users/search | 900 | 0 |
GET users/show | 900 | 900 |
GET users/suggestions | 15 | 15 |
GET users/suggestions/:slug | 15 | 15 |
GET users/suggestions/:slug/members | 15 | 15 |