错误信封
绝大多数错误响应使用这一 OpenAI 兼容的 JSON 形态:type 是一个广义类别,code 是具体标识。某些快路径失败(尤其是
工作区级别的 429)只返回 HTTP 状态码和相关响应头,没有 JSON body。
HTTP 状态码
| 状态 | 含义 | 典型原因 |
|---|---|---|
400 | 请求错 | 参数无效、缺必填字段、schema 违规 |
401 | 未授权 | API 密钥缺失或无效 |
403 | 禁止 | 额度不足,或密钥无权调用该模型 |
404 | 未找到 | 模型或端点不存在 |
429 | 请求过多 | 命中限流——详见速率限制。响应总是带 Retry-After 头。 |
500 | 内部错误 | OrcaRouter 侧 bug |
502 | 上游错误 | 所有上游服务商都失败了(包括任何回退链) |
503 | 服务不可用 | 所请求模型暂时在上游不可用 |
error.type 中可能出现的类别
error.type | 来源 |
|---|---|
orcarouter_api_error | 网关侧失败(鉴权、额度、限流、内部错误) |
upstream_error | 上游服务商返回错误或超时 |
openai_error | OpenAI 兼容上游错误原样保留 |
claude_error | Anthropic 上游错误原样保留 |
gemini_error | Gemini 上游错误原样保留 |
error.code 中可能出现的代码
这些是网关签发的代码(错误来自 OrcaRouter,而非上游):
error.code | HTTP | 含义 |
|---|---|---|
insufficient_user_quota | 403 | 账户余额耗尽,请充值。 |
model_not_found | 503 | 该模型在你账户上不可用。 |
model_price_error | 400 | 该模型未配置定价,请联系支持。 |
api_not_implemented | 400 | 当前模型不支持该端点或操作。 |
bad_request_body | 400 | 请求体无法解析。 |
prompt_blocked | 400 | 服务商安全策略在生成前阻断了 prompt。 |
sensitive_words_detected | 400 | 敏感内容过滤器拒绝了 prompt。 |
error.code(具体),再回退到
error.type(广义)。
流式过程中的错误
流式响应中的错误无法用 HTTP 状态码(状态码在流打开时就已发出)。 具体形态因端点而异:/v1/chat/completions 与 /v1/responses(OpenAI 兼容)
错误以带内的 data: {...} 分片到达:
data: 都当 JSON 解析;若它含 error 字段,就视该流为失败。
/v1/messages(Anthropic 兼容)
Anthropic 使用 SSE 命名事件。流中失败到达形式为:
event: message_stop 结束(或被切断)。
回退错误
当extra_body.models 被设置且链中所有模型都失败时,你会得到一个
502,里面带有最后一次上游错误的细节。响应头 X-Orca-Fallback-Level
和 X-Orca-Fallback-Model 指出链耗尽时正在尝试哪个回退。详见
响应头。