X API 403 Forbidden:原因和解决办法
官方 X API 返回 403 Forbidden,说明你的密钥有效,但 X 拒绝了这次请求;响应体会写明原因,从应用没有迁到按量付费,到 2026 年 4 月 20 日起取消的点赞和关注,都有可能。
简短回答: 把完整的响应体记录下来,对照其中的文本:client-not-enrolled 意味着要把应用迁到按量付费,Read-only 应用或仅应用令牌会让发帖失败,而关注、点赞和引用帖现在需要 Enterprise 合同。要读取公开帖子和资料而不碰这些 403,用 Sorsa API:一个 API 密钥,每 1,000 条推文 $0.014 起,并有 100 次免费请求。
- 接口
POST /tweet-info-bulk- 每页条数
- 每次请求 100 条推文
- 价格
- 每 1,000 条 $0.014 起
#官方 X API 上的 403 Forbidden 是什么意思
403 是 X 在说:它知道你是谁,但仍然不会做这件事。X 的响应码参考(在新标签页打开)把它定义为认证有效,但没有该资源或操作的权限。401 则是另一种情况:凭证本身缺失或有误。
403 的每一种原因返回的状态码都一样,所以光看状态码什么也看不出来。要看响应体。X 用 Problem Details JSON 来回答,带有 title、detail 和 type,注册相关的错误还会加一个 reason。把整个响应记录下来,自己读这些字段:
有两个习惯能省下好几个小时。每次遇到 403,都记录响应体和 x-transaction-id 响应头,因为在开发者论坛上,X 的工作人员在查看一个案例前会要这两样。还有就是不要重试:403 会一直重复出现,直到应用、令牌、帖子或账号发生了变化。重试只适用于 429 和 5xx 错误,我们的 Twitter API 错误码指南逐个码讲了这些。
#按错误文本找到你的 403
把你的 403 响应体里的文本对照下表:每一行写明了原因和第一步解决办法。大多数行来自写入操作;读取失败则出在注册、权限范围、受保护账号和旧的 v1.1 调用上。
| 403 响应体里的文本 | 出现在哪里 | 原因 | 第一步解决办法 |
|---|---|---|---|
"reason": "client-not-enrolled",title 为 "Client Forbidden" | 任何 v2 调用 | 应用停留在已淘汰的 Free 套餐上,是独立应用或不在某个 Project 里 | 把应用迁到按量付费,生成新密钥 |
| "Authenticating with OAuth 2.0 Application-Only is forbidden for this endpoint" | 发帖、/2/users/me、书签、私信 | 仅应用的 Bearer 令牌 | 使用用户上下文令牌 |
只有 "detail": "Forbidden" | GET /2/users/me | 令牌缺少 tweet.read 和 users.read | 加上这两个权限范围,重新授权 |
对点赞、关注或 quote_tweet_id 的任何 403 | /2/users/{id}/likes、/following、引用帖 | 2026 年 4 月 20 日起已从自助式套餐中移除 | 只能签 Enterprise 合同 |
| "Reply to this conversation is not allowed because you have not been mentioned..." | 回复 | 自 2026 年 2 月 23 日起的被召唤回复规则 | 只在被 @ 或被引用时才回复 |
| 含两个或更多 $cashtag 的帖子返回 403 | POST /2/tweets | 自助式套餐每条帖子限 1 个 cashtag | 只保留一个 cashtag |
| "This user is not allowed to post a video longer than N minutes." | 带视频的帖子 | 发帖账号的视频时长上限 | 缩短视频 |
| "You are not permitted to perform this action." | POST /2/tweets | X 拒绝了这条帖子:违反上面的某条规则、发帖限制或垃圾信息检查 | 检查内容,放慢速度 |
| "Your account is not permitted to access this feature." | POST /2/tweets | 发帖账号被限制写入 | 停止重试,到 x.com 上检查账号 |
type 为 not-authorized-for-resource | 读取帖子或用户 | 受保护或私密的内容 | 无解:只有获批的关注者才能读取 |
dm- 开头的 type,或 "This operation is not permitted." | 私信 | 收件人的设置或安全检查 | 看 type;往往没什么可修 |
| 错误码 453,"You currently have access to a subset of X API V2 endpoints..." | v1.1 接口 | v1.1 不在你的访问范围内 | 改调用 v2 接口 |
"reason": "client-not-enrolled",title 为 "Client Forbidden"- 出现在哪里
- 任何 v2 调用
- 原因
- 应用停留在已淘汰的 Free 套餐上,是独立应用或不在某个 Project 里
- 第一步解决办法
- 把应用迁到按量付费,生成新密钥
"Authenticating with OAuth 2.0 Application-Only is forbidden for this endpoint"
- 出现在哪里
- 发帖、
/2/users/me、书签、私信 - 原因
- 仅应用的 Bearer 令牌
- 第一步解决办法
- 使用用户上下文令牌
只有
"detail": "Forbidden"- 出现在哪里
GET /2/users/me- 原因
- 令牌缺少
tweet.read和users.read - 第一步解决办法
- 加上这两个权限范围,重新授权
对点赞、关注或
quote_tweet_id的任何 403- 出现在哪里
/2/users/{id}/likes、/following、引用帖- 原因
- 2026 年 4 月 20 日起已从自助式套餐中移除
- 第一步解决办法
- 只能签 Enterprise 合同
"Reply to this conversation is not allowed because you have not been mentioned..."
- 出现在哪里
- 回复
- 原因
- 自 2026 年 2 月 23 日起的被召唤回复规则
- 第一步解决办法
- 只在被 @ 或被引用时才回复
含两个或更多 $cashtag 的帖子返回 403
- 出现在哪里
POST /2/tweets- 原因
- 自助式套餐每条帖子限 1 个 cashtag
- 第一步解决办法
- 只保留一个 cashtag
"This user is not allowed to post a video longer than N minutes."
- 出现在哪里
- 带视频的帖子
- 原因
- 发帖账号的视频时长上限
- 第一步解决办法
- 缩短视频
"You are not permitted to perform this action."
- 出现在哪里
POST /2/tweets- 原因
- X 拒绝了这条帖子:违反上面的某条规则、发帖限制或垃圾信息检查
- 第一步解决办法
- 检查内容,放慢速度
"Your account is not permitted to access this feature."
- 出现在哪里
POST /2/tweets- 原因
- 发帖账号被限制写入
- 第一步解决办法
- 停止重试,到 x.com 上检查账号
type 为
not-authorized-for-resource- 出现在哪里
- 读取帖子或用户
- 原因
- 受保护或私密的内容
- 第一步解决办法
- 无解:只有获批的关注者才能读取
dm-开头的 type,或 "This operation is not permitted."- 出现在哪里
- 私信
- 原因
- 收件人的设置或安全检查
- 第一步解决办法
- 看 type;往往没什么可修
错误码 453,"You currently have access to a subset of X API V2 endpoints..."
- 出现在哪里
- v1.1 接口
- 原因
- v1.1 不在你的访问范围内
- 第一步解决办法
- 改调用 v2 接口
#client-not-enrolled:把应用迁到按量付费
client-not-enrolled 表示你密钥背后的应用没有注册该接口所需的访问等级,所以每个 v2 调用都会失败,读和写都一样。2026 年,原因几乎总是应用被留在了旧的 Free 套餐上,表现为独立应用,或者不在任何 Project 里。
{
"detail": "When authenticating requests to the X API v2 endpoints, ...",
"reason": "client-not-enrolled",
"required_enrollment": "Appropriate Level of API Access",
"title": "Client Forbidden",
"type": "https://api.x.com/2/problems/client-forbidden"
}
detail 里讲的是 Project,但 X 的工作人员对 2026 年的原因说得很直白:Free 版已被淘汰,留在上面的应用会一直收到这个错误,直到迁到按量付费,一个关于卡住的独立应用的论坛帖子(在新标签页打开)就是例子。同一个回答还提到,登录相关的接口在按量付费下仍然免费。
如果响应体里没有 reason 字段,那么问题不在注册上。X 的工作人员明确说过,发帖时的普通 403 是另一种错误,所以迁移 Project 或重新生成密钥都没有用。
-
打开开发者控制台。 在 console.x.com 登录,找到你的代码所用密钥对应的应用。
-
检查它的套餐。 它需要按量付费和 Production 环境;独立应用,或者属于旧的 Free、Basic 或 Pro 项目下的应用,都会失败。
-
把它迁到按量付费。 添加付款方式和额度;读取按条目计费,每条帖子 $0.005,每个用户 $0.010,详见我们对 X API 价格的说明。
-
生成新的密钥和令牌。 重新生成 Bearer 令牌和访问令牌,然后部署它们:旧令牌仍保留旧的注册状态。
-
控制台迁不动,就去论坛问。 贴上数字格式的 App ID、接口和完整的响应体;X 的工作人员曾经手动迁移过卡住的应用。
#点赞、关注和引用帖:已从自助式套餐中移除
自 2026 年 4 月 20 日起,官方 X API 不再为任何自助式应用提供点赞、关注或发引用帖,所以不管应用怎么设置,这些调用都会返回 403。X 的价格更新(在新标签页打开)列出了 POST 和 DELETE /2/users/{id}/likes、POST 和 DELETE /2/users/{id}/following,以及任何带 quote_tweet_id 发出的帖子,创建帖子的参考文档(在新标签页打开)现在也写明发引用帖需要 Enterprise 套餐。
自助式包括按量付费,以及旧的 Free、Basic 和 Pro 套餐。点赞和关注早在 2025 年 8 月 22 日就已从 Free 版中移除,所以在那之前搭建的机器人,可能已经失败了一年多。
没有任何设置能让它们回来。新令牌、like.write 或 follows.write 权限范围、更多额度,都改变不了什么;只有 Enterprise 合同(每月约 $42,000 起)仍然可以写入它们。时间线显示了这些 403 各自是何时出现的:
选一下你的代码做的是什么,看看自助式访问是否仍允许它、它会返回的 403,以及解决办法:
你的代码在官方 X API 上做什么?
-
读取帖子、用户资料或搜索
按量付费下开放
- 费用
- 每条帖子 $0.005,每个用户 $0.010,每月最多读取 3M 条帖子
- 403 错误
client-not-enrolled当应用不在按量付费上时;not-authorized-for-resource出现在受保护账号上- 修复
- 在 console.x.com 把应用迁到按量付费并生成新密钥。Sorsa API 用一个 API 密钥、不需要应用,就能读取同样的公开数据。
-
读取你自己的书签、点赞或粉丝
开放,仅限用户令牌
- 费用
- 自 2026 年 4 月 20 日起,按 Owned Reads 计费,每项 $0.001
- 403 错误
- 使用仅应用级 Bearer 令牌时出现“Unsupported Authentication”
- 修复
- 用用户上下文令牌调用:OAuth 1.0a,或带 PKCE 的 OAuth 2.0。
-
发布帖子
按量付费下开放
- 费用
- 每条帖子 $0.015,带 URL 为 $0.20
- 403 错误
- “You are not permitted to perform this action.”,或应用为只读
- 修复
- 把应用设为 Read and write,重新生成访问令牌,再用用户令牌发帖。
-
回复帖子
仅限被召唤时
- 自
- 2026 年 2 月 23 日起,仅限自助版
- 403 错误
- "Reply to this conversation is not allowed because you have not been mentioned or otherwise engaged by the author"
- 修复
- 只能回复 @提及了你账号或引用了你账号帖子的帖子。
-
引用帖子
已从自助版移除
- 自
- 2026 年 4 月 20 日:
quote_tweet_id需要 Enterprise - 403 错误
- 任何带有
quote_tweet_id - 修复
- 请改为发布指向该帖子的链接,或升级为 Enterprise 合同。
-
点赞或取消点赞
已从自助版移除
- 自
- 2026 年 4 月 20 日;自 2025 年 8 月 22 日起不在免费版中
- 403 错误
POST和DELETE /2/users/{id}/likes- 修复
- 自助版没有。只有 Enterprise 合同仍能通过 API 点赞。
-
关注或取消关注
已从自助版移除
- 自
- 2026 年 4 月 20 日;自 2025 年 8 月 22 日起不在免费版中
- 403 错误
POST和DELETE /2/users/{id}/following- 修复
- 自助版没有。只有 Enterprise 合同仍能通过 API 关注。
-
带 $cashtag 发帖
每条帖子一个
- 规则
- 自助版的帖子最多带 1 个 cashtag
- 403 错误
- 带有第二个
$TICKER - 修复
- 保留一个 cashtag,其余股票代码不要写 $ 符号。
-
发布长视频
受账号限制
- 规则
- 默认 20 分钟,X Premium 为 125 分钟,文档日期 2026 年 9 月 1 日
- 403 错误
- "This user is not allowed to post a video longer than N minutes."
- 修复
- 请裁剪视频。更大的 API 预算不会提高上限。
-
发送私信
按收件人逐个拒绝
- 自
- 2026 年 10 月 26 日:每种拒绝都有各自的类型
- 403 错误
dm-recipient-not-accepting,dm-sender-not-verified以及其他dm-类型,或“This operation is not permitted.”- 修复
- 请看具体类型。大多数拒绝来自收件人的设置,无法在代码里修复。
-
调用 v1.1 接口
基本已关闭
- 规则
- 自助版可访问 v2 和少数 v1.1 接口,例如媒体上传
- 403 错误
- 错误码 453:“You currently have access to a subset of X API V2 endpoints and limited v1.1 endpoints only”
- 修复
- 请调用 v2 接口:在 tweepy 中,
tweepy.Client而不是tweepy.API.
自助版指按量付费以及旧的 Free、Basic 和 Pro 套餐。来自 X 的更新日志和文档,核查于 2026 年 11 月 2 日。
2026 年 11 月官方 X API 自助版允许的操作,逐项列出。
引用帖有一个简单的替代办法:发出帖子的链接,而不是用 quote_tweet_id。X 对带 URL 的帖子收 $0.20,而普通帖子是 $0.015。
#POST /2/tweets 的 403:令牌、回复、账号
按量付费下发帖是开放的,每条帖子 $0.015,所以 POST /2/tweets 的 403 来自令牌、帖子内容,或其背后的账号。按这个顺序检查。
Read-only 应用或仅应用令牌
发帖需要用户上下文令牌:用应用的 consumer 密钥加账号的访问令牌和密文的 OAuth 1.0a,或者通过 PKCE 流程获得、带 tweet.write 权限范围的 OAuth 2.0 令牌。仅应用的 Bearer 令牌会得到这样的回答:
{
"title": "Unsupported Authentication",
"detail": "Authenticating with OAuth 2.0 Application-Only is forbidden ...",
"status": 403
}
新应用一开始只有 Read 权限。把应用的用户认证设置改成 Read and write,然后生成新的访问令牌和密文:改动之前签发的令牌仍然只有 Read。
"Reply to this conversation is not allowed"
据 X 的更新日志(在新标签页打开),自 2026 年 2 月 23 日起,自助式应用只有在原帖作者召唤了回复账号时才可以回复,也就是 @ 了它,或引用了它的某条帖子。其他任何回复都会返回 403,文本为 "Reply to this conversation is not allowed because you have not been mentioned or otherwise engaged by the author"(不允许回复这个会话,因为作者没有提及你,也没有以其他方式与你互动),尽管同样的回复在 x.com 上可以发出。回复型机器人要基于提及来做:读取提到你账号的帖子,回复这些。被召唤的回复在 X 上也更便宜,$0.010,而普通的是 $0.015。
每条帖子一个 cashtag,以及视频时长
自助式帖子最多带一个 $cashtag,第二个就会让 X 拒绝这条帖子;在论坛的一个案例里,去掉多余的 cashtag 就是全部解决办法。视频上限取决于发帖账号,而不是你的 API 花费:默认 20 分钟,X Premium 为 125 分钟。更长的视频会返回 "This user is not allowed to post a video longer than 20 minutes."
"You are not permitted to perform this action"
这个 about:blank 的 403 是 X 对单条帖子的兜底拒绝。先检查上面的规则:没人召唤的回复、第二个 cashtag、引用。如果都不适用,那就是账号遇到了发帖限制或垃圾信息检查:放慢速度,不要发重复的文本,并到 x.com 上手动发一条试试。
"Your account is not permitted to access this feature"
这段文字指向的是发帖账号,而不是你的应用。在 2026 年 9 月的一个论坛案例里,它出现在一批自动发帖之后,读取一直正常,X 的工作人员称这是账号层面的写入限制,而不是缺少权限或额度。停掉自动化,检查账号能否在 x.com 上发帖,如果只有 API 失败,就把 x-transaction-id 贴到开发者论坛。
#读取时的 403:权限范围、受保护账号、v1.1
当应用、令牌或目标账号有问题时,读取会返回 403,而真正无法读取的只有受保护账号。client-not-enrolled 同样会阻止读取;其他读取方面的原因如下:
GET /2/users/me只返回一个 "Forbidden"。 用户令牌缺少tweet.read和users.read。把两者都加进授权 URL,让用户重新走一遍授权:已有令牌保留它们原来的权限范围。- 你自己的书签、点赞和粉丝。 这些 Owned Reads 每项 $0.001,需要用户上下文令牌;仅应用令牌会得到 "Unsupported Authentication"。
- 受保护的帖子和账号。 它们返回的 type 是
not-authorized-for-resource,X 的参考文档将其描述为无权访问私密或受保护的内容。在批量查询里,同样的 type 会出现在 200 响应的errors中,和你能读取的帖子放在一起。 - v1.1 接口。 自助式访问涵盖 v2 和少数 v1.1 接口(如媒体上传),其余的返回错误码 453。在 tweepy 里,
tweepy.API的调用(如update_status)走的是 v1.1;tweepy.Client调用的是 v2。
除了受保护账号,这些原因没有一个取决于数据本身:它们来自应用、套餐和令牌,这就是为什么换一条途径读取公开数据就能避开它们。
#在 tweepy 和 Node.js 里打印完整的 403 响应体
库默认会隐藏响应体:tweepy 抛出 tweepy.errors.Forbidden: 403 Forbidden,twitter-api-v2 抛出 "Request failed with code 403"。两者都保留了响应,所以在猜测之前先打印出来:
import tweepy
client = tweepy.Client(
consumer_key="API_KEY", consumer_secret="API_SECRET",
access_token="ACCESS_TOKEN", access_token_secret="ACCESS_SECRET",
)
try:
client.create_tweet(text="Testing the posting path")
except tweepy.errors.Forbidden as e:
print(e.api_messages) # X's detail text
print(e.response.headers.get("x-transaction-id"))
print(e.response.text) # the whole body: reason, type, title
然后把文本对照上面的表。重试 403 的循环只会白白浪费时间:对 429 和 5xx 响应用退避重试,对 403 则先修好原因再重新发请求。
须知
X 的
detail可能误导人。即使应用已经在某个 Project 里、真正的解决办法是迁到按量付费,client-not-enrolled的文本还是会要求一个 Project;而 "You are not permitted to perform this action" 涵盖了好几种不同的拒绝。先相信reason和type,其次才是你发出的请求。
#读取 X 公开数据而不遇到 403:用 Sorsa API
大多数读取方面的 403 都来自官方 X API 的配置:应用、它的套餐、它的令牌及其权限范围。要不做这套配置就读取公开帖子、资料、粉丝和搜索结果,用 Sorsa API,一款 Twitter(X)API 与爬虫:请求头 ApiKey 里放一个 API 密钥,没有开发者应用、注册或 OAuth,所以上面任何一种读取方面的原因都不会发生。
读取公开数据的人在两边分别得到什么:
| 读取最看重的方面 | Sorsa API | 官方 X API |
|---|---|---|
| 接入 | 一个 API 密钥 | 开发者应用、按量付费套餐、OAuth 令牌 |
| 每 1,000 条帖子的价格 | $0.014 起 | $5.00 |
| 速度 | 所有套餐统一每秒 20 次请求 | 每个接口有 15 分钟窗口 |
| 每月上限 | 你的套餐,最多 1000 万次请求,另可购买额外请求 | 300 万次帖子读取,之后是 Enterprise |
| 你的 X 账号 | 从不涉及 | 令牌绑定在某个账号上 |
接入
- Sorsa API
- 一个 API 密钥
- 官方 X API
- 开发者应用、按量付费套餐、OAuth 令牌
每 1,000 条帖子的价格
- Sorsa API
- $0.014 起
- 官方 X API
- $5.00
速度
- Sorsa API
- 所有套餐统一每秒 20 次请求
- 官方 X API
- 每个接口有 15 分钟窗口
每月上限
- Sorsa API
- 你的套餐,最多 1000 万次请求,另可购买额外请求
- 官方 X API
- 300 万次帖子读取,之后是 Enterprise
你的 X 账号
- Sorsa API
- 从不涉及
- 官方 X API
- 令牌绑定在某个账号上
-
获取密钥。 注册并从控制台复制密钥;随附 100 次免费请求,无需绑卡。
-
按 ID 读取帖子。
POST /tweet-info-bulk(在新标签页打开) 每次请求接收最多 100 个帖子 ID 或链接,并返回每条帖子及作者的完整资料:Terminal curl -X POST "https://api.sorsa.io/v3/tweet-info-bulk" \ -H "ApiKey: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"tweet_links": ["1853412966240727289", "1853398071322091822"]}'Response200 OK { "tweets": [ { "id": "1853412966240727289", "full_text": "Shipped the new export page today.", "created_at": "2026-10-30T14:02:11Z", "lang": "en", "likes_count": 184, "retweet_count": 22, "reply_count": 17, "quote_count": 3, "view_count": 9120, "is_reply": false, "user": { "id": "1592041833471827968", "username": "lena_ships_daily", "display_name": "Lena Ships", "followers_count": 4210, "verified": false, "protected": false } } ] } -
用搜索代替读取时间线。
POST /search-tweets(在新标签页打开) 接受 X 的搜索运算符,每页返回约 20 条帖子,通过next_cursor翻页,直到返回为空:Python import requests URL = "https://api.sorsa.io/v3/search-tweets" HEADERS = {"ApiKey": "YOUR_API_KEY"} body = {"query": "from:lena_ships_daily", "order": "latest"} posts = [] while True: r = requests.post(URL, headers=HEADERS, json=body, timeout=30) r.raise_for_status() # 403: missing key or no requests left data = r.json() posts += data.get("tweets", []) if not data.get("next_cursor"): break body["next_cursor"] = data["next_cursor"] print(len(posts), "posts") -
盯住自己的余额。
GET /key-usage-info(在新标签页打开) 会显示密钥剩余的请求次数,而且本身不占用请求次数。
Sorsa API 自己也有一份简短的错误列表。缺少 ApiKey 请求头时它返回 403("missing key in request header",即请求头里缺少密钥),密钥的请求次数用完时也返回 403,密钥错误则返回 401。失败的请求从不收费。
403 消失之后,剩下的就由价格决定:
官方 X API
$5,000
读取 1M 条帖子
每条帖子 $0.005
Sorsa API
$14 起
读取 1M 条帖子
每 1,000 条 $0.014 起
Sorsa API 只读取公开数据,从不发帖、点赞或关注,所以你的 X 账号永远不会有风险。要发布内容,就在官方 X API 上保留一个用户上下文令牌来做写入,而所有读取都通过 Sorsa API;我们的不用开发者账号使用 Twitter API指南介绍了这种配置。
#修好写入,迁走读取
官方 X API 的 403 会在响应体里写明原因。在 X 仍然出售这些操作的地方,修好注册、令牌或帖子内容;对于 2026 年 4 月 20 日已退出自助式套餐的点赞、关注和引用帖,则不要再重试。要读取公开帖子和资料,Sorsa API 只需要一个 API 密钥,不用配置应用,每 1,000 条推文 $0.014 起,而每个账号送的 100 次免费请求就够读取前 1 万条推文。
#常见问题
官方 X API 上的 401 和 403 有什么区别?
401 表示 X 没有接受你的凭证:密钥缺失、拼写错误、已被撤销或签名有误。403 表示 X 接受了它们,但仍然拒绝这次请求,原因可能是应用的注册状态、令牌的权限、帖子内容或账号。重新生成密钥能解决很多 401 错误,但几乎解决不了任何 403。
官方 X API 的 403 应该重试吗?
不应该。403 会一直重复,直到有东西改变:应用的套餐、令牌、帖子或账号的状态。只对 429 和 5xx 响应用退避重试。遇到 403,记录响应体和 x-transaction-id 响应头,对照文本,修好原因,再发一次请求。
2026 年的官方 X API 免费吗?
不免费。Free 版在 2026 年 2 月 6 日对新应用关闭,X 的工作人员现在称它已被淘汰,按量付费对每次读取都计费:每条帖子 $0.005,每个用户 $0.010。只有登录相关的接口仍然免费。我们对 Twitter API 免费吗的回答讲了还剩下什么。
想读取 X 数据又不遇到 403,该用哪个 API?
读取 X 公开数据又不遇到 403,用 Sorsa API:它只需要一个 API 密钥,不需要开发者应用、注册或 OAuth,所以大多数读取 403 背后的那套配置根本不存在。批量请求每次返回 100 条帖子,每 1,000 条 $0.014 起,所有套餐统一每秒 20 次请求,并有 100 次免费请求可以起步。
Sorsa API 会返回 403 错误吗?
会,有两种情况。缺少 ApiKey 请求头时,Sorsa API 返回 403,消息为 "missing key in request header";密钥的请求次数用完时也返回 403;密钥错误则返回 401。升级套餐或购买额外请求后会立即恢复访问,失败的请求从不收费。
#我们如何核实
2026 年 11 月 2 日,我们阅读了 docs.x.com 上 X 的响应码参考、价格页面、创建帖子的参考文档和更新日志,以及上面链接的开发者论坛帖子里 X 工作人员的回复,涵盖这里引用的每一条错误文本。Sorsa API 的请求以在线 API 参考文档为准;所示的响应是用虚构数据按其格式写出的示例。
Sources
- X API: Response codes and errors(在新标签页打开)
- X API: Pay-per-usage pricing(在新标签页打开)
- X API: Changelog(在新标签页打开)
- X API: Create post reference(在新标签页打开)
- X API: Manage posts(在新标签页打开)
- X Developer Community: pricing update effective April 20, 2026(在新标签页打开)
- X Developer Community: Free tier stuck as a standalone app(在新标签页打开)
- X Developer Community: POST /2/tweets 403 on pay-per-use(在新标签页打开)
- X Developer Community: "Your account is not permitted to access this feature"(在新标签页打开)
- X Developer Community: 403 when replying via the API(在新标签页打开)
- Sorsa API reference