X API v2 HTTP 状态码
Code | Text | Description | Troubleshooting tips |
---|---|---|---|
200 | OK | 请求成功。 | |
400 | Bad Request | 请求无效或无法处理。随附的错误信息将进一步说明原因。缺少身份验证或包含无效 query 参数的请求被视为无效,并会返回此响应。 | 请仔细检查你的 JSON 查询格式。例如,如果规则中包含用于精确匹配或其他运算符的双引号字符,你可能需要使用反斜杠进行转义,以将其与 JSON 结构区分开来。 |
401 | Unauthorized | 请求的身份验证出现问题。这可能由于缺少或不正确的身份验证凭据所致。在其他未定义情形下也可能返回此状态。 | 检查你使用的是否为正确的身份验证方法,并确认凭据无误。 |
403 | Forbidden | 服务器理解该请求,但已拒绝或不允许访问。随附的错误信息将解释原因。 | 检查你的开发者账户是否具备所用 endpoint 的访问权限。你可能还需要将 App 加入允许列表(例如 Engagement API 或 X Ads API),或申请相应访问权限。 |
404 | Not Found | 请求的 URI 无效,或请求的资源(如某个用户)不存在。 | 检查你是否使用了有效参数以及该 endpoint 的正确 URI。 |
409 | Connection Exception | 当尝试连接到没有规则的过滤的流时返回。 | 确认你在要连接的 stream 上至少创建了一条规则。过滤的流只会返回与活动规则匹配的 Posts;如果没有规则,stream 将不会返回任何 Posts。 |
429 | Too Many Requests | 当由于 App 的请求速率限制或Post 上限已耗尽而无法处理请求时返回。参见请求速率限制。 | 检查所用 endpoint 在给定时间窗口内允许的请求数。等待窗口重置。将请求错峰/分散以避免触及请求速率限制,或升级到更高的数据套餐。 |
500 | Internal Server Error | 出现故障。通常是临时错误,例如高负载情况下或某个 endpoint 暂时出现问题。 | 查看 X API 的状态页面或开发者社区论坛,了解是否有他人遇到类似问题,或稍后重试。 |
501 | Unimplemented | X API 不支持此 endpoint,无法完成请求。 | |
503 | Service Unavailable | X 服务器可用,但请求过载。请稍后再试。 | 查看 X API 的状态页面或开发者社区论坛,了解是否有他人遇到类似问题,或稍后重试。 |
部分错误
错误信息
标题 | 类型 | 描述 |
---|---|---|
通用问题 | about:blank | 通用问题;除 HTTP 状态码提供的信息外,没有其他附加信息。 |
无效请求问题 | https://api.X.com/2/problems/invalid-request | 表示该请求无效的问题。如果请求包含 POST 请求体,请确保内容是有效的 JSON 并符合 OpenAPI 规范。 |
资源未找到问题 | https://api.X.com/2/problems/resource-not-found | 表示指定的 Post、User 等不存在的问题。 |
资源未授权问题 | https://api.X.com/2/problems/not-authorized-for-resource | 表示你无权查看特定 Post、User 等的问题。 |
客户端被禁止问题 | https://api.X.com/2/problems/client-forbidden | 表示你的客户端被禁止发出此请求的问题。 |
不允许的资源问题 | https://api.X.com/2/problems/disallowed-resource | 表示所请求的资源违反本 API 原则的问题。 |
不支持的身份验证问题 | https://api.X.com/2/problems/unsupported-authentication | 表示所使用的身份验证方式不受支持的问题。 |
使用上限问题 | https://api.X.com/2/problems/usage-capped | 表示已超出使用配额上限的问题。 |
连接异常问题 | https://api.X.com/2/problems/streaming-connection | 表示连接出现异常的问题。 |
客户端已断开问题 | https://api.X.com/2/problems/client-disconnected | 你的客户端已断开连接。 |
运维断开问题 | https://api.X.com/2/problems/operational-disconnect | 因运维原因你已被断开连接。 |
规则数量上限问题 | https://api.X.com/2/problems/rule-cap | 你已超出规则的最大数量。 |
规则长度问题 | https://api.X.com/2/problems/rule-length | 根据你的访问级别,你已超出 query(查询)或规则允许的最大字符数。参见访问级别。 |
无效规则问题 | https://api.X.com/2/problems/invalid-rules | 你提交的规则无效。 |
重复规则问题 | https://api.X.com/2/problems/duplicate-rules | 你提交的规则重复。 |
故障排查提示
调试代码
调试代码
在构建应用时,偶尔遇到错误或异常问题是正常的。以下是一些调试代码的建议:首先将问题拆解为更小的部分,以定位故障点。比如,如果你正在集成 REST 或 streaming endpoint,问题可能出在以下任一项:
- 该 endpoint 需要正确的身份验证。
- 该 endpoint 需要有效的参数和请求头。任何过滤规则都应使用正确的运算符和合适的语法构建。
- 该 endpoint 的 URI 必须正确;对于 REST endpoint,还必须使用正确的 HTTP 方法。
- 你尝试访问的 data 或资源对你不可用(例如,私有 data 仅对已通过身份验证的用户可用)。
- 你当前的数据套餐仅允许访问特定 endpoint,并受特定的请求速率限制。请查看你的开发者门户以了解更多详情。
- 你的代码使用了第三方库来集成该 endpoint。
- 你的代码需要能够成功解析该 endpoint 的响应。
身份验证问题
身份验证问题
请求速率限制与 Post 上限问题
请求速率限制与 Post 上限问题
当你触及某个 endpoint 的请求速率限制,或触及 Post 上限时,可能会返回 429 错误。如果返回特定的“Too many requests”错误,表示你触及了该 endpoint 的请求速率限制。换言之,你已超过该 endpoint 在指定时间段内允许的最大请求数。请注意,请求速率限制按 App 级别和用户级别分别设定。
- X App 级别表示在使用 OAuth 2.0 App-Only 时允许的请求数量,此时请求速率限制在整个 App 维度上全局确定。例如,如果某方法允许每个请求速率限制窗口发起 15 个请求,那么它允许你代表你的 X App 在每个窗口内发起 15 个请求。此限制与用户级别限制完全分开计算。请参阅我们的OAuth 2.0 App-Only指南了解更多。
- 用户上下文级别表示在使用 OAuth 1.0a 用户上下文或 OAuth 2.0 授权码模式(Authorization Code)配合 PKCE 时,每个用户 Access Token 可发起的请求数量。例如,如果某方法允许每个请求速率限制窗口发起 15 个请求,那么它允许每个窗口、每个用户 Access Token 发起 15 个请求。请阅读我们的指南,了解如何通过 OAuth 1.0a 和 OAuth 2.0 获取用户的 Access Tokens。
缺失 Post 问题
缺失 Post 问题
如果你预期某个 Post 会被返回,但该 endpoint 未返回它,请按以下步骤操作。
- 检查你的规则,确保你使用了正确的operators和syntax。将规则拆分为更小的子句,以确保语法正确。
- 如果发送该 Post 的账号在创建 Post 时处于受保护状态,则该 Post 不会被返回——即使在向 endpoint 发起请求时该账号已为公开。你通常可以使用X 高级搜索进行检查:如果通过 X 高级搜索功能无法检索到某个 Post,你应当假定该 endpoint 也不会返回它。
- 当该 Post 发送时,你是否已连接到 stream?请记住,Post 对象中提供的时间戳为 UTC 时间。如果在该 Post 发送时发生了断开,请查看用于回填任何遗漏 data 的恢复与冗余功能。
- 当该 Post 发送时,你的规则是否已生效?请记住,Post 对象中提供的时间戳为 UTC 时间。
缓冲区已满导致的断开问题
缓冲区已满导致的断开问题
当你的 stream 无法跟上我们投递 data 的速度,且你的 App 未能足够快地从 stream 消费 data 时,你可能会遇到以下错误之一:我们允许在一段时间内出现一定的投递滞后,并在我们端为每个 stream 提供临时的分段缓冲区;但如果你仍未追上,我们会发起断开,以便你在当前时间点重新连接。请注意,这可能会导致 data 丢失(对于在缓冲区已满断开时仍位于缓冲区中的 data)。这些情况可能发生在数据量大幅激增时。一般而言,我们建议将快速消费 data 的缓冲消费流程与后续处理流程分离。如果你是使用 v1.1 endpoint 的 Enterprise 客户,可在我们的文章中了解如何优化你的 App 以防止此类断开,参见关于连接的说明,以及关于消费流式数据的文章此处和此处。有多种工具可用于在断开后检索遗漏的 Post,包括下列工具。请注意,以下工具仅适用于 Enterprise 级别访问的 v1.1 endpoint。
- Redundant Connections - 通过多路连接,从多个服务器消费 stream,以在其中一路断开时防止 data 丢失。
- Replay - 使用独立的 stream 在最近 5 天内恢复 data。
- Backfill - 在 5 分钟内重新连接并从中断处继续。
- Historical PowerTrack - 从整个 X 归档中恢复 data。
获取帮助
在发布问题之前
- 在 X 开发者文档中查找与你的问题相关的信息
- 在社区论坛中查找其他开发者提出的类似问题
- 查看社区论坛使用指南
发布问题时,请务必包含以下信息
- 问题描述
- 发起的 API 调用(如有可能,请包含请求头)
- 返回的 X 响应(包括任何错误信息)
- 你期望得到的结果
- 为排查问题已执行的步骤列表
- 复现该问题所需的步骤列表
- 如适用,问题发生的时间范围
- 如适用,App ID、Post ID 等
- 相关的代码示例或截图