错误码
所有接口的错误响应遵循统一的 JSON 结构:
json
{
"error": {
"message": "错误描述,通常包含请求 ID 便于排查",
"type": "new_api_error",
"code": "invalid_request"
}
}HTTP 状态码
| 状态码 | 含义 | 常见原因 |
|---|---|---|
400 | 请求参数错误 | 请求体格式不合法、缺少必填字段、参数取值不被目标模型支持 |
401 | 未授权 | 缺少 Authorization 头、API Key 无效/已删除 |
403 | 禁止访问 | Key 被禁用、账户被封禁、来源 IP 不在白名单、触发访问限制 |
404 | 资源不存在 | 请求了不存在的接口路径或资源 ID |
429 | 请求过多 | 额度耗尽、触发速率限制 |
500 | 服务器内部错误 | 网关自身异常,建议重试并关注状态页 |
503 | 服务暂不可用 | 系统负载保护、健康检查未通过 |
常见业务错误码(error.code)
| code | 说明 | 建议处理方式 |
|---|---|---|
invalid_request | 请求格式/参数不合法 | 检查请求体是否符合接口文档要求 |
model_not_found | 指定的 model 不存在或当前不可用 | 调用 GET /v1/models 确认可用模型名称 |
insufficient_user_quota | 账户/Key 额度不足 | 前往控制台充值或提升该 Key 的额度上限 |
access_denied | 访问被拒绝(IP 限制、账户状态异常等) | 检查 Key 的 IP 白名单设置与账户状态 |
sensitive_words_detected | 内容被安全策略拦截 | 调整请求内容,避免违反内容政策 |
channel:no_available_key | 后台渠道暂时没有可用的上游密钥 | 通常是平台侧渠道问题,重试或稍后再试;持续出现请反馈平台方 |
bad_response_status_code | 上游厂商返回了异常状态码 | 网关已尽力转译,仍建议按 5xx 处理方式重试 |
更多内部错误码
除以上高频错误码外,网关内部还定义了更细粒度的渠道/内部错误码(例如特定厂商的速率限制、内容策略差异等),这些通常会在 message 字段中给出具体描述。如果 code 不在上表中,请优先参考 message 文本,或联系平台方协助排查。
重试建议
| 场景 | 是否建议重试 |
|---|---|
429 限流 | 是,指数退避后重试 |
500 / 503 | 是,短暂等待后重试,多次失败应告警 |
401 / 403 | 否,需先修复凭证/权限问题 |
400(参数错误) | 否,需先修正请求内容 |
model_not_found | 否,需先确认正确的模型名称 |
排查建议
- 保留响应中的请求相关信息(
message里通常带有请求 ID),联系平台方时提供,可以加快定位。 - 先用
curl复现问题,排除是 SDK 封装还是接口本身的问题。 - 检查是否命中 OpenAI 兼容接口 中列出的"尚未支持"范围。
