Webhook 回调
对外 API 当前支持任务终态 webhook 回调;它是通知机制,不替代任务查询接口。
当前 webhook 第一版只推送终态事件:
task.completedtask.failed
不会推送什么
当前不会推送:
- 任务刚创建
running进度增量- 中间态心跳
也就是说,任务开始时不会回调,只有任务最终成功或失败时才会回调。
推荐使用方式
建议这样理解 webhook:
- 它负责“通知你任务结束了”
- 它不负责替代任务查询成为唯一状态源
最稳妥的做法是:
- 接收 webhook
- 验签
- 记录通知
- 如有必要,再调用一次
/v1/tasks/{task_id}做最终确认
验签
签名规则:
HMAC-SHA256(secret, "{timestamp}.{raw_body}")请求头:
X-Yeehoo-EventX-Yeehoo-TimestampX-Yeehoo-SignatureX-Yeehoo-Delivery-ID
重试策略
当前服务端投递策略是:
- 超时:5 秒
- 最大尝试次数:5 次
- 退避:立即、30 秒、2 分钟、10 分钟、1 小时
接收方建议
- 保留原始 body 做验签
- 校验时间戳
- 使用
id或X-Yeehoo-Delivery-ID做幂等 - 先快速回
2xx,再异步处理内部业务
什么时候应该优先接 webhook
更推荐这些场景尽快接入 webhook:
- 视频任务
- 批量图片生成
- 需要服务端异步编排
- 业务不想长期轮询