跳转到主要内容
所有错误使用同一结构,兼容 OpenAI SDK 的错误处理。请根据 error.code 分支处理,不要依赖 HTTP 状态码或文案。
对话补全、Responses 和 Embeddings 的错误会带上 request_id,同时通过 X-Request-ID 响应头返回。请保存它:支持人员凭它定位单次调用。控制台用量日志始终显示汇总和图表;客户账户默认不显示逐条请求列表,需要核查某次调用时,请把请求 ID 发给 support@omnirelay.ai。 请求参数错误会在可定位时返回 error.param,例如 temperature 或 reasoning.effort;此字段只包含参数名,不包含参数值。请同时核对模型能力与推理强度组合限制。Responses 返回原生参数名。平台预算/协议校验发生在发送前;模型服务方以 HTTP 400 或 422 拒绝请求时释放预留、不收费;能识别的错误码和安全字段路径会返回,否则返回 invalid_parameter。部分模型会忽略不支持的字段而不报错,这类调用正常成功,不返回 error.param。
流式响应在 HTTP 200 之后失败时,会在最后一个 data: 事件中返回同样的 error 对象(对话补全),或返回带 code 和 message 的 error 事件(Responses),且不会以 [DONE] 结束。

错误码

模型服务方错误(upstream_*)

这些错误码表示调用已到达模型服务方,并在服务方侧出错。是否收费取决于模型输出是否已经送达你:
  • 尚未送达任何输出:预留立即释放,不收费。非流式调用、以及在首个输出前失败的流式调用都属于这种情况。
  • 已送达部分输出(流式中途断开),或模型服务方的回答已到达但无法核验:调用转入人工核对,按模型服务方用量记录结算。不要自动重发;预留长时间未释放时,携请求 ID 联系支持。
upstream_rate_limited(429)见上表:它是处理前的拒绝,从不收费。 耗时超过约 25 秒的图片调用会在完成前先返回 200,因此上述错误也可能作为 200 响应的 JSON 正文返回,请先检查解析后的正文中是否有 error。

重试建议

真实推理不能仅凭 HTTP 状态判断是否收费,请关闭 SDK 自动重试,并按 error.code 决定:
  • 标明不收费的错误码(全部 4xx 拒绝、upstream_rejected、channel_unavailable、runtime_maintenance)可以重试;rate_limited、concurrency_limited 和 upstream_rate_limited 请退避后重试。
  • upstream_transport_error、upstream_timeout 和流式相关错误码,对非流式调用或尚未送达输出的流式调用不收费,可以重试。
  • 转入核对的错误码,或已送达部分输出后断开的流式调用,不要自动重发;需要确认结果时,检查余额并携请求 ID 联系支持。
Python