API 错误码参考
本文档描述 ShuYou 平台接口所有可能返回的错误响应,包括错误原因及排查解决方案。错误响应格式
所有错误均遵循统一的 JSON 结构:| 字段 | 类型 | 说明 |
|---|---|---|
code | string | HTTP 状态码(字符串形式) |
type | string | 错误类型 |
message | string | 错误描述 |
错误速查表
| HTTP 状态码 | 错误类型 | 简述 |
|---|---|---|
| 400 | invalid_params | 请求参数错误 |
| 402 | insufficient_credit | 账户欠费 |
| 402 | reject_no_credit | 余额不足 |
| 402 | quote_exceeded | 订阅配额用尽 |
| 403 | access_denied | API Key 无效或缺失 |
| 403 | safety_check_failed | 上游安全策略拦截 |
| 404 | model_not_available | 模型不包含在当前订阅计划中 |
| 404 | invalid_model | 模型不存在 |
| 404 | model_not_supported | 模型不支持该 API |
| 413 | invalid_params | 提示词过长 |
| 422 | provider_unprocessable_entity_error | 上游无法处理请求 |
| 429 | rate_limit | 请求频率超限 |
| 500 | internal_server_error | 平台内部错误 |
| 500 | provider_api_error | 上游供应商接口返回了错误 |
| 500 | provider_error | 上游供应商服务出现错误 |
| 502 | no_provider_available | 无可用上游服务商 |
| 520 | provider_internal_server_error | 无法与供应商正常通讯 |
| 524 | provider_internal_server_error | 供应商超时无响应 |
详细错误说明
认证与授权错误
HTTP 403 — access_denied
- 检查是否通过
Authorization: Bearer <key>、x-api-key或x-goog-api-key头部正确传递了 API Key。 - 登录 ShuYou 控制台 确认 API Key 未被撤销或过期。
- 确认复制 API Key 时没有多余的空格或换行符。
HTTP 403 — safety_check_failed
表示输入内容被上游安全策略拦截。
排查步骤:
- 调整提示词、图片、文件或工具输入内容
- 减少可能触发安全规则的描述
- 必要时切换模型
参数校验错误
HTTP 400 — invalid_params
当请求参数未通过校验时返回。具体场景如下:
| 错误信息 | 原因 | 解决方法 |
|---|---|---|
Parameter model is required | 缺少 model 字段或值为空 | 在请求体中添加有效的 model 值 |
Model \{model\} is not valid | 指定的模型标识不存在 | 查阅模型列表获取有效模型名称 |
Parameter messages is required | 缺少 messages 字段 | 在请求体中包含 messages 数组 |
Parameter messages can not be empty | messages 为空数组 | 至少提供一条消息 |
Parameter messages can not contain null elements | messages 中存在 null 元素 | 移除消息数组中的 null 项 |
Parameter messages can not contain elements without content | 消息对象缺少 content 字段 | 确保每条消息都包含 content 值 |
Parameter stream_options is not supported while stream is false | 设置了 stream_options 但 stream 为 false 或未设置 | 设置 stream: true 或移除 stream_options |
Parameter n grater than 1 is not supported | n 值大于 1 | 将 n 设为 1 或不传该参数 |
Parameter temperature is not valid | temperature 为负数 | 使用 ≥ 0 的 temperature 值 |
Parameter stream_options.include_usage conflict with usage.include | stream_options.include_usage 与 usage.include 取值冲突 | 仅使用其中一个参数 |
Parameter include_reasoning conflict with reasoning.exclude | include_reasoning 与 reasoning.exclude 冲突 | 仅使用其中一个参数 |
Parameter type of provider.routing is not valid | Provider 路由类型无效 | 参阅 Provider 路由文档 |
Parameter providers of provider.routing is not valid | Provider 路由列表为空 | 指定至少一个 Provider |
HTTP 413 — invalid_params(提示词过长)
- 减少
messages数组中消息的数量或长度。 - 考虑使用支持更大上下文窗口的模型。
- 对较早的对话轮次进行摘要,而不是包含完整历史。
HTTP 422 — provider_unprocessable_entity_error
原因: 请求在平台侧通过,但上游模型服务商无法处理该请求,通常是上游模型服务商对字段结构、工具、格式化输出或多模态输入有更严格要求。
排查步骤:
- 查看响应中
message字段的具体描述。 - 检查所有参数是否与所选模型兼容。
- 移除可选/高级参数后用最小请求重试。
计费与订阅错误
HTTP 402 — insufficient_credit(账户欠费)
- 前往 ShuYou 计费页面 充值。
HTTP 402 — reject_no_credit(余额不足)
- 充值账户余额。
- 切换到允许低余额访问的模型或套餐
HTTP 402 — quote_exceeded(订阅配额用尽)
- 等待刷新 — 配额会在滚动时间窗口内自动恢复。
- 升级计划 — 切换到更高级别的订阅以获得更大配额。
- 按量付费 — 创建 Pay-As-You-Go API Key,享受无限量使用(按 Token 计费)。
模型可用性错误
HTTP 404 — model_not_available(模型不在订阅计划中)
- 查阅订阅指南确认当前计划支持的模型列表。
- 升级订阅计划以包含目标模型。
- 使用 Pay-As-You-Go API Key 访问计划外的模型。
HTTP 404 — invalid_model(模型不存在)
原因: 指定的模型标识与所有已知模型均不匹配。
排查步骤:
- 检查模型名称是否有拼写错误。
- 参考模型列表获取有效的模型标识。
HTTP 404 — model_not_supported(模型不支持该 API)
原因: 模型存在但不支持当前调用的接口。
排查步骤:
- 查看模型详情页面确认其支持的 API 接口。
- 切换到支持当前接口的模型。
限流错误
HTTP 429 — rate_limit
- 降低请求频率 — 在请求之间添加延迟或使用指数退避策略。
- 分散高峰调用
服务端与上游错误
HTTP 500 — internal_server_error(平台内部错误)
原因: 服务器发生意外错误,可能由以下情况导致:
- 平台的瞬时故障。
- 上游错误被平台统一收敛为内部错误。
- 退避重试 — 大多数 500 错误是瞬时的,使用指数退避重试即可。
- 持续复现时提供响应头中的
X-ShuYou-RequestId联系支持。
HTTP 500 — provider_error、provider_api_error
原因: 表示请求已经到达上游,大概率是上游供应商出现了问题。
排查步骤:
- 退避重试
- 持续复现时提供响应头中的
X-ShuYou-RequestId联系支持。
HTTP 502 — no_provider_available — 上游服务商不可用
原因: 当前没有可用的上游服务商处理请求,可能由以下情况导致:
- 参数所指定的供应商不存在。
- 该模型所有配置的上游服务商均出现故障。
- 多次重试后所有服务商均失败。
- 放宽或取消指定供应商的规则。
- 短暂等待后重试。
流式请求特殊情况
使用stream: true 时,错误的表现形式可能有所不同:
流中错误
如果在流式传输开始后发生错误,不会统一回退成标准 JSON 错误体返回,流将终止或流内补发失败事件。 客户端在流式场景下应同时具备:- HTTP 状态码判断
- 事件流完整性判断
- 业务结束标志判断
- 流中错误事件解析能力
SSE 保活注释
在长时间运行的请求中,您可能会收到如下 SSE 注释:: 开头的行。
流中断
如果客户端主动断开连接(如取消请求),服务端将清理进行中的流并释放资源。客户端主动中断不会产生错误响应。错误处理最佳实践
- 始终根据
type字段进行程序化处理 —type用于代码逻辑判断,message仅用于展示。 - 对可重试错误实现重试逻辑:
- 保存响应头中的
X-ShuYou-RequestId— 联系技术支持时附上此 ID 可加速问题定位。 - 妥善处理流式响应 — 使用
stream: true时,始终处理不完整响应和连接中断的情况。 - 使用指数退避重试 — 重试时逐步增加间隔(如 1s → 2s → 4s → 8s),并加入随机抖动以避免”惊群效应”。
常见问题
Q:账户明明有余额,为什么还会收到 402 错误? A:请区分 API Key 类型。订阅类 API Key 有独立的配额限制,与账户余额是两套机制。订阅配额耗尽时即使余额充足也会返回 402(quote_exceeded)。建议检查:
- 当前订阅计划的配额使用情况
- 是否使用了正确类型的 API Key
model_not_available。解决方案:
- 查阅订阅计划的模型清单
- 升级到包含目标模型的计划
- 使用 Pay-As-You-Go API Key 按量访问
- 实现自动重试机制(带指数退避)
- 如果错误率持续偏高,请联系技术支持
X-ShuYou-RequestId 提供给技术支持团队。
Q:流式请求中途收到 ShuYou PROCESSING 是什么意思?
A:这是 SSE 保活注释(以 : 开头),每 10 秒发送一次,表示请求仍在处理中。这不是错误,您的 SSE 客户端应按规范自动忽略注释行。