跳转到主要内容
每天都有成千上万的开发者向 X API 发出请求。为管理海量请求,我们对可发起的请求数量设置了限制。这些限制有助于为我们的开发者社区提供可靠、可扩展的 API。 允许的最大请求数基于时间间隔,通常是在指定的时段或时间窗口内。最常见的间隔是 15 分钟。例如,某个端点若设为每 15 分钟 900 次请求,则在任意 15 分钟窗口内最多允许 900 次请求。 速率限制取决于认证方式。例如,如果使用 OAuth 1.0a 用户上下文,每组用户的访问令牌在每个周期内都有各自的速率限制。或者,如果使用 OAuth 2.0 Bearer Token,你的应用在每个时间周期内会有单独的限制。超出这些限制时,将返回错误。

目录

X API v2 速率限制

下表列出了每种 X API 付费计划的速率限制。你也可以在开发者门户的“产品”部分查看这些限制。
EndpointPro 限额 基础 限额 免费 限额
Tweets
DELETE /2/tweets/:id50 次请求 / 15 分钟
每个用户
5 次请求 / 15 分钟
每个用户
17 次请求 / 24 小时
每个用户
17 次请求 / 24 小时
每个应用
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 分钟
按应用
15 次请求/15 分钟
按用户
15 次请求/15 分钟
按应用
1 次请求/15 分钟
按用户
1 次请求/15 分钟
按应用
GET /2/tweets/:id900 次请求 / 15 分钟
每用户
450 次请求 / 15 分钟
每应用
15 次请求 / 15 分钟
每用户
15 次请求 / 15 分钟
每应用
1 次请求 / 15 分钟
每用户
1 次请求 / 15 分钟
每应用
GET /2/tweets/:id/liking_users每 15 分钟 75 次请求
每用户
每 15 分钟 75 次请求
每应用
每 15 分钟 5 次请求
每用户
每 15 分钟 25 次请求
每应用
每 15 分钟 1 次请求
每用户
每 15 分钟 1 次请求
每应用
GET /2/tweets/:id/quote_tweets75 次请求/15 分钟
按用户
75 次请求/15 分钟
按应用
5 次请求/15 分钟
按用户
5 次请求/15 分钟
按应用
1 次请求/15 分钟
按用户
1 次请求/15 分钟
按应用
GET /2/tweets/:id/retweeted_by75 次请求 / 15 分钟
按用户
75 次请求 / 15 分钟
按应用
5 次请求 / 15 分钟
按用户
5 次请求 / 15 分钟
按应用
1 次请求 / 15 分钟
按用户
1 次请求 / 15 分钟
按应用
GET /2/tweets/counts/all每 15 分钟 300 次请求
按应用计算
GET /2/tweets/counts/recent300 次请求 / 15 分钟
每个应用
5 次请求 / 15 分钟
每个应用
1 次请求 / 15 分钟
每个应用
GET /2/tweets/search/all每秒 1 次请求
每位用户
每秒 1 次请求
每个应用
GET /2/tweets/search/recent每 15 分钟 300 次请求
每位用户
每 15 分钟 450 次请求
每个应用
每 15 分钟 60 次请求
每位用户
每 15 分钟 60 次请求
每个应用
每 15 分钟 1 次请求
每位用户
每 15 分钟 1 次请求
每个应用
GET /2/tweets/search/stream50 次请求 / 15 分钟
按应用计
GET /2/tweets/search/stream/rules450 次请求 / 15 分钟
按应用
GET /2/users/:id/liked_tweets75 次请求 / 15 分钟
按用户
75 次请求 / 15 分钟
按应用
5 次请求 / 15 分钟
按用户
5 次请求 / 15 分钟
按应用
1 次请求 / 15 分钟
按用户
1 次请求 / 15 分钟
按应用
GET /2/users/:id/mentions300 次请求 / 15 分钟
每位用户
450 次请求 / 15 分钟
每个应用
10 次请求 / 15 分钟
每位用户
15 次请求 / 15 分钟
每个应用
1 次请求 / 15 分钟
每位用户
1 次请求 / 15 分钟
每个应用
GET /2/users/:id/timelines/reverse_chronological180 次请求 / 15 分钟
每位用户
5 次请求 / 15 分钟
每位用户
1 次请求 / 15 分钟
每位用户
GET /2/users/:id/tweets900 次请求/15 分钟
每位用户
1500 次请求/15 分钟
每个应用
5 次请求/15 分钟
每位用户
10 次请求/15 分钟
每个应用
1 次请求/15 分钟
每位用户
1 次请求/15 分钟
每个应用
GET /2/users/reposts_of_me75 次请求 / 15 分钟
按用户
75 次请求 / 15 分钟
按用户
1 次请求 / 15 分钟
按用户
POST /2/tweets100 次请求 / 15 分钟
每位用户
10,000 次请求 / 24 小时
每个应用
100 次请求 / 24 小时
每位用户
1,667 次请求 / 24 小时
每个应用
17 次请求 / 24 小时
每位用户
17 次请求 / 24 小时
每个应用
POST /2/tweets/search/stream/rules100 次请求/15 分钟
每个应用
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 分钟
按应用
100 次请求/24 小时
按用户
500 次请求/24 小时
按应用
1 次请求/24 小时
按用户
1 次请求/24 小时
按应用
GET /2/users/:id900 次请求 / 15 分钟
每位用户
300 次请求 / 15 分钟
每个应用
100 次请求 / 24 小时
每位用户
500 次请求 / 24 小时
每个应用
1 次请求 / 24 小时
每位用户
1 次请求 / 24 小时
每个应用
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 分钟
按应用
100 次请求/24 小时
按用户
500 次请求/24 小时
按应用
1 次请求/24 小时
按用户
1 次请求/24 小时
按应用
GET /2/users/by/username/:username900 次请求/15 分钟
按用户
300 次请求/15 分钟
按应用
100 次请求/24 小时
按用户
500 次请求/24 小时
按应用
3 次请求/15 分钟
按用户
3 次请求/15 分钟
按应用
GET /2/users/me75 次请求/15 分钟
每位用户
250 次请求/24 小时
每位用户
25 次请求/24 小时
每位用户
GET /2/users/search900 次请求/15 分钟
按用户
300 次请求/15 分钟
按应用
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 次请求
按应用
每 15 分钟 5 次请求
按用户
每 15 分钟 25 次请求
按应用
每 15 分钟 1 次请求
按用户
每 15 分钟 1 次请求
按应用
GET /2/spaces/:id300 次请求 / 15 分钟
按用户
300 次请求 / 15 分钟
按应用
5 次请求 / 15 分钟
按用户
25 次请求 / 15 分钟
按应用
1 次请求 / 15 分钟
按用户
1 次请求 / 15 分钟
按应用
GET /2/spaces/:id/buyers每 15 分钟 300 次请求
每个用户
每 15 分钟 300 次请求
每个应用
每 15 分钟 5 次请求
每个用户
每 15 分钟 25 次请求
每个应用
每 15 分钟 1 次请求
每个用户
每 15 分钟 1 次请求
每个应用
GET /2/spaces/:id/tweets每 15 分钟 300 次请求
按用户
每 15 分钟 300 次请求
按应用
每 15 分钟 5 次请求
按用户
每 15 分钟 25 次请求
按应用
每 15 分钟 1 次请求
按用户
每 15 分钟 1 次请求
按应用
GET /2/spaces/by/creator_ids300 次请求/15 分钟
每位用户
1 次请求/秒
每个应用
5 次请求/15 分钟
每位用户
25 次请求/秒
每个应用
1 次请求/秒
每位用户
1 次请求/15 分钟
每个应用
GET /2/spaces/search300 次请求 / 15 分钟
每位用户
300 次请求 / 15 分钟
每个应用
5 次请求 / 15 分钟
每位用户
25 次请求 / 15 分钟
每个应用
1 次请求 / 15 分钟
每位用户
1 次请求 / 15 分钟
每个应用
私信
DELETE /2/dm_events/:id每位用户:1500 次请求 / 24 小时
PER USER
每个应用:4000 次请求 / 24 小时
PER APP
每位用户:200 次请求 / 15 分钟
PER USER
每个应用:2500 次请求 / 24 小时
PER 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 小时
按应用
1 次请求 / 24 小时
按用户
1 次请求 / 24 小时
按应用
POST /2/dm_conversations/:dm_conversation_id/messages15 次请求 / 15 分钟
按用户
1440 次请求 / 24 小时
按应用
1 次请求 / 24 小时
按用户
1 次请求 / 24 小时
按应用
POST /2/dm_conversations/with/:participant_id/messages1440 次请求 / 24 小时
按用户
1440 次请求 / 24 小时
按应用
1 次请求 / 24 小时
按用户
1 次请求 / 24 小时
按应用
列表
DELETE /2/lists/:id每 15 分钟 300 次请求
每位用户
每 15 分钟 5 次请求
每位用户
每 15 分钟 1 次请求
每位用户
DELETE /2/lists/:id/members/:user_id每 15 分钟 300 次请求
按用户
每 15 分钟 5 次请求
按用户
每 15 分钟 1 次请求
按用户
DELETE /2/users/:id/followed_lists/:list_id50 次请求 / 15 分钟
按用户计
5 次请求 / 15 分钟
按用户计
1 次请求 / 15 分钟
按用户计
DELETE /2/users/:id/pinned_lists/:list_id每 15 分钟 50 次请求
按用户
每 15 分钟 5 次请求
按用户
每 15 分钟 1 次请求
按用户
GET /2/lists/:id每 15 分钟 75 次请求
每位用户
每 15 分钟 75 次请求
每个应用
每 15 分钟 5 次请求
每位用户
每 15 分钟 5 次请求
每个应用
每 15 分钟 1 次请求
每位用户
每 15 分钟 1 次请求
每个应用
GET /2/lists/:id/members15 分钟内 900 次请求
每个用户
15 分钟内 900 次请求
每个应用
15 分钟内 5 次请求
每个用户
15 分钟内 25 次请求
每个应用
15 分钟内 1 次请求
每个用户
15 分钟内 1 次请求
每个应用
GET /2/lists/:id/tweets900 次请求/15 分钟
按用户
900 次请求/15 分钟
按应用
5 次请求/15 分钟
按用户
25 次请求/15 分钟
按应用
GET /2/users/:id/list_memberships75 次请求 / 15 分钟
每个用户
75 次请求 / 15 分钟
每个应用
5 次请求 / 15 分钟
每个用户
25 次请求 / 15 分钟
每个应用
1 次请求 / 15 分钟
每个用户
1 次请求 / 15 分钟
每个应用
GET /2/users/:id/owned_lists15 次请求 / 15 分钟
按用户
15 次请求 / 15 分钟
按应用
100 次请求 / 24 小时
按用户
500 次请求 / 24 小时
按应用
1 次请求 / 24 小时
按用户
1 次请求 / 24 小时
按应用
GET /2/users/:id/pinned_lists15 次请求 / 15 分钟
按用户
15 次请求 / 15 分钟
按应用
100 次请求 / 24 小时
按用户
500 次请求 / 24 小时
按应用
1 次请求 / 24 小时
按用户
1 次请求 / 24 小时
按应用
POST /2/lists300 次请求 / 15 分钟
按用户
100 次请求 / 24 小时
按用户
1 次请求 / 24 小时
按用户
POST /2/lists/:id/members每 15 分钟 300 次请求
每位用户
每 15 分钟 5 次请求
每位用户
每 15 分钟 1 次请求
每位用户
POST /2/users/:id/followed_lists15 分钟内最多 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/bookmarks每位用户每 15 分钟 180 次请求
每位用户
每位用户每 15 分钟 10 次请求
每位用户
每位用户每 15 分钟 1 次请求
每位用户
GET /2/users/:id/bookmarks/folders50 次请求/15 分钟
每位用户
50 次请求/15 分钟
每个应用
5 次请求/15 分钟
每位用户
5 次请求/15 分钟
每个应用
1 次请求/15 分钟
每位用户
1 次请求/15 分钟
每个应用
GET /2/users/:id/bookmarks/folders/:folder_id50 次请求 / 15 分钟
按用户
50 次请求 / 15 分钟
按应用
5 次请求 / 15 分钟
按用户
5 次请求 / 15 分钟
按应用
1 次请求 / 15 分钟
按用户
1 次请求 / 15 分钟
按应用
POST /2/users/:id/bookmarks每 15 分钟 50 次请求
每位用户
每 15 分钟 5 次请求
每位用户
每 15 分钟 1 次请求
每位用户
合规性
GET /2/compliance/jobs150 次请求 / 15 分钟
按应用计
5 次请求 / 15 分钟
按应用计
1 次请求 / 15 分钟
按应用计
GET /2/compliance/jobs/:job_id150 次请求 / 15 分钟
按应用
5 次请求 / 15 分钟
按应用
1 次请求 / 15 分钟
按应用
POST /2/compliance/jobs150 次请求 / 15 分钟
每个应用
15 次请求 / 15 分钟
每个应用
1 次请求 / 15 分钟
每个应用
用法
GET /2/usage/tweets50 次请求 / 15 分钟
按应用计算
50 次请求 / 15 分钟
按应用计算
1 次请求 / 15 分钟
按应用计算
趋势
GET /2/trends/by/woeid/:id75 次请求 / 15 分钟
按应用计
15 次请求 / 15 分钟
按应用计
GET /2/users/personalized_trends每 15 分钟 10 次请求
按用户
每 15 分钟 200 次请求
按应用
每 15 分钟 1 次请求
按用户
每 15 分钟 20 次请求
按应用
每 15 分钟 1 次请求
按用户
每 24 小时 1 次请求
按应用
社区
GET /2/communities/:id每 15 分钟 300 次请求
每位用户
每 15 分钟 300 次请求
每个应用
每 15 分钟 1 次请求
每位用户
每 15 分钟 25 次请求
每个应用
每 15 分钟 1 次请求
每位用户
每 15 分钟 1 次请求
每个应用
GET /2/communities/search300 次请求 / 15 分钟
按用户
300 次请求 / 15 分钟
按应用
1 次请求 / 15 分钟
按用户
25 次请求 / 15 分钟
按应用
1 次请求 / 15 分钟
按用户
1 次请求 / 15 分钟
按应用

速率限制与认证方式

速率限制同时适用于开发者应用与用户访问令牌两个层级:
  • OAuth 2.0 Bearer Token:应用级速率限制 此方式允许你代表你的开发者应用发出一定数量的请求。使用此认证方式时,限制由使用 Bearer Token 发起的请求数决定。
    • 示例:若限制为每 15 分钟 450 次请求,你可在该时间段内代表你的应用发出 450 次请求。
  • OAuth 1.0a 用户上下文:用户级速率限制 此方式允许你代表由用户访问令牌标识的 X 用户发出请求。例如,若要从 Post 检索私有指标,请为该用户使用用户访问令牌进行认证,该令牌通过三方(3-legged)OAuth 流程生成。
    • 示例:若限制为每位用户每 15 分钟 900 次请求,你在该时间段内对每位用户最多可发出 900 次请求。

HTTP 标头与响应代码

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

错误响应

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

从速率限制中恢复

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

另一种常见做法是采用指数退避:请求之间的间隔先从较小开始(例如几秒钟),然后在每次重试前将间隔加倍。持续进行,直到请求成功,或达到合理的最大请求间隔(例如几分钟)。

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

请注意,除了这些请求次数限制之外,基础访问等级(Basic)在 Standard 计划下为“最近搜索”和“过滤流”端点提供每月最多 500,000 条 Post 的配额。如果你已超出每月的 Post 数量限制,那么让你的应用发出通知、记录其每月的计费/入 enrollment 日期,并在该日前暂停请求会更合适。

避免触发速率限制的提示

以下建议旨在帮助你进行防御性编码,降低遭遇速率限制的可能性。受速率限制影响,你可能想提供的某些应用功能在结果新鲜度方面尤其难以实现。如果你的应用以实时信息为目标,请查看 filtered 和 sampled stream 端点。

缓存

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

优先关注活跃用户

如果你的网站需要跟踪大量 X 用户(例如获取他们的当前状态或 X 使用统计),请考虑仅为最近登录你网站的用户请求 data。

适应搜索结果

如果你的应用监控了大量搜索词,对无结果的搜索应比有结果的搜索降低查询频率。通过采用退避策略,你可以及时追踪热门查询的最新变化,同时避免在极少变化的查询上浪费资源。或者,考虑使用 filtered stream 端点,并用你的搜索查询进行过滤。

拒名单

如果某个应用滥用速率限制,将会被加入拒名单。被拒的应用无法从 X API 获得响应。如果你或你的应用被拒且认为是误判,你可以通过我们的平台支持表单请求协助。请提供以下信息:
  1. 说明你认为你的应用被拒的原因。
  2. 如果你已不再触发速率限制,请详细说明你如何解决该问题。