如果你的系统能接 HTTPS 回调,Kling 任务流优先推荐 callback_url + task_id 持久化,轮询只作为兜底。
开启 callback 的最小步骤
在创建接口里传 callback_url
绝大多数异步 Kling 创建页都支持 callback_url。第一次接入时,优先传一个公网可访问的 HTTPS 地址。
同时保存 task_id 和业务键
不要只依赖回调体做关联。创建成功时就把 task_id、你自己的订单号或 external_task_id 一起存下来。
收到回调先快速返回 2xx
先确认平台知道你已收到消息,再把真正的入库、转存、通知下游这些慢操作丢到异步处理。
按任务类型读取 task_result
图像任务通常看 images,视频任务看 videos,音频任务看 audios。不要假设所有任务都返回同一组字段。
回调体里最关键的字段
task_id:和创建时保存的任务主键对应。
task_status:决定当前任务是否已经进入终态。
task_status_msg:失败时优先读它。
task_result:真正的结果对象,结构会随任务类型变化。
task_info.external_task_id:适合拿来和你的业务订单做关联。
不要把 task_result 里的某一个字段硬编码成所有任务都必返。不同能力可能还会额外带 parent_video、final_unit_deduction 等任务特有字段。
什么时候仍然要保留查询接口
- 你在本地开发,暂时没有公网可回调地址。
- 某次回调丢失后,你需要主动补查一次最终状态。
- 你希望在后台任务列表里支持人工刷新与重新获取结果。
相关页面
通用查询任务
大多数两段路径任务都可以用这一页兜底查询。
Omni 专用查询
Omni Video 更适合单独拆一条查询逻辑。
Kling 官方 Callback 协议
需要对照上游字段时看这一页。
回调体示例
{
"task_id": "task_xxx",
"task_status": "succeed",
"task_status_msg": "",
"created_at": 1722769557708,
"updated_at": 1722769557708,
"final_unit_deduction": "10",
"task_info": {
"external_task_id": "order_20260312_001",
"parent_video": {
"id": "video_xxx",
"url": "https://example.com/parent-video.mp4",
"duration": "5"
}
},
"task_result": {
"images": [
{
"index": 0,
"url": "https://example.com/result-image.png"
}
],
"videos": [
{
"id": "video_result_xxx",
"url": "https://example.com/result-video.mp4",
"duration": "5"
}
],
"audios": [
{
"id": "audio_result_xxx",
"url": "https://example.com/result-audio.mp3",
"duration": "5.0"
}
]
}
}