指南

异步媒体任务:提交、查询与结果验收

预览指南

粘贴给 AI,帮助理解文档并完成接入。 仅包含文档与示例,不包含真实密钥。

预览指南

异步媒体任务:提交、查询与结果验收

直接答案使用模型原生任务接口;通用 /async 已停用(410),/get-async 已移除(404)。提交成功后按对应协议查询到终态并验证媒体。

更新 · 审核信息

小白:先选模型的任务协议

从模型广场复制精确模型 ID,使用该模型快速上手中的提交示例。只有响应真正返回任务 ID 时,才进入任务查询流程。HTTP 200 只说明本次 HTTP 请求成功,不表示图片、视频或音频已生成。

已停用的通用包装

/async/* 已停用,鉴权通过后返回 HTTP 410 endpoint_deprecated;/get-async 已移除,返回 404。不要给任意路径加 /async,也不要套用旧的双层任务或 Base64 结果信封。普通同步和 SSE 请求保持原有协议。

提交与查询配对

提交协议查询入口成功 / 失败终态
统一视频或异步图片GET /v1/videos/{task_id}按实际适配器响应解析;常见 completed / failed
FLUX 原生 flux-3-imageGET /flux/v1/get_result?id={task_id}Ready / Error
Suno v2GET /suno/v2/fetch/{task_id}data.status: SUCCESS / FAILURE
KlingGET /kling/v1/{category}/{kind}/{task_id}data.status: SUCCESS / FAILURE
MidjourneyGET /mj/task/{task_id}/fetchstatus: SUCCESS / FAILURE

Kling 的 category、kind 和 Midjourney 模式前缀须与提交对应。不同协议的 ID、响应字段与状态大小写不能混用。查询应使用创建任务账号及相应权限的 Key。

查询与下载示例

下面只查询已创建的 FLUX 任务,不会再次发起生成:

curl --fail-with-body "$BASE_URL/flux/v1/get_result?id=$TASK_ID" \
  -H "Authorization: Bearer $API_KEY"

Pending 表示继续等待;Ready 后读取 result.sample 下载图片;Error 表示生成失败,应记录 error 并停止轮询。视频内容入口为 GET /v1/videos/{task_id}/content,成功响应是媒体字节,不能按 JSON 解析。结果链接和保存期依实际协议与存储配置,完成后及时保存。

退避、超时与计费

以 1、2、4、8 秒等间隔退避,设置最大间隔和总截止时间。连接超时可能发生在上游接受请求之后,不能自动重复提交。保存任务 ID 和请求 ID;没有任务 ID 时可按请求 ID 查消费日志。预扣和结算不等于生成成功。

专家:结果恢复与排障

GET /v1/images/generations/result?request_id=... 用于恢复图片请求的已保存链接,不是通用任务查询。processing_or_not_found 不能区分处理中、记录不存在、无权访问或无可恢复链接,不能据此无限轮询或重发。成功验收必须确认终态、结果字段和实际可读取媒体;仅有任务 ID 不算成功。

适用场景

  • 长耗时媒体与批处理请求
  • 避免客户端连接超时并可靠取得结果

API 协议

  • /v1/videos
  • /v1/videos/{task_id}
  • /flux/v1/get_result
  • /suno/v2/fetch/{task_id}

常见问题

还能给请求加 /async 吗?

不能,旧接口返回 410;选择该模型原生任务协议。

查询返回 200 就完成了吗?

不能只看 HTTP 状态,须确认任务成功终态并验证媒体。

超时后能重发吗?

先查已有任务和请求日志,避免创建重复收费任务。

官方来源

  1. OpenAI API Reference 官方
  2. Gemini API Errors 官方
  3. Claude API Errors 官方