Video
Seedance 2.5
通过官方 ModelArk 任务 API 使用 Seedance 2.5 生成、编辑和延长视频:最长 30 秒、最高 1080p,支持最多 30 张图片、10 段视频和 10 段音频参考。
Seedance 2.5 是 ByteDance 最新的视频生成模型(Dreamina Seedance 2.5)。发送官方 ModelArk 任务请求体到 POST /v1/videos/generations,保存返回的任务 ID,再从 GET /v1/tasks/{id} 读取生成完成的视频。图片、视频和音频以 URL 形式放在 content 中。
模型 ID
| 模型 ID | 分辨率 | 时长 |
|---|---|---|
dreamina-seedance-2-5 | 480p、720p、1080p | 4–30 秒,或自动 |
当前价格见模型页。
快速示例
curl https://api.seedrouter.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEDROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "dreamina-seedance-2-5",
"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/videos/generations| 请求头 | 值 |
|---|---|
| Authorization | Bearer YOUR_API_KEY |
| Content-Type | application/json |
请求体是官方 ModelArk 的“创建视频生成任务”请求体;这是 SeedRouter 每个视频模型都使用的同一个端点。响应是新任务(包含 id、status: "processing"),而不是生成完成的视频。请把 API 密钥保存在服务端代码中。
参数
| 名称 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
model | string | 是 | — | dreamina-seedance-2-5。 |
content | object[] | 是 | — | 提示词和媒体;见下文。 |
draft | boolean | 否 | false | true 表示生成 480p 草稿。 |
resolution | enum | 否 | 480p、720p、1080p。普通生成默认为 720p,草稿默认为 480p;从草稿生成正式视频时必须显式设置为 1080p。 | 480p、720p、1080p。 |
ratio | enum | 否 | adaptive | 16:9、4:3、1:1、3:4、9:16、21:9、adaptive。带首帧时,以及 edit 和 extend 下,必须为 adaptive(或不传)。 |
duration | integer | 否 | -1 | 4–30 秒,或传 -1 由模型决定。edit 下必须为 -1。 |
generate_audio | boolean | 否 | true | 随视频一起生成声音。 |
watermark | boolean | 否 | false | 添加水印。 |
return_last_frame | boolean | 否 | false | 同时以图片 URL 形式返回最后一帧。 |
output_format | enum | 否 | mp4 | mp4 或 mov。 |
omni_reference_task_type | enum | 否 | auto | auto、reference、edit、extend。edit 和 extend 需要提供参考视频。 |
execution_expires_after | integer | 否 | 172800 | 3600–259200 秒。超过该时间仍未完成的任务会以 task_expired 失败,且不计费。 |
priority | integer | 否 | 0 | 0–9。 |
safety_identifier | string | 否 | — | 标识你的终端用户,1–64 个字符。用哈希值即可。 |
service_tier | enum | 否 | default | 只能是 default。 |
content_filter | boolean | 否 | true | SeedRouter 扩展字段。设为 false 会关闭本次请求的内容过滤。 |
content 条目
| 条目 | 结构 | 角色 | 限制 |
|---|---|---|---|
| 文本 | {"type": "text", "text": "..."} | — | 一条。 |
| 图片 | {"type": "image_url", "image_url": {"url": "https://..."}, "role": "..."} | first_frame、last_frame、reference_image | 最多 30 张参考图片。 |
| 视频 | {"type": "video_url", "video_url": {"url": "https://..."}, "role": "reference_video"} | reference_video | 最多 10 段。 |
| 音频 | {"type": "audio_url", "audio_url": {"url": "https://..."}, "role": "reference_audio"} | reference_audio | 最多 10 段。 |
未知字段会被拒绝。不支持:seed、callback_url(请改为轮询任务)、tools,以及仅 1.x 使用的 frames 和 camera_fixed。任务无法取消或删除。
模式
模式由 content 条目决定;没有模式参数。
| 模式 | content |
|---|---|
| 文生视频 | 一条文本 |
| 首帧 | 文本(可选)+ 一张角色为 first_frame 的图片,或一张不带角色的图片 |
| 首尾帧 | 文本(可选)+ 一张 first_frame 图片 + 一张 last_frame 图片 |
| 多模态参考 | 文本 + 任意组合的 reference_image、reference_video 和 reference_audio 条目 |
| 编辑视频 | 文本 + 一段 reference_video,并设置 omni_reference_task_type: "edit" |
| 延长视频 | 文本 + 一段 reference_video,并设置 omni_reference_task_type: "extend" |
首帧类模式不能与参考条目组合使用。有多张图片或任何其他媒体时,每张图片都需要指定 role。
参考示例
curl https://api.seedrouter.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEDROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "dreamina-seedance-2-5",
"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–30 张参考图片 |
| 视频 | MP4、MOV(H.264 或 H.265) | 每段 2–30 秒(edit 下为 4–30 秒),最多 10 段,总计不超过 30 秒;不超过 200 MB;24–60 FPS;宽和高 300–6000 px;宽高比 0.4–2.5;407,696–8,295,044 像素(宽 × 高) |
| 音频 | WAV、MP3 | 每段 2–30 秒,最多 10 段,总计不超过 30 秒;不超过 15 MB |
模型不支持包含真人面孔的参考图片和参考视频。
媒体会在任务开始时、任何生成之前接受检查。媒体违反上述任一限制的任务会以 failed 结束,带有 invalid_request_error 和一条指明所违反规则的消息,例如 The request was rejected: content reference videos must total at most 15 seconds.,且不计费。此时无法读取的文件会交给模型,由模型决定接受或拒绝;无论哪种情况,失败的任务都不计费。
计费维度
当前费率请查看模型定价部分。Seedance 2.5 按视频 token 计费,这是官方的计费单位:
video tokens = (output seconds + reference video seconds) × width × height × 24 / 1024每百万 token 的费率取决于输出分辨率,以及请求是否包含参考视频;包含参考视频的请求,其全部 token 都按较低的费率计费。文本、图片和音频输入不计费。在 16:9 下,每秒在 480p(854×480)为 9,607.5 个 token,720p 为 21,600,1080p 为 48,600。
含参考视频的请求还设有最低 token 门槛。估价时,即使原始参考视频更短,公式中的参考视频时长也至少按 ceil(output seconds × 2 / 3) 秒计算。草稿和正式视频任务均适用此规则;草稿视频本身不会成为参考视频。实际费用以完成任务返回的用量为准。
扣费以生成完成的视频所报告的 token(output.usage.completion_tokens)为准,因此 duration: -1 按实际生成的时长计费。渲染出的片段会略长于请求的时长:一个 5 秒、720p、16:9 的请求会渲染 121 帧,报告 108,900 个 token,而不是 108,000。最终扣费请在账号的用量记录中查看。失败的任务不计费。
输出结构
提交后返回新任务:
{"id": "task_...", "model": "dreamina-seedance-2-5", "status": "processing", "created_at": 1790321515}查询任务
curl https://api.seedrouter.ai/v1/tasks/YOUR_TASK_ID \
-H "Authorization: Bearer $SEEDROUTER_API_KEY"每 10–20 秒轮询一次,直到 status 变为 completed 或 failed。轮询过程中出现网络超时,并不意味着生成失败:请保留任务 ID 并继续查询。不要为了查看进度而再创建一个任务。
完整轮询示例
请在上面的 Python 提交示例之后运行这段代码。
import time
deadline = time.monotonic() + 1800
while time.monotonic() < deadline:
result = requests.get(
f"https://api.seedrouter.ai/v1/tasks/{task_id}",
headers={"Authorization": f"Bearer {os.environ['SEEDROUTER_API_KEY']}"},
timeout=30,
)
result.raise_for_status()
task = result.json()
if task["status"] == "completed":
print(task["output"]["video_url"])
break
if task["status"] == "failed":
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-5",
"status": "completed",
"created_at": 1790321515,
"finished_at": 1790321652,
"output": {
"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",
"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
}
}| 字段 | 含义 |
|---|---|
id | 请保留该 ID 用于后续查询。 |
status | processing、completed 或 failed。 |
output.video_url | 生成的视频。 |
output.last_frame_url | 最后一帧,在 return_last_frame 为 true 时返回。 |
output.content | 官方 ModelArk 格式的相同 URL。 |
output.usage.completion_tokens | 生成完成的视频的视频 token 数;即计费数量。 |
output.duration、output.resolution、output.ratio、output.framespersecond、output.seed | 实际渲染的参数;seed 是模型选定的值。 |
created_at、finished_at | 以秒为单位的 Unix 时间戳。 |
error | 失败的任务返回 {"code", "message"}。 |
视频 URL 托管在我们的存储上。需要长期保存时,请把文件保存到你自己的存储中。
错误
在任务创建之前被拒绝的请求,会返回 HTTP 错误状态码和一个 error 对象,且不计费。受理之后才失败的任务,在查询时返回 HTTP 200,并带有 status: "failed" 和一个 error 对象。被内容过滤拦下的输出会以 content_policy_violation 失败;运行超过 execution_expires_after 的任务以 task_expired 失败。
错误码、HTTP 状态码和重试建议请参见公共错误目录。
{
"id": "task_...",
"model": "dreamina-seedance-2-5",
"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。 - 要编辑素材,把
omni_reference_task_type设为edit,并只描述需要改变的部分。
相关内容
草稿预览与正式视频
设置 draft: true 可生成 480p 预览。草稿模式不接受其他分辨率。预览生成的 token 用量规则和单价与标准 480p 生成相同。
{
"model": "dreamina-seedance-2-5",
"content": [{ "type": "text", "text": "A fox walks through a sunny garden." }],
"draft": true,
"resolution": "480p",
"duration": 4,
"ratio": "16:9"
}轮询返回的 SeedRouter 任务 ID,直到 status 为 completed 且 output.draft 为 true。在草稿创建后的 7 天内,用该 ID 提交一条独立请求:
{
"model": "dreamina-seedance-2-5",
"content": [{ "type": "draft_task", "draft_task": { "id": "task_YOUR_DRAFT_ID" } }],
"resolution": "1080p"
}草稿必须属于你的账号、已完成,并使用相同模型。content 只能包含一条 draft_task。必须显式设置 resolution 为 1080p;省略 draft 或将其设为 false。不要再次传入 duration、ratio、seed、generate_audio、omni_reference_task_type、文本或媒体,即使值相同也不可以。这些设置均继承自草稿。
新任务可以设置 watermark、return_last_frame、output_format、execution_expires_after、priority、safety_identifier 和 service_tier: "default"。未传入的输出选项使用各自默认值。content_filter 继承自草稿,不能更改。正式视频成功后返回新的任务 ID、output.draft: false,以及值为原 SeedRouter 草稿 ID 的 output.draft_task_id。草稿过期前,可以用同一草稿分别生成多次正式视频。
草稿和正式视频独立计费。正式视频按原草稿的输入类别使用对应的 1080p 费率:如果草稿使用了参考视频,正式视频也按参考视频档计费,并将原始参考视频时长计入 token 用量。草稿视频本身不会作为额外输入视频计入。每个任务使用提交时生效的价格。失败的请求不收费。
