查询接口与鉴权
GET https://top.qingyuntop.ai/v1/responses/{response_id}
请求头:Authorization: Bearer YOUR_API_KEY。把 response_id 换成创建响应的 resp_… ID;下载使用 metadata.task_id,两者不可互换。
返回状态
| 状态 | 处理 |
|---|---|
| queued / in_progress | 继续等待,建议每 10 秒查询一次。 |
| completed | 从 metadata.task_id 取得公共视频任务 ID 并下载。 |
| failed | 检查 error,修正请求后再创建。 |
| incomplete(SSE 观察结果) | 本次观察未完成,使用 Response ID 继续 GET。 |
完成结果的 output 中会有 message,content 的 output_text 含视频预览标签。它不是 MP4 字节;下载不需要解析 HTML。Responses usage 可能为空或是兼容用量,不作为视频账单依据。
{
"id": "resp_doubao_example",
"object": "response",
"status": "completed",
"metadata": {
"task_id": "task_doubao_example",
"vendor": "doubao"
},
"output": [
{
"type": "message",
"role": "assistant",
"status": "completed",
"content": [
{
"type": "output_text",
"text": "<video controls src=\"https://example.com/video-preview\"></video>"
}
]
}
]
}后台查询与下载代码
在创建示例取得 ID 后执行。Python 需 requests;Node.js 使用 22+ .mjs。默认保存 MP4,选择 mov 时更改文件后缀。
curl --fail-with-body "https://top.qingyuntop.ai/v1/responses/resp_doubao_example" \
-H "Authorization: Bearer YOUR_API_KEY"
curl --fail-with-body "https://top.qingyuntop.ai/v1/videos/task_doubao_example/content" \
-H "Authorization: Bearer YOUR_API_KEY" \
-o doubao-video.mp4同步模式
创建请求设置 background: false、stream: false,其他字段不变。请求等待模型结果,但不能保证整个生成过程在一次 HTTP 连接内完成。观察超时可能返回 queued,继续用 id 查询,不要再次提交同一个 POST。
SSE 流式模式
在创建请求设置 stream: true;HTTP 返回 Content-Type: text/event-stream。SSE 传输任务进度与完成文本,视频仍在任务完成后下载。下面显示原始事件,接入应用时根据 event 名与 data JSON 更新进度;多行 data 需按 SSE 规范拼接。
curl --fail-with-body -N --max-time 1800 "https://top.qingyuntop.ai/v1/responses" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"doubao-seedance-2-5-260628","input":"猫走过雨后屋顶,镜头缓慢推进。","seconds":5,"metadata":{"resolution":"720p","ratio":"16:9"},"stream":true,"background":false}'常见事件为 response.created、response.in_progress、response.output_item.added、response.content_part.added、response.output_text.delta、response.output_text.done、response.content_part.done、response.output_item.done、response.completed;错误或观察超时分别可能为 response.failed 或 response.incomplete。请按这些 SSE 事件名处理,不要使用 progress/output 作为事件名。收到 response.created 后保存 Response ID,连接断开仍可继续 GET 查询。
错误处理
| 情况 | 处理 |
|---|---|
| 401 / 403 | 检查青云 Key、访问权限和模型分组。 |
| 创建 400 | 检查模型参数、角色、时长和清晰度;2.5 编辑必须 duration=-1、ratio=adaptive。 |
| 404 | 核对 ID 类型、所属账号与完整路径;不要给任务列表旧接口补参数。 |
| 429 或查询 5xx | 延迟重试 GET,增加轮询间隔,不要重发 POST 创建。 |
| InvalidParameter.TaskTypeConstraint / TaskTypeMismatch | 核对 2.5 的任务类型、素材和提示词是否一致。 |
| 素材无法读取 | 使用直达文件的 HTTPS URL 或完整图片 data URL,确保无登录限制、未过期。 |
| artifact_not_found 或下载失败 | 确认任务成功且存在 content.video_url;上游链接过期时内容代理也无法恢复。 |
创建请求超时且没有 ID 时先检查任务日志。本文未约定幂等键行为,不应自动重复 POST。失败后修正参数再提交新任务。
官方说明视频 URL 通常有效 24 小时,2.5 视频下载有次数限制,成功后及时保存;这不是青云永久存储承诺。