开始
错误码
错误体
所有错误都是同一个形状:
{ "error": { "code": "VALIDATION_ERROR", "message": "…", "details": { "field": "model" } } }VALIDATION_ERROR 时看 details.field 定位是哪个字段,details.allowed 列出可选值。
状态码与处理
| HTTP | code | 怎么办 |
|---|---|---|
| 400 | VALIDATION_ERROR | 看 details.field 与 details.allowed 改请求 |
| 401 | UNAUTHENTICATED | Key 无效、已吊销或过期,重新创建 |
| 402 | CREDITS_EXHAUSTED | 积分不足,到定价页充值;details.required 是本次所需 |
| 403 | SCOPE_DENIED / API_NOT_ELIGIBLE | Key 没这个权限,或账号未达准入条件 |
| 409 | IDEMPOTENCY_* | 同一个 Idempotency-Key 已用过:换新的,或稍后查询 |
| 422 | CONTENT_VIOLATION | 被内容审核拦下,不扣费;改写描述,不要原样重试 |
| 429 | RATE_LIMITED / CONCURRENCY_LIMIT / DAILY_CAP_REACHED | 按响应头 Retry-After 等待 |
| 503 | MODERATION_UNAVAILABLE / UPSTREAM_UNAVAILABLE | 未扣费或已退费,稍后重试一次 |
平台网关返回的纯文本 429 与 413 见限额。
Anthropic 接口的错误体
/v1/messages 按 Anthropic 格式返回 { "type": "error", "error": { "type", "message" } }:余额不足 402 billing_error、限流 429 rate_limit_error、上游不可用 529 overloaded_error。
流式对话中途出错
stream: true 时正常结束以 data: [DONE] 收尾。如果上游中途断开,会收到一个 data: {"error":{...}} 事件,且没有 [DONE];已产生的 token 照常结算。