如何获取 Twitter(X)API 密钥
要获取 Twitter(X)API 密钥,用你的 X 账号登录 console.x.com,接受开发者协议,创建应用并保存它的密钥和 Bearer 令牌,然后购买额度:读取每条帖子 $0.005。
简短回答: 创建应用时,控制台会签发 API 密钥、密钥的 secret、Bearer 令牌和 OAuth 凭据,并且每一项只显示一次。在购买额度之前,每个请求都会返回 HTTP 402 CreditsDepleted。想用一个密钥读取 X 公开数据,用 Sorsa API:推文每 1,000 条 $0.014 起,100 次免费请求无需绑卡。
ApiKey: YOUR_API_KEY- 一个密钥,无需 OAuth
- 价格
- 每 1,000 条推文 $0.014 起
#如何一步步获取官方 X API 密钥
官方 X API 密钥来自 console.x.com 上的 X 开发者控制台,X 的所有 API 凭据都在这个网站上签发,整个过程分六步。X 的获取访问权限指南(在新标签页打开)列出了前四步。第 5 步的额度写在它的价格页面上,没有额度,第 6 步的请求就会失败。
开通开发者账号和创建应用不花钱。读取要花钱:X 对响应返回的每条帖子收费 $0.005,对每份用户资料或每个粉丝收费 $0.010,从你预先充值的余额里扣。我们的 X API 价格详解列出了每一项费率。
-
登录 console.x.com。 使用将拥有这个应用的 X 账号;没有单独的开发者登录。
-
接受开发者协议。 阅读并接受 X 的开发者协议和政策,然后用平实的话描述你要构建什么,以及它读取哪些数据。X 没有公布这一步的审核时间。
-
创建应用。 点击 New App,填写名称、描述和用途。应用一创建,控制台就会生成它的凭据。
-
保存凭据。 复制 API 密钥和 secret,以及 Bearer 令牌。如果应用要发帖,或代表他人操作,还要复制 access token 和 secret,或者 OAuth 2.0 的 client ID 和 secret。每个值只显示一次。
-
购买额度。 在控制台里添加银行卡并购买额度。测试期间设置一个支出上限;自动充值可以等到某个任务绝不能中断时再开。
-
发送测试请求。 把 Bearer 令牌放进
Authorization请求头,查询一个公开账号。如果返回的 JSON 对象里有id、name和username,说明密钥可用,这次查询花费 $0.010,也就是一次用户读取的价格。Terminal curl "https://api.x.com/2/users/by/username/XDevelopers" \ -H "Authorization: Bearer $X_BEARER_TOKEN"从 console.x.com 到一个可用的官方密钥,共六步。第 5 步的额度,是 X 的获取访问权限指南没有写到的。
读取公开帖子和用户资料时,你的代码只需要发送 Bearer 令牌这一种凭据。等应用要发帖或代表他人操作时,access token 和 OAuth 2.0 那一对才有用,下面的凭据表说明了各自是什么。
#大约 3 分钟拿到 Sorsa API 密钥
要读取 X 公开数据,用 Sorsa API,一款 Twitter(X)API 与爬虫:一个密钥取代应用、它的凭据和额度余额,推文每 1,000 条 $0.014 起,比官方 X API 便宜 250 倍。整个过程不涉及你的任何 X 账号,所以你的账号零风险,而且这个密钥在所有套餐上都是每秒 20 次请求,免费账号也一样。
-
注册。 用 Google 或邮箱注册。无需绑卡,无需 X 账号,也无需审核,账号一开通就有 100 次永不过期的免费请求。
-
复制密钥。 控制台的概览页会显示你的 API 密钥。把它存进服务器上的环境变量,比如
SORSA_API_KEY。 -
免费检查密钥。 带着放在
ApiKey请求头里的密钥,调用GET /key-usage-info(在新标签页打开)。这个调用从不占用你的请求次数,所以测试一个密钥不花钱。Terminal curl "https://api.sorsa.io/v3/key-usage-info" \ -H "ApiKey: YOUR_API_KEY"Response200 OK { "key_requests": 100, "remaining_requests": 100, "total_requests": 0 }
remaining_requests 是这个密钥还能花的次数。在付费套餐上,响应里还带有 valid_until,也就是当前请求余额过期的日期;100 次免费请求没有这个日期。从这里开始,Sorsa API 的每个接口(共 45 个)都用同一个请求头:GET /info(在新标签页打开)返回用户资料,搜索、时间线、粉丝,以及每批 100 条的推文,用法都一样。
并排来看,Sorsa API 密钥需要的环节更少,检查不花钱,读取推文的价格只是官方的零头:
| 需要什么 | Sorsa API 密钥 | 官方 X API 密钥 |
|---|---|---|
| 用什么注册 | 邮箱或 Google | 你的 X 账号 |
| 密钥出现之前 | 只需注册 | 开发者协议、用途描述、一个应用 |
| 要保存什么 | 1 个 API 密钥 | 最多 7 个值:密钥和 secret、Bearer 令牌、access token 和 secret、client ID 和 secret |
| 每个请求的请求头 | ApiKey: <key> | Authorization: Bearer <token> |
| 第一次读取之前 | 100 次免费请求,无需绑卡 | 预付额度,否则返回 HTTP 402 |
| 检查密钥是否可用 | GET /key-usage-info,免费 | 一次计费的读取,比如一份用户资料 $0.010 |
| 请求速率 | 所有套餐统一每秒 20 次请求 | 每个接口各有独立的 15 分钟窗口 |
| 1,000 条推文 | $0.014 起 | $5.00 |
用什么注册
- Sorsa API 密钥
- 邮箱或 Google
- 官方 X API 密钥
- 你的 X 账号
密钥出现之前
- Sorsa API 密钥
- 只需注册
- 官方 X API 密钥
- 开发者协议、用途描述、一个应用
要保存什么
- Sorsa API 密钥
- 1 个 API 密钥
- 官方 X API 密钥
- 最多 7 个值:密钥和 secret、Bearer 令牌、access token 和 secret、client ID 和 secret
每个请求的请求头
- Sorsa API 密钥
ApiKey: <key>- 官方 X API 密钥
Authorization: Bearer <token>
第一次读取之前
- Sorsa API 密钥
- 100 次免费请求,无需绑卡
- 官方 X API 密钥
- 预付额度,否则返回 HTTP 402
检查密钥是否可用
- Sorsa API 密钥
GET /key-usage-info,免费- 官方 X API 密钥
- 一次计费的读取,比如一份用户资料 $0.010
请求速率
- Sorsa API 密钥
- 所有套餐统一每秒 20 次请求
- 官方 X API 密钥
- 每个接口各有独立的 15 分钟窗口
1,000 条推文
- Sorsa API 密钥
- $0.014 起
- 官方 X API 密钥
- $5.00
在代码里,从环境变量读取密钥,第一次尝试时也可以把它粘贴到 YOUR_API_KEY 的位置,遇到 200 以外的任何状态码都停止;JSON 里的 message 会说明哪里出了问题。
import os
import requests
key = os.environ.get("SORSA_API_KEY", "YOUR_API_KEY")
r = requests.get("https://api.sorsa.io/v3/key-usage-info",
headers={"ApiKey": key}, timeout=30)
if r.status_code != 200:
raise SystemExit(f"{r.status_code}: {r.json()['message']}")
print("requests left:", r.json()["remaining_requests"])
如果你来这里,就是为了彻底绕开 X 的控制台,没有开发者账号也能用的 Twitter API这篇指南会带你完成最初的几次读取:推文、搜索和粉丝列表。
#哪种 X 凭据负责什么
官方 X API 签发四类凭据,读取公开数据只需要其中一种:Bearer 令牌。API 密钥和 secret,也叫 consumer key 和 secret,用来标识你的应用,相当于它的用户名和密码,X 的 API Key and Secret 页面(在新标签页打开)就是这么描述的。其他凭据,要么由它们生成,要么是给使用你应用的人准备的。
只有 Bearer 令牌自己就能读取公开帖子,所以一个从不发帖的脚本,可以忽略另外三行:
| 凭据 | 它是什么 | 用来做什么 | 单独能否读取公开帖子 |
|---|---|---|---|
| API 密钥和 secret(consumer key 和 secret) | 你的应用的身份 | 签名 OAuth 1.0a 请求,生成 Bearer 令牌 | 不能 |
| Bearer 令牌 | 仅应用的 OAuth 2.0 令牌 | 公开读取:帖子、用户资料、搜索 | 能 |
| Access token 和 secret | 拥有该应用的账号对应的 OAuth 1.0a 一对凭据 | 以该账号的身份发帖和操作 | 能,以该账号的身份 |
| OAuth 2.0 client ID 和 secret | 你的应用在登录流程中的身份 | 让其他人用 X 登录,并通过你的应用操作 | 不能,它们生成的是用户令牌 |
API 密钥和 secret(consumer key 和 secret)
- 它是什么
- 你的应用的身份
- 用来做什么
- 签名 OAuth 1.0a 请求,生成 Bearer 令牌
- 单独能否读取公开帖子
- 不能
Bearer 令牌
- 它是什么
- 仅应用的 OAuth 2.0 令牌
- 用来做什么
- 公开读取:帖子、用户资料、搜索
- 单独能否读取公开帖子
- 能
Access token 和 secret
- 它是什么
- 拥有该应用的账号对应的 OAuth 1.0a 一对凭据
- 用来做什么
- 以该账号的身份发帖和操作
- 单独能否读取公开帖子
- 能,以该账号的身份
OAuth 2.0 client ID 和 secret
- 它是什么
- 你的应用在登录流程中的身份
- 用来做什么
- 让其他人用 X 登录,并通过你的应用操作
- 单独能否读取公开帖子
- 不能,它们生成的是用户令牌
丢失的 Bearer 令牌可以用密钥和 secret 重新生成。X 的 Bearer 令牌指南(在新标签页打开)把它们作为一对基本认证凭据发给 oauth2/token,返回的 JSON 里的 access_token 字段就是 Bearer 令牌:
curl -u "$X_API_KEY:$X_API_SECRET" \
--data "grant_type=client_credentials" \
"https://api.x.com/oauth2/token"
权限属于应用,而不是令牌。设为 Read 的应用不能发帖。在它的用户认证设置里切换到 Read and write,然后重新生成 access token 和 secret:令牌会一直保留它创建时的权限。切换之前生成的令牌,是第一次发帖就遇到 403 的常见原因。
选好你的代码要完成的任务,选择器会告诉你该用哪种凭据、哪个请求头和第一个请求:
你的代码要做什么?
读取公开帖子和用户资料
Sorsa API
- 凭证
- 一个 API 密钥
- 获取位置
- 控制台,注册后即可获得
- 请求头
ApiKey: <key>- 第一次请求
GET /v3/key-usage-info免费- 1,000 条推文
- 低至 $0.014
官方 X API
- 凭证
- Bearer 令牌
- 获取位置
- 你的应用的“密钥和令牌”标签页
- 请求头
Authorization: Bearer <token>- 第一次请求
GET /2/users/by/username/…每次 $0.010- 1,000 条推文
- $5.00
以我自己的账号发帖
官方 X API
- 凭证
- 访问令牌和密钥,用 API 密钥和密钥签名
- 获取位置
- “密钥和令牌”,需先把应用设为读写权限
- 请求头
Authorization: OAuth …使用 OAuth 1.0a 签名- 第一次请求
POST /2/tweets- 每条帖子
- $0.015
带链接的帖子收费 $0.20。Sorsa API 设计上只读:它从不发帖,所以你的 X 账号不会牵涉其中。
让其他人用 X 登录
官方 X API
- 凭证
- OAuth 2.0 客户端 ID 和密钥
- 获取位置
- 应用的用户认证设置,需填写回调 URL
- 请求头
Authorization: Bearer <user token>每个人一个- 第一次请求
- 登录流程:带 PKCE 的授权码
- 读取和发帖
- 官方费率
每位登录的用户都有自己的令牌,通过它进行的每次读取或发帖都会消耗你的额度。
一项任务对应一种凭证:选择器会显示它从哪里获取、由哪个请求头携带,以及第一次请求的费用。
#X-API-Key、Bearer 还是 ApiKey:该用哪个请求头
官方 X API 只从 Authorization: Bearer 请求头读取令牌,Sorsa API 只从 ApiKey 请求头读取密钥。两者都不读 X-API-Key,这是许多其他 API 给密钥用的请求头名称。这个名字容易让人栽跟头,因为它读起来像“X API key”,实际上和 X 毫无关系。API 网关和很多 SaaS 产品都用它,而放在这里的密钥到了 X 的服务器上,等于没有密钥。
2026 年 11 月 2 日,我们用编造的密钥,向两个 API 发送了同样的请求,下面每个回答都是实际返回的结果:
| 我们发送了什么 | Sorsa API 的回答 | 官方 X API 的回答 |
|---|---|---|
| 完全没有密钥 | 403 missing key in request header | 401 Unauthorized |
| 在正确的请求头里放一个编造的密钥 | 401 invalid api key | 401 Unauthorized |
把密钥放在 X-API-Key 请求头里 | 403 missing key in request header | 401 Unauthorized |
把密钥作为 Authorization: Bearer 发送 | 403 missing key in request header | 401 Unauthorized |
完全没有密钥
- Sorsa API 的回答
- 403
missing key in request header - 官方 X API 的回答
- 401
Unauthorized
在正确的请求头里放一个编造的密钥
- Sorsa API 的回答
- 401
invalid api key - 官方 X API 的回答
- 401
Unauthorized
把密钥放在
X-API-Key请求头里- Sorsa API 的回答
- 403
missing key in request header - 官方 X API 的回答
- 401
Unauthorized
把密钥作为
Authorization: Bearer发送- Sorsa API 的回答
- 403
missing key in request header - 官方 X API 的回答
- 401
Unauthorized
所以,官方 X API 返回 401,意味着令牌错误、缺失或发送方式不对,但它不会告诉你是哪一种。Sorsa API 能区分这两种情况:401 invalid api key 表示值错了,403 missing key in request header 表示请求头名称错了。
#新密钥失败时:401、402、403、429
新的官方 X API 密钥失败有四个原因,各有各的状态码。401 表示令牌错误或已被重新生成,402 表示额度余额为空,403 表示缺少权限或应用不属于某个项目,429 表示速率限制窗口已用完。同样的数字在 Sorsa API 上含义不同,解决办法也跟着消息走:
| 状态码 | Sorsa API | 官方 X API |
|---|---|---|
| 401 | 密钥错误或已被删除(invalid api key) | 令牌错误、缺失或已被重新生成 |
| 402 | 不使用 | CreditsDepleted:账号没有额度 |
| 403 | ApiKey 请求头里没有密钥,或请求次数已用完 | 应用缺少权限,或不在某个项目里(client-not-enrolled) |
| 429 | 一秒内超过 20 次请求 | 该接口的 15 分钟窗口已用完 |
401
- Sorsa API
- 密钥错误或已被删除(
invalid api key) - 官方 X API
- 令牌错误、缺失或已被重新生成
402
- Sorsa API
- 不使用
- 官方 X API
CreditsDepleted:账号没有额度
403
- Sorsa API
ApiKey请求头里没有密钥,或请求次数已用完- 官方 X API
- 应用缺少权限,或不在某个项目里(
client-not-enrolled)
429
- Sorsa API
- 一秒内超过 20 次请求
- 官方 X API
- 该接口的 15 分钟窗口已用完
402 是 X 的获取访问权限指南从未提到的错误。它的响应体里,标题是 CreditsDepleted,还有一句 "Your enrolled account does not have any credits to fulfill this request."(你的已注册账号没有额度可用于完成这次请求),开发者们已经在 X 的开发者论坛(在新标签页打开)上发过相关帖子,购买额度就能解决。余额也可能略低于零,这时请求会一直被拦住,直到充值补足。
403 client-not-enrolled 的意思是,密钥必须来自一个 "attached to a Project"(挂靠在某个项目下)的开发者应用。它出现在较老的独立应用上;在控制台里把应用挂到某个项目下,或者在那里新建一个应用,就能解决。官方 X API 的速率限制在每个接口上都不同,X API 速率限制指南列出了它们。在 Sorsa API 上,429 在一秒内就会解除,失败的请求从不计费,所以重试不花钱。
#保管好密钥,泄露后及时更换
把每个 API 密钥都当作密码对待:存放在服务器上的环境变量或密钥管理器里,绝不要放进前端代码或 Git 仓库。在第一次提交之前,就把存放 X_BEARER_TOKEN 或 SORSA_API_KEY 的 .env 文件加进 .gitignore,因为机器人会扫描公开仓库来找密钥。
泄露的密钥在两个 API 上都会让你付出代价。在官方 X API 上,X 的最佳实践页面(在新标签页打开)警告说,被盗的密钥可能耗尽你的付费访问额度,或导致应用被封停。在 Sorsa API 上,它会花掉你的请求次数。
- 官方 X API: 打开应用的 Keys and tokens 标签页,点击泄露的凭据旁边的 Regenerate。旧值立刻失效,所以要更新所有用过它的服务器。Bearer 令牌也可以通过
oauth2/invalidate_token作废,再重新生成。 - Sorsa API: 在控制台的 API Keys 页面新建一个密钥,并删除泄露的那个。旧密钥立刻停止工作,并返回 401。
Sorsa API 密钥只应放在服务端代码里:浏览器无法直接调用这个 API,前端 JavaScript 里的密钥,任何打开页面的人都能读到。
须知
X 对每个凭据只在生成的那一刻显示一次。请直接粘贴进你的密码管理器或密钥库。如果你先关掉了页面,唯一的办法就是重新生成,而这会让所有仍然持有旧值的脚本失效。
#从今天就能读数据的密钥开始
官方 X API 密钥要经过六步,还要有额度余额,才能得到第一个答复,而且它读取的每条帖子要花 $0.005。要读取 X 公开数据,用 Sorsa API 密钥:一次注册,一个请求头,推文每 1,000 条 $0.014 起。复制密钥,免费检查,在付任何钱之前,用 100 次免费请求读取最多 1 万条推文。如果还要发布帖子,就保留一个小的官方应用负责写入,所有读取都通过 Sorsa API 完成。
#常见问题
在哪里找到我的 X API 密钥和 Bearer 令牌?
在 console.x.com 的 X 开发者控制台:打开侧边菜单里的 Apps,选择你的应用,进入它的 Keys and tokens 标签页。这个标签页列出了 API 密钥和 secret、Bearer 令牌以及 access token,每一项都有一个 Regenerate 按钮。X 只在生成时显示 secret,所以丢失的值无法再次查看,只能替换。
Twitter API 密钥是免费的吗?
创建官方 X API 密钥是免费的,但使用它不是。官方 X API 对新开发者没有免费额度,每次读取都从预付额度里扣:每条帖子 $0.005,每份用户资料 $0.010。Sorsa API 密钥自带 100 次免费请求,最多可读取 1 万条推文,无需绑卡。Twitter API 免费吗的完整回答涵盖了两者。
读取推文,该用哪个 Twitter API 密钥?
用 Sorsa API 密钥。拿到它大约需要 3 分钟,不需要应用、OAuth 和 X 账号;一个 ApiKey 请求头适用于全部 45 个接口,所有套餐统一每秒 20 次请求。推文每 1,000 条 $0.014 起,比官方 X API 的 $5.00 便宜 250 倍,前 100 次请求免费。Sorsa API 自 2022 年起提供 X 数据,累计处理请求超 60 亿次。
获取 X API 密钥要多久?
X 没有公布审核时间。它的获取访问权限指南列了三步(登录、接受开发者协议、创建应用),应用一创建,控制台就会生成凭据。在你购买额度之前,这个密钥什么也读不了,所以也要把付款这一步计划进去。Sorsa API 密钥从注册到第一个响应,大约需要 3 分钟。
发推需要哪个密钥?
发帖需要用户令牌,而不是 Bearer 令牌:即设为 Read and write 的应用的 access token 和 secret,或者带写入权限的 OAuth 2.0 用户令牌。X 每条帖子收费 $0.015,带链接的帖子收费 $0.20。Sorsa API 从设计上就是只读,所以它从不发帖,也从不碰你的 X 账号;机器人既要读取又要发布时,把两者搭配起来用。
#我们如何核实
2026 年 11 月 2 日,我们读了 X 在 docs.x.com 上关于获取访问权限、API 密钥和 secret、Bearer 令牌、开发者应用、价格、错误和密钥安全的页面,以及 X 开发者论坛上关于 402 和 403 配置错误的帖子。同一天,我们向两个 API 发送了不带密钥、带编造密钥、以及把密钥放错请求头的请求;请求头那张表给出了返回的状态码和消息。Sorsa API 的请求依据它的实时接口文档,密钥用量的响应展示的是新账号的数值,不是实际抓取的一次调用。
来源
- X API: Getting Access(在新标签页打开)
- X API: API Key and Secret(在新标签页打开)
- X API: Using and generating an app-only Bearer Token(在新标签页打开)
- X API: Developer apps(在新标签页打开)
- X API: pay-per-usage pricing and credits(在新标签页打开)
- X API: Response codes and errors(在新标签页打开)
- X API: Authentication best practices(在新标签页打开)
- X Developers forum: Auto-Recharge Never Triggers (402 CreditsDepleted)(在新标签页打开)
- Sorsa API reference (OpenAPI)