从官方 X API v2 迁移到 Sorsa API v3
本页介绍如何将现有集成从官方 Twitter/X API v2 迁移至 Sorsa API v3,涵盖身份验证、端点映射、响应格式变化、分页、HTTP 方法差异、搜索查询语法、错误处理,以及 curl、Python 和 JavaScript 代码示例。 Sorsa API 为只读 API。如果您的集成也会向 X 写入数据(发布推文、发送私信、点赞、关注),请保留官方 API 密钥用于写入,只迁移读取部分。每个新账号均包含 100 次免费请求,无需银行卡,因此可以先验证端点映射,再切换生产流量。说明: 如需包含成本比较和逐步示例的迁移教程,请阅读博客中的从 Twitter/X API 迁移:开发者完整指南。
变化概览
身份验证
官方 API 对仅限应用的请求使用 OAuth 2.0 Bearer 令牌,对用户范围的请求使用 OAuth 1.0a User Context。ApiKey 请求头传递单个 API 密钥。在控制台生成密钥。
端点映射
用户
GET /info-batch每次最多接受 100 个用户名或 ID。重复查询参数,例如?usernames=a&usernames=b。GET /followers和GET /follows每页最多返回 200 份完整个人资料,包括简介、粉丝数量和认证状态。
推文
tweet_link接受完整推文 URL(https://x.com/user/status/123)或数字 ID("123")。POST /tweet-info-bulk每次最多返回 100 条推文。使用它代替循环调用POST /tweet-info,最多可将请求次数减少至原来的 1/100。POST /user-tweets没有 3,200 条推文的上限。持续分页,直到响应中不再出现next_cursor,即可获取回溯至账号首条推文的完整时间线。见历史数据。
搜索
- Sorsa
/search-tweets使用 X 网页高级搜索语法。许多基本查询可以直接沿用,但复用查询前应检查 API v2 专用运算符。见搜索运算符。 POST /mentions还支持官方 API 未提供的筛选:min_likes、min_replies、min_retweets、since_date、until_date。
列表
社群
官方 X API 没有开放社群端点。以下功能仅由 Sorsa 提供。
请求详情及当前可用性说明见列表与社群;迁移社群工作流前,请确认当前是否支持。
验证
这些端点通过一次调用回答关注、互动或成员资格问题。官方 API 没有对应功能;通常需要获取完整列表,再在客户端查找。
见营销活动验证。
分析(仅 Sorsa 提供)
这些端点索引以加密货币为主的部分账号,包括意见领袖、项目和风投机构。见Sorsa Score 与加密货币分析。
实用工具
见ID 转换。
响应格式变化
这是迁移中最显著的单项变化。官方 v2 使用data、includes 和 meta 封装响应。Sorsa 返回扁平对象,作者资料直接内嵌在每条推文中。
用户资料
官方 X API v2(指定返回字段):推文
官方 X API v2(使用expansions=author_id):
字段映射
用户字段
推文字段
分页
官方 API 使用查询参数pagination_token,并返回 meta.next_token。Sorsa 在请求和响应中均使用同一个字段 next_cursor。
对于 GET 端点,将 next_cursor 作为查询参数传递:
next_cursor 放入 JSON 请求体:
next_cursor:
next_cursor 缺失或为 null 时,表示没有更多页面。详情见分页。
HTTP 方法差异
某些在官方 API 中使用GET 的端点,在 Sorsa 中使用 POST。
一般而言,推文内容、搜索和社群端点使用带 JSON 请求体的
POST;这也包括 /user-tweets,尽管它接收用户标识符。用户、列表和实用工具查询使用 GET,通过查询或路径参数传参。一个例外是 /check-comment:虽然接收推文链接,但使用 GET。如有疑问,请查阅具体端点参考。
代码迁移示例
获取用户资料
迁移前(官方 API):搜索推文
迁移前:分页获取全部粉丝
迁移前:搜索查询语法
Sorsa 使用 X 网页高级搜索语法,与官方 API v2 的运算符集合有所不同。可以按需保留基本关键词、短语、from: 和 to:,再转换 API 专用筛选条件并测试结果。例如,使用 -filter:nativeretweets 排除原生转推。
完整参考:搜索运算符。
/mentions 还支持服务端筛选:min_likes、min_replies、min_retweets、since_date、until_date。见追踪提及。
错误处理
官方 API 通过结构化errors 数组返回错误:
400、401、403、404、429、500。见错误码。
速率限制处理:收到 429 后,应退避并重试。所有端点统一限制为每秒 20 次请求,无需分别跟踪各端点的时间窗口。见速率限制。
下面的重试封装可处理这两种 API:
迁移检查清单
- 将
Authorization: Bearer ...替换为ApiKey: ...。 - 移除 OAuth 1.0a 签名逻辑,包括 consumer key、访问令牌和签名生成。
- 将基础 URL 从
https://api.x.com/2改为https://api.sorsa.io/v3。 - 使用上面的表格映射每个端点路径。
- 将推文、搜索、评论、引用和转推用户端点从 GET 改为 POST。
- 移除
tweet.fields、user.fields、media.fields和expansions参数。 - 更新响应解析器,移除
data/includes/meta解包逻辑。 - 重命名字段,例如
name改为display_name,text改为full_text。 - 改为直接访问扁平化指标,移除
public_metrics层。 - 将
pagination_token/next_token替换为next_cursor。 - 更新错误处理以适配简化的
{ "message": "..." }格式。 - 调整限流逻辑:统一每秒 20 次请求,不再使用各端点独立窗口。
- 在 API Playground 测试关键端点。
- 通过
GET /key-usage-info监测配额。 - 如仍需写操作(发帖、私信),保留官方 API 密钥。