快速开始
提交任务时,在请求体里加一个webhook 字段:
你的地址 + /callback 发一个 POST 请求。
视频、音频等其它异步任务接口同理,都是在提交体里加
webhook 字段。地址规则
你填的webhook 是基础地址(base),我们会自动在后面拼 /callback:
所以你的服务端需要准备一个接收
POST .../callback 的接口。
你会收到什么
推送内容和「获取任务状态」接口返回的完全一致——你用同一套解析逻辑处理即可。视频任务结果在
result.videos,音频在 result.audios。重试与去重(重要)
- 重试:如果你的服务端没在约 10 秒内返回
2xx,或返回了5xx,我们会自动重试,最多 3 次,间隔约 10 秒、30 秒、60 秒。3 次都失败就放弃(约 2 分钟内结束)。 - 不重试的情况:你的接口返回
4xx(视为地址 / 请求有问题),我们直接放弃,不重试。 - 去重:正常情况下一个任务只推一次。但在极端情况下(如我们这边发送后、确认前发生重启)你可能收到重复推送。请务必按
id(task_id)做幂等去重,避免重复处理。
1
尽快返回 2xx
先收下、入队,再异步处理,别让我们等你处理完。
2
按 id 去重
以
id(task_id)作为幂等键,避免重复处理。3
配置并校验签名
在生产环境对回调请求做来源校验,拒绝伪造请求。
对回调地址的要求
为安全起见,回调地址必须满足:
不满足要求的地址会被直接丢弃(不会推送、也不会重试)。
常见问题
提交了带 webhook 的任务,但没收到推送?
提交了带 webhook 的任务,但没收到推送?
逐项排查:
- 任务是否真的完成了?查一下任务详情,
status是不是completed/failed(处理中不推)。 - 你的地址是不是公网可访问?我们能不能连上你的
/callback? - 端口是不是标准端口(80 / 443)?非标端口可能被安全策略拦掉。
- 你的
/callback是不是及时返回了 2xx?返回 4xx 会被直接放弃。 - 用
https了吗?证书是否有效?
收到的 result 里 url 怎么是个数组?
收到的 result 里 url 怎么是个数组?
部分模型一次会出多张图,
images[].url 可能是数组,按数组处理即可。结果链接有有效期吗?
结果链接有有效期吗?
result 里若带 expires_at(Unix 时间戳),表示该链接的过期时间,请及时转存。会推送「处理中」的状态吗?
会推送「处理中」的状态吗?
不会。只在任务最终成功或失败时推送一次。
最小接收端示例
Python
200,处理逻辑放后台异步做。