SolveHub

验证码 API 的 402、429、503 错误处理

区分余额不足、请求限额与服务故障,结合 Retry-After 和固定幂等键进行有上限的重试。

适用于授权自动化测试、风控 QA 与浏览器集成。请仅在有权测试的站点和业务流程中使用。

同时读取 HTTP 状态和错误码

平台错误体使用 {"error":"CODE"},X-Request-ID 响应头用于定位请求。可在本地与 taskId 一起保存,不要在公开日志中分享凭据或完整任务载荷。

响应 含义与下一步
400 INVALID_TASK 修正字段与类型;重试不能修好错误 JSON。
401 / 403 检查 Key 有效期、权限、IP 限制与账户状态。
402 INSUFFICIENT_BALANCE 可用余额不足,充值前也要考虑已有预占。
409 IDEMPOTENCY_CONFLICT 对比原始键与完整请求体。
429 降低请求频率或并发,遵守 Retry-After。
503 TYPE_UNAVAILABLE 查询实时可用性,不持续冲击停用类型。
503 DATABASE_BUSY 使用原键与请求体重试,提交结果可能需要核对。

不同限额需要不同处理

KEY_CONCURRENCY_LIMIT 表示要等待已有任务结束。KEY_SPEND_LIMIT 是滚动消费限制,密集重试不会恢复容量。KEY_QUOTA_EXHAUSTED 是 403 总额度限制,与临时 429 不同。完整信息见 API 错误表。

有上限地重试

只重试网络故障、适合等待的限流与可重试服务端故障。遵守 Retry-After(秒数或 HTTP 日期),限制次数;所需等待超过客户端预算就停止。POST 保持原始请求体与幂等键;GET 继续查同一个 ID。

任务失败属于另一个层面

查询任务可能返回 HTTP 200,但 status=failed 或 status=uncertain。检查状态及公开错误,不只看 HTTP 码。failed/cancelled 结束流程;uncertain 需要核对且可能仍预占资金。添加自动重试前先阅读安全轮询。

相关文档

从 cURL 开始接入 注册账户

最近更新: