跳到正文

X API 403 Forbidden:原因和解决办法

官方 X API 返回 403 Forbidden,说明你的密钥有效,但 X 拒绝了这次请求;响应体会写明原因,从应用没有迁到按量付费,到 2026 年 4 月 20 日起取消的点赞和关注,都有可能。

  • 更新于
  • 发布于
  • 阅读约 10 分钟

简短回答: 把完整的响应体记录下来,对照其中的文本: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。把整个响应记录下来,自己读这些字段:

Anatomy of an official X API 403 response: status line, x-transaction-id header, detail, reason and type HTTP/1.1 403 Forbidden x-transaction-id: 7f3a91c2e05b44d1 { "title": "Client Forbidden", "detail": "When authenticating requests to the X API v2 endpoints, you must use keys and tokens from a developer App that is attached to a Project. You can create a ..." "reason": "client-not-enrolled", "required_enrollment": "...", "type": ".../problems/client-forbidden" } 1 状态 403 已理解,但被拒绝。 2 x-transaction-id 报告 403 时 X 工作人员 会问你要的 ID。 3 detail X 的原话。当真正的解决办法是 把应用迁到按量付费时, 它可能仍写 Project。 4 reason and type 这是以你的代码能匹配的形式 给出的原因。请记录下来。
状态码只说“被拒绝”;reason、type 和 detail 才说明原因。把它们都记录下来,再加上 x-transaction-id。

有两个习惯能省下好几个小时。每次遇到 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 的帖子返回 403POST /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/tweetsX 拒绝了这条帖子:违反上面的某条规则、发帖限制或垃圾信息检查检查内容,放慢速度
"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 里。

403 body
{
  "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 或重新生成密钥都没有用。

  1. 打开开发者控制台。 在 console.x.com 登录,找到你的代码所用密钥对应的应用。

  2. 检查它的套餐。 它需要按量付费和 Production 环境;独立应用,或者属于旧的 Free、Basic 或 Pro 项目下的应用,都会失败。

  3. 把它迁到按量付费。 添加付款方式和额度;读取按条目计费,每条帖子 $0.005,每个用户 $0.010,详见我们对 X API 价格的说明。

  4. 生成新的密钥和令牌。 重新生成 Bearer 令牌和访问令牌,然后部署它们:旧令牌仍保留旧的注册状态。

  5. 控制台迁不动,就去论坛问。 贴上数字格式的 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 各自是何时出现的:

Six official X API changes from August 2025 to October 2026 that created new 403 errors 2025 年 8 月 22 日 点赞和关注退出 免费版 2026 年 2 月 23 日 只有被作者召唤时 才能回复 2026 年 9 月 1 日 视频时长受 发帖账号限制 2026 年 2 月 6 日 按量付费开放;免费版 对新应用关闭 2026 年 4 月 20 日 关注、点赞和引用推文 退出所有自助档位 2026 年 10 月 26 日 私信拒绝有了 各自的类型
14 个月里的六项变化,造成了如今开发者遇到的大多数 403。2026 年 4 月 20 日直接取消了三种操作。

选一下你的代码做的是什么,看看自助式访问是否仍允许它、它会返回的 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 令牌会得到这样的回答:

403 body
{
  "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 抛出 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
    令牌绑定在某个账号上
  1. 获取密钥。 注册并从控制台复制密钥;随附 100 次免费请求,无需绑卡。

  2. 按 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
          }
        }
      ]
    }
    
  3. 用搜索代替读取时间线。 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")
    
  4. 盯住自己的余额。 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。升级套餐或购买额外请求后会立即恢复访问,失败的请求从不收费。

Sorsa API 团队撰写。 我们开发和运营 Sorsa API,这是只读的 Twitter/X API 与爬虫,2022 年起运行于生产环境(前身为 TweetScout API),累计处理请求超 60 亿次。 关于 Sorsa API

更新内容
  • 首次发布。