Skip to main content

错误响应结构

平台 API 失败时会返回错误对象。不同兼容协议可能会保持对应协议的外层形态,但核心字段语义一致。

对外策略

平台采用“默认穿透、证据包装”的错误输出策略。
custom_parameter.public_error_trust_level 可配置为 official 或 trusted_proxy。未配置时默认为 official。
两档都保留可操作的参数约束、内容安全拒绝、普通限流/过载及可信的重试时间。未知错误或 HTTP 5xx 本身不会导致整段文案被替换;无法安全表达的 HTML、异常栈、空消息或纯状态数字才补充简短说明。 例如,供应商的 API key limit reached ... Retry in ~1800s 会说明为上游服务限流,并保留约 1800 秒后重试的建议。供应商分组权限、账号池预算和 deployment 配置失败不会提示客户修改自己的平台 Key 或向供应商充值。重复嵌套的错误 JSON 会提取其中有效的 message,外层公开协议保持。 同步 JSON、SSE 和异步图片失败查询使用相同的分级文案规则。客户任务列表/详情保留完整的安全错误原因,内部原始诊断不因公开投影而回写。异步图片查询采用任务最后关联渠道的当前输出级别,渠道或配置缺失时使用默认 official。

HTTP 状态码

平台包装错误

以下错误由平台稳定包装,避免客户误判为自身权限或看到运营侧供给细节。 其他上游业务错误,例如内容安全、限流、超时、5xx、模型能力不支持、图片尺寸错误、上下文长度错误,第一版默认穿透或清洗后穿透,不强制统一成平台 code/type。

内容安全与生图封控

当上游明确返回内容安全或生图封控原因时,平台会尽量保留客户可理解的语义,让客户知道需要修改输入内容。 平台不会直接暴露上游内部字段,例如: 封控类错误不再默认强制改写为 content_policy_error。如果上游本身返回了清晰的内容安全 type、code 或状态码,平台会优先保留。

no_image_generated 与 usage

Gemini 图像模型可能出现“上游已处理请求、返回 usage,但最终没有生成图片”的结果。此时平台会返回 error.code=no_image_generated。 如果本次请求已经按 prompt/input tokens 完成结算,客户可见响应会附带本次 usage: 如果失败未产生计费 usage,例如本地参数校验失败、额度不足、网络失败或上游未返回 usage,则不会附带 usage。

上游错误脱敏规则

平台会保留排查所需的 request_id,但会对客户响应中的上游细节做安全处理。 不会直接返回给客户的内容包括:
  • 上游 API Key、账号、权限、余额、billing 或 quota 明细
  • 异常栈、内部 RequestID、私有地址、源码路径或网络传输细节;公开 SDK/错误名称在 official 下可保留,trusted_proxy 会清理实现包装
  • 内部渠道、分组、租户、组织或工作区名称
  • 原始 bad response status code、多级 request id 链或未清洗的上游 JSON
如果需要排查,请在工单中提供 error.request_id。平台支持团队可基于该 ID 查看内部链路和上游原始错误。

重试建议

生产环境建议记录 error.request_id、HTTP 状态码、error.code 和 error.type。不要仅依赖 message 做程序分支,因为多数上游业务错误会保留上游语义。