429 与 5xx 下的预期行为,供客户端实现轮询逻辑时参考。
适用范围
GET /v1/videos/:task_idGET /kling/v1/videos/:action/:task_idGET /kling/v1/images/:action/:task_idGET /vidu/ent/v2/tasks/:task_id/creationsGET /minimax/v1/query/video_generationGET /minimax/v2/query/video_generation/:task_idGET /byteplus/api/v3/contents/generations/tasks/:id
429 Too Many Requests
- 语义:临时性限流(请求频率、并发或分组负载),不代表任务失败。
Retry-After:baze平台保证所有429响应都携带Retry-After响应头,值为整数秒(默认5)。如果下游处理已显式设置该头,则保留下游的值。- 客户端预期处理:
- 读取
Retry-After,等待该秒数后再发起下一次查询。 - 不要将
429视为任务终态,也不要计入”任务失败”次数。 - 若未读取到
Retry-After(例如经过不透明代理被剥离),按默认5秒退避。
- 读取
5xx 内部错误 / 网关错误 / 服务不可用
- 语义:平台或上游渠道的临时故障。任务可能仍在上游正常执行,也可能已经失败,不能从
5xx直接推断任务终态。 - 预期处理:快速失败或有限重试,不要无限重试。
- 建议采用指数退避(例如
5s、10s、20s…上限60s)。 - 设置最大重试次数或总时长;超过阈值后中断本次轮询并向用户给出明确错误,保留
task_id,待服务恢复后可继续查询。 - 不要因为没有拿到
status字段就当作”仍在排队”无限重试。
- 建议采用指数退避(例如
- 响应体约定:异步任务查询接口在
5xx时仍会返回 JSON 响应体,并附带status标识与错误信息,用于区分”接口本身出错”与”任务正常排队”,例如:
Retry-After:异步任务查询接口在5xx时也会返回Retry-After(默认5秒),但该头仅对429做全局保证,客户端不应依赖5xx一定带此头。
其他 4xx
除429 外的 4xx(如 task_not_exist、参数错误、鉴权失败)属于确定性错误,应停止轮询并按错误信息处理。