/v1/messages 上 Anthropic 形状,/v1/chat/completions + /v1/responses + /v1/tasks/* + /v1/images/* 上 OpenAI 形状,/v1beta/... 上 Google 形状。
失败永不计费。 这是硬契约 —— 非 2xx 时 X-Quota-Remaining-Credits 不动,/api/v1/me/usage 不出新条目,/api/v1/me/billing/transactions 不出新行。
信封形状
- Anthropic
- OpenAI
- Google(Gemini Native)
error.type 取值:invalid_request_error、authentication_error、
permission_error、not_found_error、request_too_large、
rate_limit_error、api_error、overloaded_error。状态码矩阵
400 Bad Request
输入不对。永不 重试 —— 同样请求体会同样失败。401 Unauthorized
鉴权问题。永不 重试 —— 先修凭证。402 Payment Required
钱用完或触达 quota。条件性重试 —— 只有充值或抬上限之后。403 Forbidden
鉴权过了但不被允许。永不 重试 —— 调整 key、分组或 IP。404 Not Found
端点或资源不存在。永不 重试。413 Request Entity Too Large
请求体超过该路由的上限。永不 用同样请求体重试。429 Too Many Requests
速率限制。重试 —— 用X-RateLimit-Reset 决定退避。
退避策略见 速率限制。
500 Internal Server Error
网关侧故障。重试,指数退避(1s、2s、4s、8s,4 次后放弃)。502 / 503 / 504 —— 服务错误
请求在服务端没能完成。重试,带退避;ByteSpike 在透出之前已经做过内部重试。
对 503 特别地,在 Console → Models 里模型旁点 Test —— 它跑一次 dial-test,能告诉你 key + 分组 + 模型组合是否本身可行。
重试决策矩阵
重试的幂等性
文本端点(/v1/messages、/chat/completions、/responses)不幂等 —— 200 之后重试会让模型跑两次。除非拿到错误,否则别重试。
任务 API 通过 out_task_id 幂等。重试时发同样的 out_task_id,dispatcher 会返回已有的任务,而不是开新的。
Anthropic 特有:SSE 里的 error 事件
流中失败时,你会看到一个终结的 event: error,而不是 event: message_stop:
OpenAI 特有:最终帧里的 error 字段
用代码读错误
相关
- 速率限制 —— 完整的 429 处理
- 鉴权 —— 401/403 含义及修法
- Credits 与账单 —— 402 + “不计费” 保证
- 异步任务 —— 任务中错误的处理(通过
/tasks/query)