错误码与限流
错误码与限流
平台 API 提供 跨入口稳定 的错误标识,便于统一处理:
| 字段 | 命名(因协议略有差异) | 说明 |
|---|---|---|
| 字符串错误码 | error_code / errorCode / code | 主键,snake_case 或 camelCase |
| 数字错误码 | error_no / errorNo | 与字符串码 1:1 绑定 的 4 位数字,便于分段聚合 |
| 可读说明 | error / message | 面向用户的错误文案 |
50xx 上游业务类(内容违规、参数无效、素材不可用等)会 完整回传 上游/审核原文到 error / message,便于排查;平台通道敏感问题(上游配额、鉴权失败、OSS 转存、轮询超时等)统一映射为 service_unavailable(4001),不暴露上游细节。
1. 稳定错误码一览
段位:10xx 鉴权/访问 · 20xx 限流 · 30xx 账单 · 40xx 路由/平台 · 50xx 上游业务
10xx — 鉴权 / 访问
| error_code | error_no | HTTP | 说明 | 建议处理 |
|---|---|---|---|---|
invalid_request | 1001 | 400 / 401 | 参数无效、API Key 无效 | 检查请求体与 Key |
model_not_found | 1002 | 404 | 模型不存在或未上架 | 核对 modelKey / model |
access_denied | 1003 | 403 | 无该模型访问权限 | 控制台确认授权 |
tenant_arrears | 1004 | 403 | 租户欠费 | 充值或联系运营 |
account_frozen | 1005 | 403 | 账户冻结 | 联系运营 |
user_blacklisted | 1006 | 403 | 用户黑名单 | 联系运营 |
user_cancelled | 1007 | 403 | 用户已注销 | — |
20xx — 限流
| error_code | error_no | HTTP | 说明 | 建议处理 |
|---|---|---|---|---|
rate_limited | 2001 | 429 | 平台 RPM/TPM/并发超限 | 退避重试 |
upstream_rate_limited | 2002 | 429 | 上游供应商限流 | 降低频率或换模型 |
30xx — 账单
| error_code | error_no | HTTP | 说明 | 建议处理 |
|---|---|---|---|---|
insufficient_balance | 3001 | 402 | 账户余额不足 | 控制台充值 |
billing_unavailable | 3002 | 503 | 计费服务暂不可用 | 稍后重试 |
40xx — 路由 / 平台
| error_code | error_no | HTTP | 说明 | 建议处理 |
|---|---|---|---|---|
service_unavailable | 4001 | 503 | 服务暂不可用、上游 5xx、failover 耗尽、上游配额/鉴权隐藏、OSS 转存失败、轮询超时 | 稍后重试 |
routing_temporarily_unavailable | 4002 | 503 | 路由暂不可用 | 稍后重试 |
50xx — 上游业务(异步任务失败主要落在此段)
| error_code | error_no | HTTP | 说明 | 建议处理 |
|---|---|---|---|---|
upstream_invalid_request | 5001 | 400 | 上游业务失败(未命中更细分类) | 对照 模型接入说明 与厂商文档 |
content_policy_violation | 5002 | 400 | 内容/审核/合规拒绝(无法区分 input/output 时的兜底) | 修改 prompt 或素材 |
upstream_invalid_parameter | 5003 | 400 | 参数结构无效(格式、缺字段、类型错误等,非内容违规) | 修正请求参数 |
content_policy_input_violation | 5004 | 400 | 输入侧违规(prompt、入参图片/视频/音频触敏或违规) | 修改输入内容后重试 |
upstream_resource_unavailable | 5005 | 400 | 素材/URL 不可用、文件不存在 | 检查资源 URL 或重新上传 |
upstream_capability_unsupported | 5006 | 400 | 模型/能力不匹配(分辨率、时长、同步/异步等) | 换模型或调整能力参数 |
upstream_task_expired | 5007 | 400 | 上游异步任务过期 | 重新提交任务 |
content_policy_output_violation | 5008 | 400 | 生成结果违规(输出触敏、暴力/涉黄、版权限制等) | 调整 prompt 或重新生成 |
内容违规 vs 参数无效:若参数格式/字段本身有问题 → upstream_invalid_parameter(5003);若参数结构正确但 内容 触敏或违规 → content_policy_*(5002/5004/5008)。优先根据 error_code / error_no 判断,其次阅读 message 原文。
2. 各协议错误形态
OpenAI 兼容(/v1/chat/completions 等)
HTTP 4xx/5xx,body 示例:
{
"error": {
"message": "输入文本包含敏感词,请修改后重试",
"type": "invalid_request_error",
"code": "content_policy_input_violation",
"error_no": 5004
}
}
流式错误:SSE event: error + 上述 error body + data: [DONE]。
Anthropic 兼容(/v1/messages)
HTTP 4xx/5xx,body 示例:
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "输入文本包含敏感词,请修改后重试"
}
}
Anthropic 形态以 message 为主;同步/查单类 gRPC 响应同时带 errorCode + errorNo。
异步任务 API(/api/ai/tasks)
提交失败或查单 status: failed / error 时(camelCase):
{
"taskId": "12345__my-video-001",
"status": "failed",
"error": "输入音频文件不存在",
"errorCode": "upstream_resource_unavailable",
"errorNo": 5005
}
提交校验失败示例:
{
"taskId": "",
"status": "error",
"error": "Must provide one of: videoParams, imageParams, textParams",
"errorCode": "invalid_request",
"errorNo": 1001
}
Webhook 回调
失败时 payload 为 snake_case,含 error、error_code、error_no(详见 Webhook)。
3. 限流体系
平台多层限流,命中任一层即可能返回 rate_limited(2001)。
| 层级 | 说明 |
|---|---|
| 账号 RPM | 账号整体每分钟请求数 |
| 模型 RPM | 单模型每分钟请求数 |
| 模型 TPM | 单模型每分钟 Token |
| 并发 | 同时 in-flight 请求数 |
控制台 密钥管理 页展示模型 RPM / TPM 参考值。
4. 重试建议
| error_code / 段位 | 是否重试 | 策略 |
|---|---|---|
rate_limited / upstream_rate_limited(20xx) | 是 | 指数退避 + jitter |
service_unavailable / billing_unavailable / routing_temporarily_unavailable(40xx) | 是 | 有限次数重试 |
insufficient_balance(30xx) | 否 | 充值后再调 |
invalid_request / access_denied / model_not_found(10xx,除欠费类) | 否 | 修正参数或权限 |
tenant_arrears 等账户状态(10xx) | 否 | 联系运营或充值 |
content_policy_input_violation(5004) | 否 | 修改 输入 prompt/素材 |
content_policy_output_violation(5008) | 可有限重试 | 调整 prompt 后 重新提交;同一输入可能再次触发 |
content_policy_violation(5002) | 否 | 修改内容 |
upstream_invalid_parameter / upstream_capability_unsupported(5003/5006) | 否 | 修正参数或换模型 |
upstream_resource_unavailable(5005) | 否 | 检查素材 URL |
upstream_task_expired(5007) | 否 | 重新提交新任务 |
5. Request ID 排查
请求失败时记录:
- 响应头
x-request-id(异步 submit / poll / cancel 均会回显) - 数据统计 对应时间段
taskId、callbackId;联系平台时优先提供 submit 时的x-request-id- 失败时的
errorCode+errorNo,以及error/message原文
联系平台支持时一并提供。