错误与重试
对创建接口、任务轮询和 webhook 接收端分别采用不同的错误处理与重试策略。
创建接口如何重试
如果遇到这些情况,可以重试:
- 请求超时
- 网络中断
- 服务端返回可重试
5xx
重试时继续沿用原来的 Idempotency-Key。
通用错误结构与处理
{"error":{"code":"invalid_request","message":"..."}}| HTTP | 常见 code | 建议 |
|---|---|---|
400 | invalid_request、quote_error | 修正模型或参数,不要原样重试 |
401 | unauthenticated | 检查 Bearer API Key |
402 | insufficient_credits | 充值或等待授权积分释放;可读取 X-Yeehoo-Balance |
403 | scope_forbidden | 给 Key 补正确 Scope,或更换 Key |
404 | model_not_found、task_not_found | 检查 ID 及 Key 所属团队工作空间 |
409 | idempotency_conflict | 不同请求体必须换新幂等键 |
409 | idempotency_in_progress | 按 Retry-After 等待后使用同一 Key 重试 |
429 | rate_limit | 退避重试,优先读取 Retry-After |
5xx | 服务异常 | 使用同一幂等键进行有限次数退避重试 |
什么情况不要盲目重试创建
这些情况要先看业务错误,而不是直接无限重试:
- 模型参数不合法
- 权限或余额不足
- 输入内容不符合要求
轮询接口如何处理错误
轮询失败要区分两类:
- 接口调用失败:继续轮询
- 任务本身失败:看错误内容决定是否重新提交任务
Webhook 接收端如何处理错误
如果你的接收地址返回非 2xx,Yeehoo 会按重试策略继续投递,直到达到最大尝试次数。
接收端建议做到:
- 验签失败:返回非
2xx - 业务已成功入队:尽快返回
2xx - 不要在 webhook 请求里做长时间阻塞处理