查询视频生成任务状态(豆包原生格式)
提交 Seedance 2.0 豆包原生任务后,使用任务 id 查询生成状态。任务成功后,视频地址会出现在 content.video_url 中。
重要提示 (关于 New API / One API 兼容性)
New API / One API 平台目前不支持此原生格式接口。 如果你的接口是通过 New API、One API 等中转分发平台进行管理的,请勿调用本接口(会导致请求路由失败),请改为使用 OpenAI 兼容格式:查询 OpenAI 兼容任务状态。
接口信息
| 项目 | 值 |
|---|---|
| 方法 | GET |
| 路径 | /api/v3/contents/generations/tasks/{task_id} |
| 示例地址 | https://api.gemai.cc/api/v3/contents/generations/tasks/task_abc123def456 |
| 鉴权 | Authorization: Bearer sk-你的令牌 |
请求示例
bash
curl --location 'https://api.gemai.cc/api/v3/contents/generations/tasks/task_abc123def456' \
--header "Authorization: Bearer $GEMAI_API_KEY"状态说明
text
pending -> processing -> succeeded
\-> failed| 状态 | 含义 | 处理方式 |
|---|---|---|
pending | 任务已提交,等待调度 | 继续轮询 |
processing | 正在生成视频 | 继续轮询 |
succeeded | 生成成功 | 读取 content.video_url |
failed | 生成失败 | 查看 error.message 并修改请求后重试 |
成功返回
json
{
"id": "task_abc123def456",
"model": "doubao-seedance-2-0-260128",
"status": "succeeded",
"content": {
"video_url": "https://cdn.volcengineapi.com/videos/output-abc123.mp4"
},
"seed": 42,
"resolution": "720p",
"duration": 5,
"ratio": "16:9",
"framespersecond": 24,
"created_at": 1712345678,
"updated_at": 1712345800
}失败返回
json
{
"id": "task_abc123def456",
"model": "doubao-seedance-2-0-260128",
"status": "failed",
"error": {
"code": "content_policy_violation",
"message": "内容违反了内容安全策略,请修改 prompt 后重试"
},
"created_at": 1712345678,
"updated_at": 1712345700
}轮询示例
javascript
const apiKey = process.env.GEMAI_API_KEY
const taskId = 'task_abc123def456'
async function getTask() {
const response = await fetch(
`https://api.gemai.cc/api/v3/contents/generations/tasks/${taskId}`,
{
headers: {
Authorization: `Bearer ${apiKey}`,
},
},
)
if (!response.ok) {
throw new Error(`查询任务失败:${response.status} ${await response.text()}`)
}
return response.json()
}
for (let index = 0; index < 120; index += 1) {
const result = await getTask()
if (result.status === 'succeeded') {
console.log('视频地址:', result.content?.video_url)
break
}
if (result.status === 'failed') {
throw new Error(result.error?.message || '视频生成失败')
}
await new Promise((resolve) => setTimeout(resolve, 5000))
}python
import os
import time
import requests
api_key = os.environ["GEMAI_API_KEY"]
task_id = "task_abc123def456"
for _ in range(120):
response = requests.get(
f"https://api.gemai.cc/api/v3/contents/generations/tasks/{task_id}",
headers={"Authorization": f"Bearer {api_key}"},
timeout=120,
)
response.raise_for_status()
result = response.json()
if result["status"] == "succeeded":
print("视频地址:", result.get("content", {}).get("video_url"))
break
if result["status"] == "failed":
raise RuntimeError(result.get("error", {}).get("message", "视频生成失败"))
time.sleep(5)轮询建议
- 建议每
5秒查询一次,不要高频轮询。 - 总超时建议设置为
10分钟左右。 - Seedance 2.0 通常在
1-3分钟内完成,复杂多模态任务可能更久。 - 查询时请使用提交接口返回的
id,不要自行拼接或修改任务 ID。