你需要准备什么
你必须保留创建响应中的 id,并继续使用创建任务时的青云TOP API Key。查询和下载地址是:
| 操作 | 方法与地址 | 返回内容 |
|---|---|---|
| 查询 | GET https://top.qingyuntop.ai/v1/videos/{task_id} | JSON 视频任务对象 |
| 下载 | GET https://top.qingyuntop.ai/v1/videos/{task_id}/content | 视频字节(通常为 MP4) |
不要把 Google operation name 当作青云任务 ID,也不要把旧 /v1/video/generations 任务混用到标准 /v1/videos 路由。
状态判断
status | 含义 | 客户端动作 |
|---|---|---|
queued | 已接收,等待处理 | 约 10 秒后继续查询 |
in_progress | 正在生成 | 继续查询,不要重复创建 |
completed | 已完成 | 请求 /content 下载 |
failed | 生成失败 | 停止轮询,查看任务日志 |
HTTP 200 只表示本次查询成功,必须以 status 判断任务是否完成。progress 是生成进度提示,不应当用来推算准确剩余时间。
查询代码示例
把 task_veo_example 替换为创建响应中的 id。下面的代码只查询已有任务,不会创建新视频。
curl --fail-with-body \
https://top.qingyuntop.ai/v1/videos/task_veo_example \
-H "Authorization: Bearer YOUR_API_KEY"下载代码示例
只有 status 为 completed 后才下载。下载响应是视频字节,不要调用 response.json()。
curl --fail --location \
https://top.qingyuntop.ai/v1/videos/task_veo_example/content \
-H "Authorization: Bearer YOUR_API_KEY" \
--output veo-output.mp4自动等待并保存
正常轮询间隔约 10 秒;示例在收到 429 或 5xx 时延迟 30 秒重试,生产程序还应遵循 Retry-After。客户端等待超时不代表服务端取消,仍应使用原任务 ID 继续查询。Google 官方提到生成可能需要约 11 秒到 6 分钟,排队时可能更久。Bash/cURL 需要 jq,Python 需要 requests,Node.js 使用 22+ 并保存为 .mjs。
set -e
task_id="task_veo_example"
for attempt in $(seq 1 90); do
http_code=$(curl -sS -o task.json -w '%{http_code}' \
"https://top.qingyuntop.ai/v1/videos/$task_id" \
-H "Authorization: Bearer YOUR_API_KEY")
case "$http_code" in
429|5??) sleep 30; continue ;;
2??) ;;
*) cat task.json; exit 1 ;;
esac
status=$(jq -r '.status' task.json)
case "$status" in
completed)
curl --fail --location \
"https://top.qingyuntop.ai/v1/videos/$task_id/content" \
-H "Authorization: Bearer YOUR_API_KEY" --output veo-output.mp4
exit 0 ;;
failed) echo "任务失败,请查看控制台任务日志"; exit 1 ;;
queued|in_progress) sleep 10 ;;
*) cat task.json; echo "无法识别状态,请保留任务 ID 联系支持"; exit 1 ;;
esac
done
echo "等待超时,请保留任务 ID 稍后查询"
exit 1下载返回 artifact_not_found 时,请按任务状态与错误检查。即使任务已是 completed,也应检查下载请求是否成功,再将响应保存为视频文件。
旧程序的兼容接口
旧程序可能使用 POST /v1/video/generations 和 GET /v1/video/generations/{task_id}。它的状态可能是 processing、succeeded、NOT_START、IN_PROGRESS 或 SUCCESS,响应也可能包在 data 中;它没有对应的 /content 下载路由。新项目请使用本页的 /v1/videos 三步流程。Apifox 中的 /v1/video/create 与 /v1/video/query?id=... 在当前基础地址上会返回 Invalid URL。