错误与重试
错误以 JSON 形式返回,包含稳定的、机器可读的 error 码和匹配的 HTTP 状态。
{ "error": "rate_limited", "message": "Too many requests.", "retry_after_ms": 850}| HTTP | error | 是否重试? | 说明 |
|---|---|---|---|
| 400 | invalid_request | 否 | 某个参数未通过校验 —— 请修复请求。 |
| 401 | missing_api_key / unknown_api_key | 否 | 参见 认证。 |
| 403 | inactive_api_key / account_blocked | 否 | 密钥已禁用或账户已暂停。 |
| 402 | insufficient_credits | 否 | 请充值。正文包含 required 和 balance。 |
| 429 | rate_limited | 是,等待 retry_after_ms 后 | 你超出了每分钟限制。 |
| 409 | request_in_progress | 是 | 一个完全相同的幂等请求仍在运行。 |
| 422 | (幂等性冲突) | 否 | 一个 Idempotency-Key 被以不同的正文重复使用。 |
| 503 | service_temporarily_unavailable / too_many_concurrent_requests | 是,配合退避 | 临时性容量限制。 |
| 504 | result_timeout | 是 | 上游抓取超出了 deadline_ms。 |
- 使用指数退避重试 429 / 503 / 504 / 409。当存在
retry_after_ms时,至少等待 那么长时间再重试。 - 切勿重试 400 / 401 / 402 / 403 —— 在你修改请求之前,请求不会成功。
- 官方 SDK 已经会为你重试临时性错误(默认 2 次重试),并在错误对象上暴露一个
retryable标志。