Claude Opus 5.5 已在 SeedRouter 上线
SeedRouter Docs

Seedance 2.0

通过官方 ModelArk 任务 API 使用 Seedance 2.0 生成视频:文生视频、首尾帧,以及图片、视频和音频参考,480p 到 4K。

View Markdown

Seedance 2.0 是 ByteDance 的视频生成模型(Dreamina Seedance 2.0)。发送官方 ModelArk 任务请求体,保存返回的任务 ID,再从该任务读取生成完成的视频。图片、视频和音频以 URL 形式放在 content 中。

模型 ID

模型 ID分辨率说明
dreamina-seedance-2-0480p、720p、1080p、4K完整模型
dreamina-seedance-2-0-fast480p、720p每秒价格更低
dreamina-seedance-2-0-mini480p、720p每秒价格最低

三个 ID 接受相同的参数。当前价格见模型页。

快速示例

curl https://api.seedrouter.ai/v1/contents/generations/tasks \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "dreamina-seedance-2-0",
    "content": [{"type": "text", "text": "A red paper boat drifts across a calm pond at sunrise, slow dolly-in"}],
    "resolution": "720p",
    "ratio": "16:9",
    "duration": 5,
    "generate_audio": true
  }'

端点

POST https://api.seedrouter.ai/v1/contents/generations/tasks
请求头值
AuthorizationBearer YOUR_API_KEY
Content-Typeapplication/json

请求体就是官方 ModelArk 的“创建视频生成任务”请求。如果你已经在调用 ModelArk,只需把 base URL 改成 https://api.seedrouter.ai/v1 并更换 API 密钥。响应是 {"id": "task_..."},而不是生成完成的视频。请把 API 密钥保存在服务端代码中。

参数

名称类型必填默认值说明
modelstring是—上面三个模型 ID 之一。
contentobject[]是—提示词和媒体;见下文。
resolutionenum否720p480p、720p、1080p、4k;Fast 和 Mini ID 只接受 480p 和 720p。
ratioenum否adaptive16:9、4:3、1:1、3:4、9:16、21:9、adaptive。
durationinteger否54–15 秒,或传 -1 由模型决定。
generate_audioboolean否true随视频一起生成声音。
watermarkboolean否false添加水印。
return_last_frameboolean否false同时以图片 URL 形式返回最后一帧。
execution_expires_afterinteger否1728003600–259200 秒。超过该时间仍未完成的任务会变为 expired,且不计费。
priorityinteger否00–9。
safety_identifierstring否—标识你的终端用户,1–64 个字符。用哈希值即可。
service_tierenum否default只能是 default。
content_filterboolean否trueSeedRouter 扩展字段。设为 false 会关闭本次请求的内容过滤。

content 条目

条目结构角色限制
文本{"type": "text", "text": "..."}—一条。
图片{"type": "image_url", "image_url": {"url": "https://..."}, "role": "..."}first_frame、last_frame、reference_image最多 9 张参考图片。
视频{"type": "video_url", "video_url": {"url": "https://..."}, "role": "reference_video"}reference_video最多 3 段。
音频{"type": "audio_url", "audio_url": {"url": "https://..."}, "role": "reference_audio"}reference_audio最多 3 段。需要同时提供参考图片或参考视频。

未知字段会被拒绝。不支持:seed、callback_url(请改为轮询任务)、draft 和 draft_task、tools、仅 1.x 使用的 frames 和 camera_fixed,以及 output_format 和 omni_reference_task_type(仅 Seedance 2.5 支持)。任务无法取消或删除。

模式

模式由 content 条目决定;没有模式参数。

模式content
文生视频一条文本
首帧文本(可选)+ 一张角色为 first_frame 的图片,或一张不带角色的图片
首尾帧文本(可选)+ 一张 first_frame 图片 + 一张 last_frame 图片
多模态参考文本 + 任意组合的 reference_image、reference_video 和 reference_audio 条目

首帧类模式不能与参考条目组合使用。有多张图片或任何其他媒体时,每张图片都需要指定 role。

参考示例

curl https://api.seedrouter.ai/v1/contents/generations/tasks \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "dreamina-seedance-2-0",
    "content": [
      {"type": "text", "text": "The character from the image walks through the market in the video, same camera move"},
      {"type": "image_url", "image_url": {"url": "https://example.com/character.png"}, "role": "reference_image"},
      {"type": "video_url", "video_url": {"url": "https://example.com/market.mp4"}, "role": "reference_video"}
    ],
    "ratio": "adaptive",
    "duration": 8
  }'

请把示例 URL 替换成你自己的、可访问的文件。

媒体输入

本 API 只接受 URL 引用。不接受 Base64、data: URL、asset:// ID 和 multipart 上传。Playground 会先把所选文件上传到存储,再提交其 URL。

媒体必须是公开可访问的 HTTP(S) URL,并满足模型的官方限制:

媒体格式限制
图片JPEG、PNG、WebP、BMP、TIFF、GIF、HEIC、HEIF小于 30 MB;宽和高 300–6000 px;宽高比(宽 / 高)0.4–2.5;1–9 张参考图片
视频MP4、MOV(H.264 或 H.265)每段 2–15 秒,最多 3 段,总计不超过 15 秒;不超过 200 MB;24–60 FPS;宽和高 300–6000 px;宽高比 0.4–2.5;407,696–8,295,044 像素(宽 × 高)
音频WAV、MP3每段 2–15 秒,最多 3 段,总计不超过 15 秒;需要同时提供参考图片或参考视频;不超过 15 MB

模型不支持包含真人面孔的参考图片和参考视频。

媒体会在任务开始时、任何生成之前接受检查。媒体违反上述任一限制的任务会以 failed 结束,带有 invalid_request_error 和一条指明所违反规则的消息,例如 The request was rejected: content reference videos must total at most 15 seconds.,且不计费。此时无法读取的文件会交给模型,由模型决定接受或拒绝;无论哪种情况,失败的任务都不计费。

计费维度

当前费率请查看模型定价部分。Seedance 2.0 按视频 token 计费,这是官方的计费单位:

video tokens = (output seconds + reference video seconds) × width × height × 24 / 1024

每百万 token 的费率取决于输出分辨率,以及请求是否包含参考视频;包含参考视频的请求,其全部 token 都按较低的费率计费。文本、图片和音频输入不计费。在 16:9 下,每秒在 480p(864×496)为 10,044 个 token,720p 为 21,600,1080p 为 48,600,4K 为 194,400。

扣费以生成完成的视频所报告的 token(usage.completion_tokens)为准,因此 duration: -1 按实际生成的时长计费。渲染出的片段会略长于请求的时长:一个 5 秒、720p、16:9 的请求会渲染 121 帧,报告 108,900 个 token,而不是 108,000。最终扣费请在账号的用量记录中查看。失败和过期的任务不计费。

输出结构

提交后返回任务 ID:

{"id": "task_..."}

查询任务

curl https://api.seedrouter.ai/v1/contents/generations/tasks/YOUR_TASK_ID \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY"

每 10–20 秒轮询一次,直到 status 变为 succeeded、failed 或 expired。轮询过程中出现网络超时,并不意味着生成失败:请保留任务 ID 并继续查询。不要为了查看进度而再创建一个任务。

完整轮询示例

请在上面的 Python 提交示例之后运行这段代码。

import time

deadline = time.monotonic() + 1800
while time.monotonic() < deadline:
    result = requests.get(
        f"https://api.seedrouter.ai/v1/contents/generations/tasks/{task_id}",
        headers={"Authorization": f"Bearer {os.environ['SEEDROUTER_API_KEY']}"},
        timeout=30,
    )
    result.raise_for_status()
    task = result.json()
    if task["status"] == "succeeded":
        print(task["content"]["video_url"])
        break
    if task["status"] in ("failed", "expired"):
        raise RuntimeError(task["error"]["message"])
    time.sleep(15)
else:
    raise TimeoutError(f"Still waiting. Resume polling task {task_id}.")

成功的任务

{
  "id": "task_...",
  "model": "dreamina-seedance-2-0",
  "status": "succeeded",
  "content": {
    "video_url": "https://static.seedrouter.ai/media/tasks/task_example/0.mp4",
    "last_frame_url": "https://static.seedrouter.ai/media/tasks/task_example/last_frame/0.jpg"
  },
  "usage": {"completion_tokens": 108900, "total_tokens": 108900},
  "seed": 42,
  "resolution": "720p",
  "ratio": "16:9",
  "duration": 5,
  "framespersecond": 24,
  "generate_audio": true,
  "draft": false,
  "output_format": "mp4",
  "service_tier": "default",
  "execution_expires_after": 172800,
  "priority": 0,
  "created_at": 1790321515,
  "updated_at": 1790321652
}
字段含义
id请保留该 ID 用于后续查询。
statusqueued、running、succeeded、failed 或 expired。
content.video_url生成的视频。
content.last_frame_url最后一帧,在 return_last_frame 为 true 时返回。
usage.completion_tokens生成完成的视频的视频 token 数;即计费数量。
duration、resolution、ratio、framespersecond、seed实际渲染的参数;seed 是模型选定的值。
created_at、updated_at以秒为单位的 Unix 时间戳。
error任务失败或过期时返回 {"code", "message"}。

视频 URL 托管在我们的存储上。需要长期保存时,请把文件保存到你自己的存储中。

列出任务

curl "https://api.seedrouter.ai/v1/contents/generations/tasks?page_num=1&page_size=20&filter.status=succeeded" \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY"

返回 {"total": N, "items": [...]},包含最近 7 天的任务对象,按时间从新到旧排列。page_num 和 page_size 取值 1–500(默认分别为 1 和 20)。筛选条件:filter.status、filter.model、filter.task_ids(可重复)和 filter.service_tier。

错误

在任务创建之前被拒绝的请求,会返回 HTTP 错误状态码和一个 error 对象,且不计费。受理之后才失败的任务,在查询时返回 HTTP 200,并带有 status: "failed"(或 "expired")和一个 error 对象。被内容过滤拦下的输出会以 content_policy_violation 失败;运行超过 execution_expires_after 的任务会以 expired 结束,错误码为 task_expired。

错误码、HTTP 状态码和重试建议请参见公共错误目录。

{
  "id": "task_...",
  "model": "dreamina-seedance-2-0",
  "status": "failed",
  "error": {
    "code": 60001,
    "message": "The request was rejected by the content policy. Please revise the prompt or input images."
  }
}

如果提交本身超时,请先检查你的任务列表再重新提交:第一次请求有可能已经被受理。

实用建议

  • 用完整的句子描述主体、动作、运镜和光线。
  • 先用 480p 和较短的 duration 出草稿,再用更高的分辨率渲染选定的版本。
  • 用 return_last_frame 串联镜头:把返回的那一帧作为下一个任务的 first_frame。

相关内容