常见 HTTP 状态码
同一个 HTTP 状态码可能对应不同原因。例如
429 可表示限流,也可表示余额不足;客户端应优先读取机器可读的 error.code,不要根据 error.message 文案分支。
错误响应结构
以下示例是网关生成的错误。request_id 仅用于示意;实际值以响应头 x-request-id 为准。
OpenAI 兼容
error.type 是错误大类;error.code 是更具体的原因;error.param 在参数校验失败时可能包含字段名。
Anthropic Messages
Gemini 原生
error.code 是 HTTP 数字状态码,error.status 是规范状态名称。参数错误时,details 还可能包含 google.rpc.BadRequest 的字段信息。
常见网关错误代码
网关也可能返回更具体的参数、计费或供应商错误代码。对上游透传错误,不要假定其
error.code 一定属于上表。
请求标识与限流头
网关响应头中的x-request-id 可用于排查问题。保留请求时间、端点、模型、HTTP 状态码和该 ID;不要把完整 API Key 记入日志。
网关在完成鉴权并返回请求结果时可附带以下限流头:
限额由密钥配置决定。鉴权或限流阶段直接拒绝的响应不一定包含上述三个头;客户端需要为缺失情况设置自己的退避时间。
重试与流式错误
仅对临时错误重试,例如限流类429、500、503 或 504。若 429 的 error.code 为 insufficient_balance,应处理余额问题,而非自动重试。对 400、401、403、404、413 和 422,先修正请求。重试时设置最大次数,并逐次增加等待时间;对可能产生费用的创建任务请求,先查询任务状态,避免重复提交。
流式请求在收到 HTTP 200 后仍可能中断。此时不能只看最初的状态码,还应读取后续事件:Anthropic 可返回 event: error,Responses 可返回 event: response.failed,Chat Completions 和 Gemini 流可能在数据帧中返回错误对象。
成功响应的字段结构见对应的 API Reference 或具体端点文档。视频等异步接口应根据任务 ID 查询最终状态。
