错误处理
错误返回的格式、常见状态码和重试建议。
先看 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)再重试,避免重复执行。支持幂等键的接口在文档的请求头参数里写明了。