功能与接口
| 操作 | 请求 |
|---|---|
| 查询 | GET https://top.qingyuntop.ai/v1/videos/{task_id} |
| 下载视频 | GET https://top.qingyuntop.ai/v1/videos/{task_id}/content |
鉴权与任务 ID
每次查询与下载携带 Authorization: Bearer YOUR_API_KEY。用创建响应返回的原始 ID 替换示例;不要使用控制台登录令牌或供应商任务 ID。
返回状态与字段
| 字段/状态 | 含义 |
|---|---|
| id | 青云视频任务 ID,创建与查询保持一致。 |
| object | video。 |
| model | 原始请求模型名称。 |
| queued | 排队中。 |
| in_progress | 生成中。 |
| completed | 成功,可以下载。 |
| failed | 失败;error 可能有 message、code。 |
| progress | 百分比数值,是阶段进度,不是精确剩余时间。 |
示例:
{
"id": "task_doubao_example",
"object": "video",
"model": "doubao-seedance-2-5-260628",
"status": "completed",
"progress": 100
}统一查询输出视频对象,不包含豆包原始 content 或 usage。需要查看尾帧、上游错误或用量时,可用同一个公共 task ID 请求豆包格式查询。部分失败可能只有 failed 状态而没有 error,应同时检查任务日志。
查询和下载代码
Python 需安装 requests,Node.js 使用 22+ .mjs。cURL 是分步操作;Python 与 Node.js 会自动轮询。示例默认生成 MP4;若创建时选 mov,将保存文件名改为 .mov。
curl --fail-with-body "https://top.qingyuntop.ai/v1/videos/task_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.mp4HTTP 报错时示例会退出并显示错误。达到等待时间只结束本地等待,不取消服务端任务,可保留 ID 继续查询。content 接口返回视频字节,不是 JSON;尾帧请从豆包查询的 content.last_frame_url 获取。
错误处理
| 情况 | 处理 |
|---|---|
| 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 视频下载有次数限制,成功后及时保存;这不是青云永久存储承诺。