Amux
视频

豆包 Seedance 2.0 系列

Doubao Seedance 2.0 / 2.0 Fast 视频生成模型 — 多模态输入(文 / 图 / 视频 / 音频)、首末帧锁定、参考图、原生音频生成;支持火山原生与 amux 通用两种调用方式

豆包 Seedance 2.0 是字节跳动火山方舟(Volcengine Ark)推出的多模态视频生成模型,支持文本、图像、视频、音频四种输入模态混合,最多 9 张图 / 3 个视频片段 / 3 个音频片段。amux-api 同时提供 火山原生端点amux 通用端点 两种创建任务方式,二者共用同一套 获取任务状态 接口。

模型版本

模型 ID定位适用场景
doubao-seedance-2.0标准版画质优先、最终成片,支持 720p / 1080p
doubao-seedance-2.0-fast加速版速度优先、价格更低,适合 prompt 迭代 / 草样。仅支持 720p,不支持 1080p

具体单价见 https://api.amux.ai/pricing

创建视频生成任务

提供两种调用方式,二者共用同一套 获取任务状态 接口:

  • 方式一(火山原生)POST /api/v3/contents/generations/tasks — 与火山官方契约一致,火山原生 SDK 改 base_url 即可使用
  • 方式二(amux 通用)POST /v1/video/generations — 跨厂商统一格式,火山专属字段通过 metadata 透传

方式一:火山原生端点

项目
请求方法POST
完整 URLhttps://api.amux.ai/api/v3/contents/generations/tasks
认证Authorization: Bearer <AMUX_API_KEY>
请求格式application/json
响应格式application/json

amux 网关识别"火山原生格式"的条件:请求体含 content 字段 不含 prompt 字段。同时存在两者会被当作通用格式处理(走方式二的转换链路)。

请求体字段

Prop

Type

ContentItem 元素

content 数组的每个元素是一个 ContentItem,按 type 区分内容形态:

Prop

Type

场景与角色

提交任务可分为以下 4 种场景,含图像的 3 种场景互斥,不能在同一任务中混用

场景image_urlvideo_urlaudio_url
文生视频
图生视频(首帧)1 张,role: first_frame
图生视频(首+尾帧)2 张,role: first_frame + last_frame
多模态参考生视频1–9 张,role: reference_image0–3 段0–3 段

多模态参考模式下,三种模态都是可选的(可只传图、只传视频、只传音频,或任意组合)。

首尾帧场景的特殊行为

  • 首尾帧图片可相同
  • 首尾帧宽高比不一致时,以首帧为主,末帧自动裁剪适配

首尾帧 × 多模态参考的近似实现

多模态参考模式下,可在 prompt 中用 @imageN 指定某张参考图作为首帧 / 末帧,间接实现"首尾帧 + 多模态参考"效果。但若需严格保障首尾帧锁定,请用图生视频-首尾帧场景(明确 role: first_frame / last_frame)。

资源约束

资源单文件上限时长数量格式
图像(image_url)30 MB见上方场景表HTTP/HTTPS URL 或 Base64 data URL
视频(video_url)50 MB单段 [2, 15] 秒≤ 3 段,总时长 ≤ 15 秒mp4 / mov;分辨率 480p / 720p / 1080p
音频(audio_url)15 MB单段 [2, 15] 秒≤ 3 段,总时长 ≤ 15 秒wav / mp3

整体限制:请求体总大小 ≤ 64 MB。大文件请勿使用 Base64 编码,推荐使用公网 HTTP/HTTPS URL 提交,既避开 64 MB 限制,又减少传输延迟。

示例 — 文生视频

curl https://api.amux.ai/api/v3/contents/generations/tasks \
  -H "Authorization: Bearer $AMUX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2.0",
    "content": [
      { "type": "text", "text": "一只戴着贝雷帽的可爱海獭幼崽,在樱花飘落的春日庭院中翻滚" }
    ],
    "ratio": "16:9",
    "duration": 5,
    "resolution": "720p",
    "generate_audio": true
  }'

示例 — 图生视频(首尾帧锁定)

curl https://api.amux.ai/api/v3/contents/generations/tasks \
  -H "Authorization: Bearer $AMUX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2.0",
    "content": [
      { "type": "text", "text": "镜头从院落缓慢推近至屋内" },
      { "type": "image_url", "image_url": { "url": "https://example.com/start.jpg" }, "role": "first_frame" },
      { "type": "image_url", "image_url": { "url": "https://example.com/end.jpg" },   "role": "last_frame"  }
    ],
    "ratio": "16:9",
    "duration": 5
  }'

示例 — 多参考图

curl https://api.amux.ai/api/v3/contents/generations/tasks \
  -H "Authorization: Bearer $AMUX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2.0",
    "content": [
      { "type": "text", "text": "@image1 与 @image2 在花园相遇" },
      { "type": "image_url", "image_url": { "url": "https://example.com/character-a.jpg" }, "role": "reference_image" },
      { "type": "image_url", "image_url": { "url": "https://example.com/character-b.jpg" }, "role": "reference_image" }
    ],
    "ratio": "16:9"
  }'

示例 — 视频 + 音频参考(多模态)

curl https://api.amux.ai/api/v3/contents/generations/tasks \
  -H "Authorization: Bearer $AMUX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2.0",
    "content": [
      { "type": "text", "text": "续接画面节奏,与音频同步" },
      { "type": "video_url", "video_url": { "url": "https://example.com/sample-clip.mp4" } },
      { "type": "audio_url", "audio_url": { "url": "https://example.com/voice.mp3" } }
    ],
    "ratio": "16:9",
    "duration": 5
  }'

示例 — 带回调与自定义 trace_id

curl https://api.amux.ai/api/v3/contents/generations/tasks \
  -H "Authorization: Bearer $AMUX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2.0",
    "content": [
      { "type": "text", "text": "傍晚的港口,海鸥掠过" }
    ],
    "ratio": "16:9",
    "duration": 5,
    "callback_url": "https://your-app.example.com/api/seedance/callback",
    "trace_id": "biz-order-20260428-001"
  }'

响应(提交成功)

{
  "id": "cgt-2024xxxxxxxxxxxx",
  "model": "doubao-seedance-2.0",
  "status": "queued",
  "created_at": 1714300000
}

id 即任务 ID,可直接用于 获取任务状态

方式二:amux 通用端点

跨厂商统一契约。常规字段(prompt / image / images)写顶层,火山专属字段通过 metadata 透传。

项目
请求方法POST
完整 URLhttps://api.amux.ai/v1/video/generations
认证Authorization: Bearer <AMUX_API_KEY>
请求格式application/json

通用字段定义见 创建视频生成任务(通用)

prompt 强制必填:amux 校验层强制要求 prompt 非空,即便首/末帧锁定或纯参考图模式也必须提供 prompt。

顶层字段

Prop

Type

未列出的 metadata 键不识别:amux 把 metadata 反序列化到方式一的 requestPayload 结构体,结构体里没有的键会被丢弃。常见误用:直接传 metadata.first_frame / metadata.last_frame / metadata.reference_images — 这些都不会生效,需要走 metadata.content 数组并用 role 字段。

指定图像角色 / 注入视频 / 音频

通用端点要让图像带 role、或注入 video_url / audio_url,统一通过 metadata.content 提供完整的 Doubao content 数组(结构同方式一的 ContentItem 元素):

{
  "model": "doubao-seedance-2.0",
  "prompt": "镜头缓慢推近",
  "metadata": {
    "ratio": "16:9",
    "duration": 5,
    "content": [
      { "type": "image_url", "image_url": { "url": "https://example.com/start.jpg" }, "role": "first_frame" },
      { "type": "image_url", "image_url": { "url": "https://example.com/end.jpg"   }, "role": "last_frame"  }
    ]
  }
}

顶层 image / images 中的图会被加入 content 但 不带 role — 上游会按默认行为处理。如需精确控制角色 / 多模态,统一走 metadata.content

3 种场景互斥:图生视频-首帧、图生视频-首尾帧、多模态参考生视频不能在同一任务中混用,详见上方 场景与角色

amux adapter 还有一个特殊处理:当 content 仅含 reference_image(无首/末帧)时,duration 字段会被自动剔除 — 因为上游对多模态参考模式不接受 duration,会直接报 InvalidParameter。

示例 — 文生视频(标准版)

curl https://api.amux.ai/v1/video/generations \
  -H "Authorization: Bearer $AMUX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2.0",
    "prompt": "一只戴着贝雷帽的可爱海獭幼崽,在樱花飘落的春日庭院中翻滚",
    "metadata": {
      "ratio": "16:9",
      "duration": 5,
      "resolution": "720p",
      "generate_audio": true
    }
  }'
import os
import httpx

response = httpx.post(
    "https://api.amux.ai/v1/video/generations",
    headers={"Authorization": f"Bearer {os.environ['AMUX_API_KEY']}"},
    json={
        "model": "doubao-seedance-2.0",
        "prompt": "一只戴着贝雷帽的可爱海獭幼崽,在樱花飘落的春日庭院中翻滚",
        "metadata": {
            "ratio": "16:9",
            "duration": 5,
            "resolution": "720p",
            "generate_audio": True,
        },
    },
)
task = response.json()
print(f"Task ID: {task['task_id']}")
const response = await fetch('https://api.amux.ai/v1/video/generations', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    Authorization: `Bearer ${process.env.AMUX_API_KEY}`,
  },
  body: JSON.stringify({
    model: 'doubao-seedance-2.0',
    prompt: '一只戴着贝雷帽的可爱海獭幼崽,在樱花飘落的春日庭院中翻滚',
    metadata: {
      ratio: '16:9',
      duration: 5,
      resolution: '720p',
      generate_audio: true,
    },
  }),
});

const task = await response.json();
console.log(`Task ID: ${task.task_id}`);

示例 — 首帧 + 末帧锁定

curl https://api.amux.ai/v1/video/generations \
  -H "Authorization: Bearer $AMUX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2.0-fast",
    "prompt": "镜头从院落缓慢推近至屋内",
    "metadata": {
      "ratio": "16:9",
      "duration": 5,
      "content": [
        { "type": "image_url", "image_url": { "url": "https://example.com/start.jpg" }, "role": "first_frame" },
        { "type": "image_url", "image_url": { "url": "https://example.com/end.jpg" },   "role": "last_frame"  }
      ]
    }
  }'

示例 — 视频 + 音频多模态参考

curl https://api.amux.ai/v1/video/generations \
  -H "Authorization: Bearer $AMUX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2.0",
    "prompt": "续接画面节奏,与音频同步",
    "metadata": {
      "ratio": "16:9",
      "duration": 5,
      "content": [
        { "type": "video_url", "video_url": { "url": "https://example.com/sample-clip.mp4" } },
        { "type": "audio_url", "audio_url": { "url": "https://example.com/voice.mp3" } }
      ]
    }
  }'

示例 — 带回调与自定义 trace_id

curl https://api.amux.ai/v1/video/generations \
  -H "Authorization: Bearer $AMUX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2.0",
    "prompt": "傍晚的港口,海鸥掠过",
    "metadata": {
      "ratio": "16:9",
      "duration": 5,
      "callback_url": "https://your-app.example.com/api/seedance/callback",
      "trace_id": "biz-order-20260428-001"
    }
  }'

获取视频生成任务状态

无论使用方式一还是方式二提交,都通过统一接口查询任务状态与下载视频:

用途端点
查询任务状态、获取视频 URLGET /v1/video/generations/{task_id}
直接下载视频字节流GET /v1/videos/{task_id}/content

详见 获取视频生成任务状态

计费说明

amux-api 对 Doubao Seedance 2.0 系列做了视频输入折扣识别:当请求 content 中检测到 video_url 类型条目(视频续生 / 多模态视频参考)时,单价会自动按上游"含视频输入档"折算,约为基准价的 0.59 ~ 0.61。无视频输入按基准单价计费。

注意:虽然"含视频输入档"单价更低,但输入视频本身会额外占用输入 Token,叠加后最终总价与不带视频输入相差不多——折扣只是定价分档,不是净优惠。

此外,resolution: "1080p" 单价高于 720p,且 doubao-seedance-2.0-fast 不支持 1080p — 详见 pricing

常见问题

On this page