错误处理

错误返回的格式、常见状态码和重试建议。

先看 HTTP 状态码

常见状态码
状态码含义怎么处理
400 / 422请求参数不对,或内容超过长度限制按返回的说明改请求,不要原样重试
401没带密钥、密钥写错或已撤销检查请求头写法和密钥是否有效
402模型服务余额不足,或达到密钥消费上限充值或调整上限后再试
403密钥没有这个接口需要的权限,或账户、店铺状态不允许在管理页给密钥加上权限,或按说明处理
404要找的记录不存在,或不属于这个密钥的账户检查编号
409状态冲突,例如版本号对不上、重复提交先读取最新状态再操作
429调用太频繁按 Retry-After 响应头给出的秒数等待后再试
500 / 502 / 503服务暂时不可用稍后重试,间隔逐次加长

错误返回的格式

模型服务接口:error.code 是固定的错误代码,retryable 说明能不能重试,request_id 用于反馈问题。

模型服务接口
{
  "error": {
    "code": "INSUFFICIENT_BALANCE",
    "message": "余额不足,请充值后再试",
    "request_id": "req_…",
    "retryable": false
  }
}

会员接口:错误说明在 detail 里,多数是带 code 和 message 的对象,少数是一段文字。

会员接口
{
  "detail": {
    "code": "invalid_api_key",
    "message": "API 密钥无效。"
  }
}

商家开放接口、AI 助手接入、平台能力共享和能力网接口:错误说明在 detail 字段,可能是文字或对象;能力网公开接口超限时返回 {"error": "rate_limited", "message": "…"}。

商家开放接口
{
  "detail": "请求太频繁,请稍后再试"
}

示例里的文字只是示意,实际说明以接口返回为准。各接口可能返回的错误见接口文档里每个接口的「返回」部分。

重试建议

  • 只对 429、5xx 和模型服务里 retryable: true 的错误重试;4xx 的其他错误重试也不会成功。
  • 重试间隔逐次加长(例如 1 秒、2 秒、4 秒),最多重试几次;有 Retry-After 时按它等待。
  • 会产生订单、扣费或发布的写操作,要带幂等键(Idempotency-Key)再重试,避免重复执行。支持幂等键的接口在文档的请求头参数里写明了。