跳到正文

如何获取 Twitter(X)API 密钥

要获取 Twitter(X)API 密钥,用你的 X 账号登录 console.x.com,接受开发者协议,创建应用并保存它的密钥和 Bearer 令牌,然后购买额度:读取每条帖子 $0.005。

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

简短回答: 创建应用时,控制台会签发 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 价格详解列出了每一项费率。

  1. 登录 console.x.com。 使用将拥有这个应用的 X 账号;没有单独的开发者登录。

  2. 接受开发者协议。 阅读并接受 X 的开发者协议和政策,然后用平实的话描述你要构建什么,以及它读取哪些数据。X 没有公布这一步的审核时间。

  3. 创建应用。 点击 New App,填写名称、描述和用途。应用一创建,控制台就会生成它的凭据。

  4. 保存凭据。 复制 API 密钥和 secret,以及 Bearer 令牌。如果应用要发帖,或代表他人操作,还要复制 access token 和 secret,或者 OAuth 2.0 的 client ID 和 secret。每个值只显示一次。

  5. 购买额度。 在控制台里添加银行卡并购买额度。测试期间设置一个支出上限;自动充值可以等到某个任务绝不能中断时再开。

  6. 发送测试请求。 把 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"
    
    01 登录 console.x.com 用将拥有该应用的 X 账号 02 接受开发者 协议 然后用简单的话 描述你要做什么 03 创建应用 点 New App 名称、描述、用途; 凭证立即出现 04 保存 凭证 密钥、密钥密文、Bearer 令牌: 每个只显示一次 丢了?重新生成 05 购买预付 额度 每读一条推文 $0.005;没有 额度时,每次调用都返回 402 CreditsDepleted 06 发送测试 请求 请求头带 Bearer 令牌; 旧应用可能返回 403 client-not-enrolled
    从 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 次请求,免费账号也一样。

  1. 注册。 用 Google 或邮箱注册。无需绑卡,无需 X 账号,也无需审核,账号一开通就有 100 次永不过期的免费请求。

  2. 复制密钥。 控制台的概览页会显示你的 API 密钥。把它存进服务器上的环境变量,比如 SORSA_API_KEY。

  3. 免费检查密钥。 带着放在 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 令牌:

Terminal
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 的服务器上,等于没有密钥。

Sorsa API GET /v3/key-usage-info Host: api.sorsa.io ApiKey: YOUR_API_KEY 免费密钥检查,不计数 官方 X API GET /2/users/by/username/XDevelopers Host: api.x.com Authorization: Bearer AAAA… 按用户读取计费,$0.010 以 X-API-Key 发送 X-API-Key: YOUR_API_KEY 通用请求头名称:两个 API 都不读取 Sorsa API 的响应 403 missing key in request header 官方 X API 的响应 401 Unauthorized
Sorsa API 从 ApiKey 读取密钥,官方 X API 从 Authorization 读取 Bearer 令牌,两者都不读 X-API-Key。

2026 年 11 月 2 日,我们用编造的密钥,向两个 API 发送了同样的请求,下面每个回答都是实际返回的结果:

我们发送了什么Sorsa API 的回答官方 X API 的回答
完全没有密钥403 missing key in request header401 Unauthorized
在正确的请求头里放一个编造的密钥401 invalid api key401 Unauthorized
把密钥放在 X-API-Key 请求头里403 missing key in request header401 Unauthorized
把密钥作为 Authorization: Bearer 发送403 missing key in request header401 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:账号没有额度
403ApiKey 请求头里没有密钥,或请求次数已用完应用缺少权限,或不在某个项目里(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 的请求依据它的实时接口文档,密钥用量的响应展示的是新账号的数值,不是实际抓取的一次调用。

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

更新内容
  • 从头重写。官方步骤已对照 docs.x.com 当天内容核实,新增购买额度这一步和 402 错误;新增关于凭据、请求头(附我们自己的请求测试)和配置错误的章节;新增 Sorsa API 密钥路线及免费密钥检查;两张图和一个凭据选择器。
  • 首次发布。