核心指南

处理 API 错误

根据错误码判断问题,只在有用时重试,并保留请求 ID

程序应根据 HTTP 状态和 code 处理错误。message 是写给人看的,文案可能调整,不适合用来做程序判断。

Chat Completions 和 Responses 使用 OpenAI 风格的 error 对象。Anthropic Messages 与 Gemini 保留各自的错误格式,不能用同一个解析器处理所有 TokenLab API。

{
  "error": {
    "message": "Human-readable description",
    "type": "error_type",
    "code": "error_code",
    "param": "parameter_name",
    "retryable": true,
    "retry_after": 30
  }
}

TokenLab 返回的 OpenAI 兼容错误一定包含 message 和 type,其他字段只在有对应信息时出现。

HTTP 状态

状态含义通常怎么处理
400字段、模型 ID 或输入不正确修改请求,不要原样重发
401API 密钥缺失、无效、过期或已撤销更换密钥
402余额不足,或 API 密钥已达到限额充值、提高限额或缩小请求
403当前密钥不能使用这个资源或模型修改密钥权限或更换模型
404资源不存在或已经失效检查 ID,以及创建资源时使用的 API 密钥
413请求或上传文件过大缩小到模型或 API 文档注明的限制内
429已达到请求限额按 Retry-After 等待
500–504服务不可用或网络故障仅在 retryable 为 true 时重试,并遵守 retry_after 和次数限制

常见错误码

错误码含义需要修改什么
invalid_api_keyAPI 密钥缺失、无效、已停用或撤销检查 Authorization 请求头和密钥内容
expired_api_keyAPI 密钥已过期创建或选择一枚有效密钥
insufficient_balance余额无法支付这次请求充值、缩小请求或选择价格更低的模型
quota_exceeded这枚 API 密钥达到自身限额提高限额,或使用另一枚有权限的密钥
model_not_allowed这枚密钥不能使用所选模型修改模型范围,或改用已开放模型
model_not_found模型 ID 不存在或当前不可用从 /v1/models 选择当前模型 ID
context_length_exceeded输入超过模型上下文长度删除无关历史,或更换上下文更长的模型
rate_limit_exceeded当前时间窗口内请求过多按 Retry-After 等待
payload_too_large请求体或文件超过 API 限制缩小或压缩输入
all_channels_failed所选模型无法处理这次请求仅在 retryable 为 true 时重试,并遵守 retry_after 和次数限制
timeout_error请求未在规定时间内完成只在操作可以安全重复时重试

503 all_channels_failed 或 503 delivery_tier_unavailable 不一定是临时故障。如果所选 Delivery 档位没有支持当前操作的供应,retryable 为 false,且不返回 retry_after,不要原样重试。更换模型前,通过 GET /v1/models 检查对应操作和 Delivery 的可用性。名称相近不代表可用;未经验证的替代模型不会列出。

部分 OpenAI 兼容错误还会带有 did_you_mean、suggestions、alternatives、hint、retryable 或 retry_after。具体用法见让 Agent 读懂 API 错误。

如果请求走的是 Official 线路,且上游服务拒绝了请求本身(例如不接受的输入或内容政策判定),错误里还会带 upstream:其中 message 是上游给出的原文,已知时还有 code 和 source(上游服务名称)。Anthropic Messages 和 Gemini 的错误会在各自的 error 对象里带同样的字段。请继续按 code 和 type 分支处理;upstream.code 由上游服务定义,可能变化。

什么时候可以重试

错误能否原样重发
400、401、402、403、404、413不能。需要修改请求、凭据、余额、权限或输入。
429可以,但必须等待服务端给出的时间。
500–504仅在 retryable 为 true 时重试,并遵守 retry_after 和次数限制
收到任何响应前连接中断视情况。创建类请求要确认是否已经产生任务或其他结果。
流式输出已经开始后中断不能把残缺内容标成完成;重发可能得到不同结果或产生第二次费用。

创建图片、视频、音乐、3D 或 Worlds 任务时,收到任务 ID 就立即保存。创建请求超时后,请确认没有任务记录再重新提交。

保存请求 ID

响应头会提供请求 ID,用于查询这次请求。请同时记录 API 地址、模型、时间,以及你自己的用户或任务 ID。异步任务还应保存 task_id 和返回时的 billing_transaction_id。

联系支持时请附上这些 ID 和脱敏示例。不要发送 API 密钥、管理令牌、私密媒体、签名 URL 或完整的私密提示词。

从请求详情到调查和人工支持

本页内容