跳转到主要内容
每天,有成千上万的开发者向 X API 发起请求。为管理庞大的请求量,我们对可发起的请求数量设置了限制。这些限制有助于为我们的开发者社区提供可靠且可扩展的 API。 允许的最大请求数基于时间间隔,通常按特定时段或时间窗口计算。最常见的间隔为 15 分钟。例如,某个 endpoint 的限制为每 15 分钟 900 次请求,表示在任意 15 分钟窗口内最多可发起 900 次请求。 请求速率限制取决于认证方式。例如,如果使用 OAuth 1.0a 用户上下文,每组用户的 Access Tokens 在每个周期内都有各自的请求速率限制。或者,如果使用 OAuth 2.0 Bearer Token,你的 App 将在每个时间周期内拥有独立的限制。超过这些限制时,将返回错误。

目录

X API v2 请求速率限制

下表列出了各个 X API 付费方案的请求速率限制。您也可以在开发者门户的“产品”部分查看这些限制。
endpointPro 配额 Basic 配额 Free 配额
Tweets
DELETE /2/tweets/:id每 15 分钟 50 个请求
每位用户
每 15 分钟 5 个请求
每位用户
每 24 小时 17 个请求
每位用户
每 24 小时 17 个请求
每个 App
DELETE /2/users/:id/likes/:tweet_id50 次请求 / 15 分钟
按用户计
100 次请求 / 24 小时
按用户计
1 次请求 / 15 分钟
按用户计
DELETE /2/users/:id/retweets/:tweet_id50 次请求 / 15 分钟
按用户计
5 次请求 / 15 分钟
按用户计
1 次请求 / 15 分钟
按用户计
GET /2/tweets900 次请求 / 15 分钟
每位用户
450 次请求 / 15 分钟
每个 App
15 次请求 / 15 分钟
每位用户
15 次请求 / 15 分钟
每个 App
1 次请求 / 15 分钟
每位用户
1 次请求 / 15 分钟
每个 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每 15 分钟 75 次请求
按用户
每 15 分钟 75 次请求
按 App
每 15 分钟 5 次请求
按用户
每 15 分钟 25 次请求
按 App
每 15 分钟 1 次请求
按用户
每 15 分钟 1 次请求
按 App
GET /2/tweets/:id/quote_tweets75 次请求/15 分钟
每位用户
75 次请求/15 分钟
每个 App
5 次请求/15 分钟
每位用户
5 次请求/15 分钟
每个 App
1 次请求/15 分钟
每位用户
1 次请求/15 分钟
每个 App
GET /2/tweets/:id/retweeted_by75 次请求/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每 15 分钟 300 次请求
按 App 计
每 15 分钟 5 次请求
按 App 计
每 15 分钟 1 次请求
按 App 计
GET /2/tweets/search/all1 次请求/秒
每位用户
1 次请求/秒
每个 App
GET /2/tweets/search/recent300 次请求 / 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/rules450 次请求/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每 15 分钟可发起 300 次请求
按用户计
每 15 分钟可发起 450 次请求
按 App 计
每 15 分钟可发起 10 次请求
按用户计
每 15 分钟可发起 15 次请求
按 App 计
每 15 分钟可发起 1 次请求
按用户计
每 15 分钟可发起 1 次请求
按 App 计
GET /2/users/:id/timelines/reverse_chronological180 次请求/15 分钟
按用户计
5 次请求/15 分钟
按用户计
1 次请求/15 分钟
按用户计
GET /2/users/:id/tweets900 次请求 / 15 分钟
每位用户
1500 次请求 / 15 分钟
每个 App
5 次请求 / 15 分钟
每位用户
10 次请求 / 15 分钟
每个 App
1 次请求 / 15 分钟
每位用户
1 次请求 / 15 分钟
每个 App
GET /2/users/reposts_of_me每 15 分钟 75 次请求
按用户计
每 15 分钟 75 次请求
按用户计
每 15 分钟 1 次请求
按用户计
POST /2/tweets100 次请求/15 分钟
每位用户
10,000 次请求/24 小时
每个 App
100 次请求/24 小时
每位用户
1,667 次请求/24 小时
每个 App
17 次请求/24 小时
每位用户
17 次请求/24 小时
每个 App
POST /2/tweets/search/stream/rules每 15 分钟 100 次请求
每个 App
POST /2/users/:id/likes1000 次请求/24 小时
按用户计
200 次请求/24 小时
按用户计
1 次请求/15 分钟
按用户计
POST /2/users/:id/retweets50 次请求/15 分钟
按用户计
5 次请求/15 分钟
按用户计
1 次请求/15 分钟
按用户计
PUT /2/tweets/:tweet_id/hidden每 15 分钟 50 次请求
每位用户
每 15 分钟 5 次请求
每位用户
每 15 分钟 1 次请求
每位用户
用户
DELETE /2/users/:source_user_id/following/:target_user_id50 次请求 / 15 分钟
按用户计
5 次请求 / 15 分钟
按用户计
1 次请求 / 15 分钟
按用户计
DELETE /2/users/:source_user_id/muting/:target_user_id50 次请求 / 15 分钟
按用户计
5 次请求 / 15 分钟
按用户计
1 次请求 / 15 分钟
按用户计
GET /2/users900 次请求 / 15 分钟
每位用户
300 次请求 / 15 分钟
每个 App
100 次请求 / 24 小时
每位用户
500 次请求 / 24 小时
每个 App
1 次请求 / 24 小时
每位用户
1 次请求 / 24 小时
每个 App
GET /2/users/:id900 次请求/15 分钟
每个用户
300 次请求/15 分钟
每个 App
100 次请求/24 小时
每个用户
500 次请求/24 小时
每个 App
1 次请求/24 小时
每个用户
1 次请求/24 小时
每个 App
GET /2/users/:id/blocking15 次请求 / 15 分钟
按用户
5 次请求 / 15 分钟
按用户
1 次请求 / 15 分钟
按用户
GET /2/users/:id/muting15 次请求 / 15 分钟
按用户
100 次请求 / 24 小时
按用户
1 次请求 / 24 小时
按用户
GET /2/users/by900 次请求 / 15 分钟
按用户
300 次请求 / 15 分钟
按 App
100 次请求 / 24 小时
按用户
500 次请求 / 24 小时
按 App
1 次请求 / 24 小时
按用户
1 次请求 / 24 小时
按 App
GET /2/users/by/username/:username900 次请求/15 分钟
每位用户
300 次请求/15 分钟
每个 App
100 次请求/24 小时
每位用户
500 次请求/24 小时
每个 App
3 次请求/15 分钟
每位用户
3 次请求/15 分钟
每个 App
GET /2/users/me每 15 分钟 75 次请求
按用户
每 24 小时 250 次请求
按用户
每 24 小时 25 次请求
按用户
GET /2/users/search900 次请求/15 分钟
按用户
300 次请求/15 分钟
按 App
POST /2/users/:id/following50 次请求/15 分钟
按用户计
5 次请求/15 分钟
按用户计
1 次请求/15 分钟
按用户计
POST /2/users/:id/muting50 次请求/15 分钟
按用户计
5 次请求/15 分钟
按用户计
1 次请求/15 分钟
按用户计
Spaces
GET /2/spaces每 15 分钟 300 次请求
按用户
每 15 分钟 300 次请求
按 App
每 15 分钟 5 次请求
按用户
每 15 分钟 25 次请求
按 App
每 15 分钟 1 次请求
按用户
每 15 分钟 1 次请求
按 App
GET /2/spaces/:id每 15 分钟 300 次请求
每位用户
每 15 分钟 300 次请求
每个 App
每 15 分钟 5 次请求
每位用户
每 15 分钟 25 次请求
每个 App
每 15 分钟 1 次请求
每位用户
每 15 分钟 1 次请求
每个 App
GET /2/spaces/:id/buyers300 次请求/15 分钟
每个用户
300 次请求/15 分钟
每个 App
5 次请求/15 分钟
每个用户
25 次请求/15 分钟
每个 App
1 次请求/15 分钟
每个用户
1 次请求/15 分钟
每个 App
GET /2/spaces/:id/tweets每 15 分钟 300 次请求
每位用户
每 15 分钟 300 次请求
每个 App
每 15 分钟 5 次请求
每位用户
每 15 分钟 25 次请求
每个 App
每 15 分钟 1 次请求
每位用户
每 15 分钟 1 次请求
每个 App
GET /2/spaces/by/creator_ids15 分钟内最多 300 次请求
每位用户
每秒最多 1 次请求
每个 App
15 分钟内最多 5 次请求
每位用户
每秒最多 25 次请求
每个 App
每秒最多 1 次请求
每位用户
15 分钟内最多 1 次请求
每个 App
GET /2/spaces/search300 次请求 / 15 分钟
按用户
300 次请求 / 15 分钟
按 App
5 次请求 / 15 分钟
按用户
25 次请求 / 15 分钟
按 App
1 次请求 / 15 分钟
按用户
1 次请求 / 15 分钟
按 App
私信
DELETE /2/dm_events/:id1500 次请求 / 24 小时
每个用户
4000 次请求 / 24 小时
每个 App
200 次请求 / 15 分钟
每个用户
2500 次请求 / 24 小时
每个 App
GET /2/dm_conversations/:dm_conversation_id/dm_events15 次请求 / 15 分钟
按用户计
1 次请求 / 24 小时
按用户计
GET /2/dm_conversations/with/:participant_id/dm_events15 次请求 / 15 分钟
按用户计
1 次请求 / 24 小时
按用户计
GET /2/dm_events15 次请求 / 15 分钟
按用户计
1 次请求 / 24 小时
按用户计
GET /2/dm_events/:id15 次请求 / 15 分钟
按用户计
5 次请求 / 24 小时
按用户计
POST /2/dm_conversations15 次请求 / 15 分钟
每位用户
1440 次请求 / 24 小时
每个 App
1 次请求 / 24 小时
每位用户
1 次请求 / 24 小时
每个 App
POST /2/dm_conversations/:dm_conversation_id/messages15 次请求 / 15 分钟
按用户
1440 次请求 / 24 小时
按 App
1 次请求 / 24 小时
按用户
1 次请求 / 24 小时
按 App
POST /2/dm_conversations/with/:participant_id/messages1440 次请求 / 24 小时
每个用户
1440 次请求 / 24 小时
每个 App
1 次请求 / 24 小时
每个用户
1 次请求 / 24 小时
每个 App
List
DELETE /2/lists/:id15 分钟内最多 300 次请求
按用户计
15 分钟内最多 5 次请求
按用户计
15 分钟内最多 1 次请求
按用户计
DELETE /2/lists/:id/members/:user_id300 次请求/15 分钟
每位用户
5 次请求/15 分钟
每位用户
1 次请求/15 分钟
每位用户
DELETE /2/users/:id/followed_lists/:list_id50 次请求 / 15 分钟
按用户
5 次请求 / 15 分钟
按用户
1 次请求 / 15 分钟
按用户
DELETE /2/users/:id/pinned_lists/:list_id50 次请求 / 15 分钟
按用户
5 次请求 / 15 分钟
按用户
1 次请求 / 15 分钟
按用户
GET /2/lists/:id75 次请求 / 15 分钟
每位用户
75 次请求 / 15 分钟
每个 App
5 次请求 / 15 分钟
每位用户
5 次请求 / 15 分钟
每个 App
1 次请求 / 15 分钟
每位用户
1 次请求 / 15 分钟
每个 App
GET /2/lists/:id/members900 次请求 / 15 分钟
每位用户
900 次请求 / 15 分钟
每个 App
5 次请求 / 15 分钟
每位用户
25 次请求 / 15 分钟
每个 App
1 次请求 / 15 分钟
每位用户
1 次请求 / 15 分钟
每个 App
GET /2/lists/:id/tweets900 次请求 / 15 分钟
每个用户
900 次请求 / 15 分钟
每个 App
5 次请求 / 15 分钟
每个用户
25 次请求 / 15 分钟
每个 App
GET /2/users/:id/list_memberships75 次请求/15 分钟
按用户
75 次请求/15 分钟
按 App
5 次请求/15 分钟
按用户
25 次请求/15 分钟
按 App
1 次请求/15 分钟
按用户
1 次请求/15 分钟
按 App
GET /2/users/:id/owned_lists15 次请求 / 15 分钟
按用户
15 次请求 / 15 分钟
按 App
100 次请求 / 24 小时
按用户
500 次请求 / 24 小时
按 App
1 次请求 / 24 小时
按用户
1 次请求 / 24 小时
按 App
GET /2/users/:id/pinned_lists15 次请求 / 15 分钟
按用户
15 次请求 / 15 分钟
按 App
100 次请求 / 24 小时
按用户
500 次请求 / 24 小时
按 App
1 次请求 / 24 小时
按用户
1 次请求 / 24 小时
按 App
POST /2/lists300 次请求/15 分钟
每位用户
100 次请求/24 小时
每位用户
1 次请求/24 小时
每位用户
POST /2/lists/:id/members每 15 分钟 300 次请求
按用户
每 15 分钟 5 次请求
按用户
每 15 分钟 1 次请求
按用户
POST /2/users/:id/followed_lists每 15 分钟 50 次请求
每用户
每 15 分钟 5 次请求
每用户
每 15 分钟 1 次请求
每用户
POST /2/users/:id/pinned_lists50 次请求 / 15 分钟
每位用户
5 次请求 / 15 分钟
每位用户
1 次请求 / 15 分钟
每位用户
PUT /2/lists/:id每 15 分钟最多 300 次请求
每位用户
每 15 分钟最多 5 次请求
每位用户
每 15 分钟最多 1 次请求
每位用户
书签
DELETE /2/users/:id/bookmarks/:tweet_id50 次请求 / 15 分钟
按用户计
5 次请求 / 15 分钟
按用户计
1 次请求 / 15 分钟
按用户计
GET /2/users/:id/bookmarks180 次请求 / 15 分钟
按用户计
10 次请求 / 15 分钟
按用户计
1 次请求 / 15 分钟
按用户计
GET /2/users/:id/bookmarks/folders50 次请求 / 15 分钟
每位用户
50 次请求 / 15 分钟
每个 App
5 次请求 / 15 分钟
每位用户
5 次请求 / 15 分钟
每个 App
1 次请求 / 15 分钟
每位用户
1 次请求 / 15 分钟
每个 App
GET /2/users/:id/bookmarks/folders/:folder_id50 次请求 / 15 分钟
按用户
50 次请求 / 15 分钟
按 App
5 次请求 / 15 分钟
按用户
5 次请求 / 15 分钟
按 App
1 次请求 / 15 分钟
按用户
1 次请求 / 15 分钟
按 App
POST /2/users/:id/bookmarks50 次请求 / 15 分钟
每个用户
5 次请求 / 15 分钟
每个用户
1 次请求 / 15 分钟
每个用户
合规
GET /2/compliance/jobs150 次请求/15 分钟
按 App 计算
5 次请求/15 分钟
按 App 计算
1 次请求/15 分钟
按 App 计算
GET /2/compliance/jobs/:job_id150 次请求 / 15 分钟
按 App 计
5 次请求 / 15 分钟
按 App 计
1 次请求 / 15 分钟
按 App 计
POST /2/compliance/jobs150 次请求 / 15 分钟
按 App 计
15 次请求 / 15 分钟
按 App 计
1 次请求 / 15 分钟
按 App 计
使用方法
GET /2/usage/tweets每 15 分钟 50 次请求
按 App 计
每 15 分钟 50 次请求
按 App 计
每 15 分钟 1 次请求
按 App 计
趋势
GET /2/trends/by/woeid/:id75 次请求/15 分钟
每个 App
15 次请求/15 分钟
每个 App
GET /2/users/personalized_trends10 次请求/15 分钟
每个用户
200 次请求/15 分钟
每个 App
1 次请求/15 分钟
每个用户
20 次请求/15 分钟
每个 App
1 次请求/15 分钟
每个用户
1 次请求/24 小时
每个 App
社群
GET /2/communities/:id300 次请求/15 分钟
每位用户
300 次请求/15 分钟
每个 App
1 次请求/15 分钟
每位用户
25 次请求/15 分钟
每个 App
1 次请求/15 分钟
每位用户
1 次请求/15 分钟
每个 App
GET /2/communities/search300 次请求 / 15 分钟
按用户
300 次请求 / 15 分钟
按 App
1 次请求 / 15 分钟
按用户
25 次请求 / 15 分钟
按 App
1 次请求 / 15 分钟
按用户
1 次请求 / 15 分钟
按 App

请求速率限制与身份验证方法

请求速率限制同时适用于开发者 App 和用户 access token 两个层级:
  • OAuth 2.0 Bearer Token:App 级请求速率限制 此方法允许你代表开发者 App 发出一定数量的请求。使用该身份验证方式时,请求限制由使用 Bearer Token 发起的请求数量决定。
    • 例如:在“每 15 分钟 450 次请求”的限制下,你可以在该时间段内代表 App 发出最多 450 次请求。
  • OAuth 1.0a User Context:用户级请求速率限制 此方法允许你代表由用户 Access Token 标识的 X 用户发起请求。例如,如需检索 Post 的私有度量,请使用通过 三方 OAuth 授权流程 为该用户生成的用户 Access Tokens 进行身份验证。
    • 例如:在“每位用户每 15 分钟 900 次请求”的限制下,你可以在该时间窗口内对每位用户发起最多 900 次请求。

HTTP 标头与响应代码

使用 HTTP 标头,根据最近一次请求了解你的应用在给定请求速率限制中的状态。
  • x-rate-limit-limit: 该 endpoint 的请求速率限制上限
  • x-rate-limit-remaining: 15 分钟时间窗口内剩余的请求数
  • x-rate-limit-reset: 距离请求速率限制重置的剩余时间(以 UTC 纪元秒计)

错误响应

如果某个应用超出了某个 endpoint 的请求速率限制,API 将返回 HTTP 429 “Too Many Requests” 响应,并在响应正文中包含以下错误信息:
{ "errors": [ { "code": 88, "message": "已超出请求速率限制" } ] }

从请求速率限制中恢复

当超出这些请求速率限制时,endpoint 会返回 429 “Too Many Requests” 错误。如下所述,当出现请求速率限制错误时,最佳实践是检查指示限制何时重置的 HTTP 头,并在此之前暂停请求。
当发生 “Too Many Requests” 或限速错误时,需要降低发起请求的频率。当遇到请求速率限制错误时,可以检查 x-rate-limit-reset: HTTP 头以了解限速何时会重置

。另一种常见模式是指数退避(exponential backoff):请求之间的时间一开始较短(例如几秒),然后在每次重试前加倍。持续执行该策略,直到请求成功,或达到某个合理的请求间隔上限(例如几分钟)。

理想情况下,客户端应能自感知现有的请求速率限制,并在当前超限窗口到期前暂停请求。如果你超过了 15 分钟的限制,那么在重试前等待一两分钟是合理的。

请注意,除这些关于请求次数的限制外,Standard Basic 访问级别每月还可通过 recent search 和 filtered stream endpoint 提供最多 500,000 条 Post。如果你已超出每月的 Post 配额,那么让你的 App 发送通知、记录其每月的计费/结算日,并在该日前暂停请求会更合理。

避免触发请求速率限制的提示

以下提示旨在帮助你以防御性方式编写代码,降低触发请求速率限制的可能性。考虑到请求速率限制的存在,你可能希望提供的某些应用功能(尤其涉及结果新鲜度的)将难以实现。如果你的应用以实时信息为目标,请了解 filtered 和 sampled stream endpoints。

缓存

如果预期会频繁使用,请存储 API 响应。与其在每次页面加载时调用 API,不如将响应缓存在本地。

优先考虑活跃用户

如果你的站点需要跟踪大量 X 用户(例如获取他们的当前状态或 X 使用情况的统计数据),建议只为近期登录过你站点的用户请求 data。

适配搜索结果

如果你的应用监控了大量搜索词,对无结果的搜索应比有结果的搜索降低查询频率。通过使用退避机制,你可以及时跟进热门查询,同时避免在几乎不变的查询上浪费请求资源。或者,考虑使用过滤的流 endpoint,并用你的搜索 query(查询)进行过滤。

拒止名单

如果某个应用程序滥用请求速率限制,它将被拒止。被拒止的 App 无法从 X API 获得响应。如果你或你的应用程序已被拒止且认为这是错误,你可以使用我们的Platform Support forms请求协助。请包含以下信息:
  1. 说明你认为应用程序被拒止的原因。
  2. 如果你已不再受到请求速率限制,请详细描述你是如何解决该问题的。
I