Skip to content

查询视频生成任务状态(豆包原生格式)

提交 Seedance 2.0 豆包原生任务后,使用任务 id 查询生成状态。任务成功后,视频地址会出现在 content.video_url 中。

重要提示 (关于 New API / One API 兼容性)

New API / One API 平台目前不支持此原生格式接口。 如果你的接口是通过 New APIOne 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。