Seedance 2.5 API:30 秒视频、价格和代码
Seedance 2.5 是 Revana 目录中最新的 Seedance 模型。它可以根据文本、图片或视频生成最长 30 秒的视频。本指南介绍它与 Seedance 2.0 的区别、费用,以及如何调用。
Seedance 2.5 相比 Seedance 2.0 增加了什么
Seedance 2.5 使用与 2.0 系列相同的请求格式,覆盖同样类型的任务:带声音的文生视频、首尾帧和参考图。在此基础上构建时真正重要的差异都是实际层面的,而且在目录中都能看到:
| Seedance 2.0 | Seedance 2.5 | |
|---|---|---|
| 任务 | 文生视频、图生视频、首尾帧和参考图 | 文生视频、图生视频、首尾帧、参考图和视频生视频 |
| 视频时长 | 4 到 15 秒 | 4 到 30 秒 |
| 分辨率 | 480p、720p、1080p 和 4K | 480p、720p 和 1080p |
| 参考图 | 最多 9 张 | 最多 30 张 |
| 宽高比 | 16:9、9:16、1:1、4:3、3:4、21:9 或自适应 | 16:9、9:16、1:1、4:3、3:4、21:9 或自适应 |
| 起价 | $0.08 / s | $0.11 / s |
| 线路 | 三条线路 | 五条线路 |
简而言之:Seedance 2.5 单段视频最长 30 秒,而 Seedance 2.0 为 15 秒;接受 30 张参考图,而不是 9 张;并增加了视频生视频。如果你需要 4K 输出,仍然应该用 Seedance 2.0。对于 15 秒或更短的视频,选择之前请先对比每秒价格:720p 下,Seedance 2.0 标价 $0.15,Seedance 2.5 标价 $0.25。
我们不为任何一个模型发布画质评分。最好的选择方式是,从你自己的产品中挑三四条同样的提示词,在两个模型上各跑一遍并比较。
30 秒视频何时有用
- 一个连续镜头。漫游、产品演示或带对白的场景,如果用两段 15 秒的视频拼接,会出现明显的接缝。
- 完整的广告片。许多社交媒体广告格式为 15 到 30 秒。一次生成就能涵盖整支广告片,声音也能贯穿设计。
- 长剪辑中更少的拼接点。即使你要把多段视频剪辑在一起,更长的片段也意味着角色或光线发生漂移的地方更少。
如果你的视频是 15 秒或更短,请先看看 Seedance 2.0 能否胜任:你可能并不需要更长的时长上限。
Seedance 2.5 价格(2026 年 10 月)
Seedance 2.5 按每秒输出计费,480p 下每秒 $0.11 起。表格显示了标价,以及每种分辨率下 10 秒和 30 秒视频的费用。其他 API 上的同样价格,请参阅 Seedance 2.5 价格对比。
| 分辨率 | 每秒 | 10 秒视频 | 30 秒视频 | 带视频输入 |
|---|---|---|---|---|
| 480p | $0.11 | $1.10 | $3.30 | $0.06 / s |
| 720p | $0.25 | $2.50 | $7.50 | $0.15 / s |
| 1080p | $0.55 | $5.50 | $16.50 | $0.34 / s |
无论开不开声音,价格都相同。以视频作为输入的任务按较低的带视频输入费率计费,但计费的秒数包含输入:输出秒数加上输入视频的时长。用一段 10 秒的源视频生成一段 10 秒 720p 视频,按 20 秒计费,即 $3.00,而根据文本提示词生成一段 10 秒视频为 $2.50。
每个任务的价格在你提交时从余额中预留,只有任务成功时才会扣费。失败的任务会释放预留,所以失败的 30 秒任务不收费。确切的扣费金额会作为 cost_usd 返回;额度包和完整价格表见价格页面。
生成一段 Seedance 2.5 视频
发送 POST /v1/generations,模型 id 为 seedance-2.5。响应是一个带有生成任务 id 的 202;轮询它,直到状态为 succeeded 或 failed。这段 10 秒 720p 带声音的视频费用为 $2.50。
export REVANA_API_KEY="sr_live_..."
# 1. Submit the job (returns 202 with the generation id)
curl https://api.revana.si/v1/generations \
-H "Authorization: Bearer $REVANA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5",
"input": {
"prompt": "A street food vendor in a night market prepares noodles, wok flames rising. Shot 1: wide shot of the busy stall. Shot 2: close-up of noodles tossed in the wok. Shot 3: a customer takes the first bite and smiles. Sizzling wok, crowd chatter, distant music.",
"resolution": "720p",
"duration": 10,
"aspect_ratio": "16:9",
"audio": true
},
"max_cost_usd": 3
}'
# 2. Poll with the id from step 1 until status is "succeeded" or "failed"
curl https://api.revana.si/v1/generations/gen_01JBX7Q2M4 \
-H "Authorization: Bearer $REVANA_API_KEY"import os
import time
import requests
API = "https://api.revana.si/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['REVANA_API_KEY']}"}
resp = requests.post(f"{API}/generations", headers=HEADERS, json={
"model": "seedance-2.5",
"input": {
"prompt": "A street food vendor in a night market prepares noodles, wok flames rising. Shot 1: wide shot of the busy stall. Shot 2: close-up of noodles tossed in the wok. Shot 3: a customer takes the first bite and smiles. Sizzling wok, crowd chatter, distant music.",
"resolution": "720p",
"duration": 10,
"aspect_ratio": "16:9",
"audio": True,
},
"max_cost_usd": 3,
})
resp.raise_for_status()
job = resp.json()
while job["status"] in ("queued", "running"):
time.sleep(5)
job = requests.get(f"{API}/generations/{job['id']}", headers=HEADERS).json()
if job["status"] == "succeeded":
print(job["output"]["urls"], job["cost_usd"])
else:
print("Failed:", job["error"])// Node 18 or later. Save as generate.mjs and run: node generate.mjs
const API = "https://api.revana.si/v1";
const headers = {
Authorization: `Bearer ${process.env.REVANA_API_KEY}`,
"Content-Type": "application/json",
};
const res = await fetch(`${API}/generations`, {
method: "POST",
headers,
body: JSON.stringify({
model: "seedance-2.5",
input: {
prompt: "A street food vendor in a night market prepares noodles, wok flames rising. Shot 1: wide shot of the busy stall. Shot 2: close-up of noodles tossed in the wok. Shot 3: a customer takes the first bite and smiles. Sizzling wok, crowd chatter, distant music.",
resolution: "720p",
duration: 10,
aspect_ratio: "16:9",
audio: true,
},
max_cost_usd: 3,
}),
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
let job = await res.json();
while (job.status === "queued" || job.status === "running") {
await new Promise((r) => setTimeout(r, 5000));
job = await (await fetch(`${API}/generations/${job.id}`, { headers })).json();
}
if (job.status === "succeeded") console.log(job.output.urls, job.cost_usd);
else console.error("Failed:", job.error);长任务比短任务需要更长时间才能完成,所以请每五到十秒轮询一次,而不要猛敲接口。完成的任务如下所示:
{
"id": "gen_01JBX7Q2M4",
"model": "seedance-2.5",
"status": "succeeded",
"output": {
"urls": [
"https://cdn.revana.si/g/gen_01JBX7Q2M4/0.mp4"
]
},
"cost_usd": 2.5,
"attempts": 1,
"error": null,
"created_at": "2026-10-19T14:02:11Z",
"completed_at": "2026-10-19T14:03:47Z"
}带参考图的 30 秒竖版视频
对于完整时长的竖版广告片,把品牌素材作为参考图发送,并按顺序描述各个镜头。1080p 下这个任务的费用为 $16.50;请把 max_cost_usd 设得高于这个值,以免它被跳过。同样的请求在 480p 下费用为 $3.30,这是在投入完整分辨率之前检查结构的更便宜的办法。
{
"model": "seedance-2.5",
"input": {
"prompt": "A 30 second vertical ad. Shot 1: the runner from the first image laces the shoe from the second image at dawn. Shot 2: tracking shot as she runs along the seafront. Shot 3: close-up of the shoe hitting wet sand. Shot 4: she stops, breathing hard, and looks out to sea. Steady electronic beat, waves, footsteps.",
"image_urls": [
"https://example.com/runner.jpg",
"https://example.com/shoe.jpg"
],
"resolution": "1080p",
"duration": 30,
"aspect_ratio": "9:16",
"audio": true
},
"max_cost_usd": 20
}一个请求中请使用首尾帧(image_url、end_image_url)或参考图(image_urls)之一,不要同时使用:它们是不同的模式,混用的请求可能会在任何扣费之前以 422 被拒绝。
长视频的提示词技巧
- 写分镜清单,而不是写一大段话。给镜头编号,为每个镜头写明主体、动作和运镜。在 30 秒的时长里,结构比形容词更重要。
- 控制角色数量。一两个角色比一群人更能稳定保持一致,尤其是跨越多次切镜时。
- 多依靠参考图。用最多 30 张图片,你可以从多个角度固定角色,还可以固定产品、场景和色板。按位置引用每一张,例如“第二张图里的那双鞋”。
- 为整段视频设计声音。说明每个镜头下面持续的声音(节拍、环境声),以及特定时刻发生的声音(关门声、一句对白)。
- 草稿要短、要小。先把开场镜头作为一段 10 秒的 480p 视频测试,等画面风格对了,再渲染完整的 30 秒。不同分辨率的结果有差异,所以请把草稿当作参考,而不是预览。
- 不要把文字放进画面。在剪辑软件里添加字幕、价格和徽标。
路由与回退
目前 Seedance 2.5 在 Revana 上有五条线路。路由器会先把每个任务提交给最便宜的线路,如果该线路失败或超时,就转到下一条。备用线路每秒更贵(模型页面列出了每一条),且只有成功的那条线路才会收费。attempts 字段会显示一个任务用了多少条线路。
回退可以提高拿到结果的概率,但并不是可用性保证。尤其是对于长任务,请在你的应用中处理 failed,例如稍后用较低的分辨率重试。
在模型页面查看所有 Seedance 档位,在文档中查看请求参考,或者获取 API 密钥并运行上面的示例。
常见问题
Seedance 2.5 API 的价格是多少?
2026 年 10 月,Seedance 2.5 在 480p 下每秒 $0.11,720p 下 $0.25,1080p 下 $0.55。一段 10 秒 720p 视频为 $2.50,一段 30 秒 1080p 视频为 $16.50。
Seedance 2.0 和 Seedance 2.5 有什么区别?
Seedance 2.5 可生成最长 30 秒的视频(2.0 最长 15 秒),最多接受 30 张参考图(2.0 为 9 张),并增加了视频生视频。Seedance 2.0 提供 4K;Seedance 2.5 最高到 1080p。
Seedance 2.5 的视频最长可以多长?
每次请求 4 到 30 秒。用 duration 字段设置时长。
Seedance 2.5 支持 4K 吗?
目前目录中不支持:它列出的是 480p、720p 和 1080p。需要 4K 输出,请使用 Seedance 2.0。
Seedance 2.5 会生成声音吗?
会。把 audio 设为 true,声音会随画面一起生成;设为 false 则得到静音视频。两种情况下价格相同。
长时长的 Seedance 2.5 任务失败时会扣费吗?
不会。提交时价格会被预留,任务失败时就会释放。路由器会先尝试其他线路,你只需为成功的任务付费。