Seedance 2.0 API:价格、参数和可运行的代码
Seedance 2.0 是 ByteDance 的带声音的多镜头视频模型。本指南介绍它擅长什么、API 接受的所有选项、各分辨率下一段视频的费用,以及可以直接粘贴到终端的请求。
Seedance 2.0 擅长什么
ByteDance 于 2026 年 2 月发布了 Seedance 2.0。它在一次生成中同时生成画面和配乐,可以在单段视频内的多个镜头之间切换,并在这些切换中保持角色和视觉风格。这使它成为短叙事视频的有力默认选择:产品广告、故事片段,以及一开始就需要声音的社交媒体短视频。
- 多镜头视频。按顺序描述各个镜头,模型会在它们之间切换,同时保持主体一致。
- 同一次生成中带声音。当你把
audio设为true时,环境声、音效和语音会随画面一起生成。 - 通过图片控制。从首帧开始,同时固定首帧和尾帧,或传入最多 9 张参考图来固定角色、产品或风格。
- 灵活的取景。六种固定宽高比,从适合社交媒体的竖版 9:16 到适合电影感作品的 21:9,另有一个跟随输入图片的自适应设置。
较弱的地方:和大多数视频模型一样,Seedance 2.0 无法可靠地渲染画面中的精确文字,所以请在剪辑软件里添加标题、价格和徽标,而不是写在提示词里。对当前的视频模型来说,很多人同时运动的繁忙场景总体上都很困难;主体更少、动作更清晰,结果更可靠。
输入与限制
这些是目录中为 Seedance 2.0 列出的选项。请求格式与 Revana 上所有其他模型相同;只是允许的取值不同。
| 选项 | Seedance 2.0 |
|---|---|
| 模型 id | seedance-2.0 (较轻的档位:seedance-2.0-fast、seedance-2.0-mini) |
| 任务 | 文生视频、图生视频、首尾帧和参考图 |
| 分辨率 | 480p、720p、1080p 和 4K |
| 时长 | 4 到 15 秒 |
| 宽高比 | 16:9、9:16、1:1、4:3、3:4、21:9 或自适应 |
| 声音 | audio: true or false |
| 参考图 | 最多 9 张,通过 image_urls |
模型不支持的字段或取值,会在任何扣费之前以 422 错误被拒绝,所以请求中的拼写错误不会花一分钱。
Seedance 2.0 价格(2026 年 10 月)
Seedance 2.0 按输出视频的每秒计费。以下价格取自 2026 年 10 月的 Revana 目录,480p 下每秒 $0.08 起。
| 分辨率 | 每秒 | 5 秒视频 | 10 秒视频 | 15 秒视频 |
|---|---|---|---|---|
| 480p | $0.08 | $0.40 | $0.80 | $1.20 |
| 720p | $0.15 | $0.75 | $1.50 | $2.25 |
| 1080p | $0.40 | $2.00 | $4.00 | $6.00 |
| 4K | $0.83 | $4.15 | $8.30 | $12.45 |
Seedance 2.0 没有单独的音频费率:无论开不开声音,标价都相同。
Revana 上的 Seedance 2.0 接受文本和图片(首帧、首尾帧或参考图)。它不接受参考视频,所以没有单独的视频输入费率。
提交任务时,其价格会从你的余额中预留。只有任务成功时才会扣费;如果失败,预留会被释放。确切的金额会作为 cost_usd 随生成任务返回。额度包和完整价格表见价格,ByteDance、fal、EvoLink 和 Atlas Cloud 对同一个模型的收费见 Seedance 2.0 价格对比。
Seedance 2.0 Fast 和 Mini
同一系列有两个较轻的档位,任务、宽高比、时长以及最多 9 张参考图都相同,但最高只到 720p。它们适合草稿和大批量工作;对你满意的提示词,请在 Seedance 2.0 上重新运行,以获得最终画质和更高的分辨率。
| 模型 | 480p / s | 720p / s | 720p 下 5 秒 | 线路 |
|---|---|---|---|---|
| Seedance 2.0 | $0.08 | $0.15 | $0.75 | 三条线路 |
| Seedance 2.0 Fast | $0.05 | $0.11 | $0.55 | 三条线路 |
| Seedance 2.0 Mini | $0.03 | $0.05 | $0.25 | 四条线路 |
生成一段 Seedance 2.0 视频
每个请求都发到 POST /v1/generations,并把你的 API 密钥作为 bearer token。调用会立即返回 202 和一个生成任务 id;每隔几秒轮询一次 GET /v1/generations/{id},直到 status 变为 succeeded 或 failed。这个示例请求一段 5 秒 720p 带声音的视频,费用为 $0.75。
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.0",
"input": {
"prompt": "A ceramic coffee mug on a sunlit kitchen counter. Shot 1: slow push-in as steam rises. Shot 2: close-up of a hand lifting the mug. Morning birdsong, a soft clink as the mug leaves the counter.",
"resolution": "720p",
"duration": 5,
"aspect_ratio": "16:9",
"audio": true
},
"max_cost_usd": 2
}'
# 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.0",
"input": {
"prompt": "A ceramic coffee mug on a sunlit kitchen counter. Shot 1: slow push-in as steam rises. Shot 2: close-up of a hand lifting the mug. Morning birdsong, a soft clink as the mug leaves the counter.",
"resolution": "720p",
"duration": 5,
"aspect_ratio": "16:9",
"audio": True,
},
"max_cost_usd": 2,
})
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.0",
input: {
prompt: "A ceramic coffee mug on a sunlit kitchen counter. Shot 1: slow push-in as steam rises. Shot 2: close-up of a hand lifting the mug. Morning birdsong, a soft clink as the mug leaves the counter.",
resolution: "720p",
duration: 5,
aspect_ratio: "16:9",
audio: true,
},
max_cost_usd: 2,
}),
});
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);max_cost_usd 是任务费用的上限:报价高于它的线路会被跳过,如果没有合适的,任务就不会运行。请把它设得比你预期的价格略高一点。完成的生成任务如下所示:
{
"id": "gen_01JBX7Q2M4",
"model": "seedance-2.0",
"status": "succeeded",
"output": {
"urls": [
"https://cdn.revana.si/g/gen_01JBX7Q2M4/0.mp4"
]
},
"cost_usd": 0.75,
"attempts": 1,
"error": null,
"created_at": "2026-10-19T14:02:11Z",
"completed_at": "2026-10-19T14:03:47Z"
}任务完成后请尽快下载文件:输出链接会过期。API 文档列出了所有字段、状态和错误码。
让静态图动起来(图生视频)
通过 image_url 传入首帧。提示词随后描述动作和声音,而不是场景,因为场景已经在图片里了。adaptive 宽高比会跟随你图片的形状。
{
"model": "seedance-2.0",
"input": {
"prompt": "She turns toward the camera and smiles as a light breeze moves her hair. Distant city traffic, a bus passing.",
"image_url": "https://example.com/first-frame.jpg",
"resolution": "1080p",
"duration": 5,
"aspect_ratio": "adaptive",
"audio": true
},
"max_cost_usd": 3
}首帧和尾帧
添加 end_image_url 来固定镜头结束的位置。模型会补全两帧之间的动作,非常适合转场、揭晓和前后对比镜头。
{
"model": "seedance-2.0",
"input": {
"prompt": "Smooth orbit around the sneaker as the light shifts from daylight to neon night",
"image_url": "https://example.com/start.jpg",
"end_image_url": "https://example.com/end.jpg",
"resolution": "720p",
"duration": 6,
"aspect_ratio": "16:9",
"audio": false
},
"max_cost_usd": 2
}参考图
如果想在不固定首帧的情况下保持角色或产品一致,请通过 image_urls 发送最多 9 张图片,并在提示词中描述每一张,例如“第一张图里的那位女士”。一个请求中请使用帧或参考图之一,不要同时使用:它们是不同的模式,混用的请求可能会被拒绝。
{
"model": "seedance-2.0",
"input": {
"prompt": "The woman from the first image walks through the market from the second image, carrying the bag from the third image. Handheld camera, golden hour, market chatter.",
"image_urls": [
"https://example.com/woman.jpg",
"https://example.com/market.jpg",
"https://example.com/bag.jpg"
],
"resolution": "720p",
"duration": 8,
"aspect_ratio": "9:16",
"audio": true
},
"max_cost_usd": 2
}Seedance 2.0 的提示词技巧
- 按顺序写出镜头。像“镜头 1:全景定场镜头。镜头 2:她双手的特写”这样的标签,能给模型清晰的切换点。
- 写明运镜。推近、环绕、手持、固定三脚架、无人机拉远:每个镜头一种运镜,比罗列一堆更清楚。
- 描述声音。“雨点打在铁皮屋顶上,远处的雷声,没有音乐”,比把音频交给运气效果更好。如果你不想要人声,请明确说明。
- 对白保持简短。把台词放在引号里,并说明是谁说的。一段 5 秒的视频只够容纳一句简短的话。
- 不要把文字放进画面。在剪辑时添加字幕、标题和徽标。
- 低成本出草稿,再放大。先用 480p 或 Seedance 2.0 Mini 反复调整,再用 1080p 重新运行胜出的提示词。不同分辨率和档位的结果并不完全相同,所以请把草稿当作参考。
Seedance 2.0 的路由与回退如何运作
Revana 是一个 API 路由器:一个密钥和一种请求格式,对接多家提供同一个模型的上游供应商。目前 Seedance 2.0 有三条线路。路由器会先把每个任务发给最便宜的线路;如果该线路失败或超时,就会自动把任务重新提交到下一条。
- 无论由哪条线路处理任务,你都按标价付费,且只有成功的那条线路才会收费。
- 生成任务上的
attempts字段会告诉你尝试了多少条线路。 - 如果所有线路都失败,任务会以
failed和一条错误信息结束,且不收费。
回退可以提高拿到结果的概率,但并不是可用性或速度的保证。请在你的应用中处理 failed 的任务,例如稍后重试,或者提供另一个模型。
准备好试试了吗?获取 API 密钥,然后把 Seedance 2.0 与其他视频模型对比。
常见问题
Seedance 2.0 API 的价格是多少?
2026 年 10 月,Seedance 2.0 在 480p 下每秒 $0.08,720p 下 $0.15,1080p 下 $0.40,4K 下 $0.83。一段 5 秒 720p 视频为 $0.75。声音包含在同一价格中。
Seedance 2.0 会生成音频吗?
会。把 audio 设为 true,模型会在同一次生成中随画面一起生成环境声、音效和语音。设为 false 则得到静音视频;两种情况下价格相同。
Seedance 2.0 的视频最长可以多长?
每次请求 4 到 15 秒。更长的内容,请生成多段视频再剪辑到一起,或者使用最长可达 30 秒的 Seedance 2.5。
我可以对 Seedance 2.0 使用参考图吗?
可以,最多 9 张图片,通过 image_urls 传入,用于角色、产品或风格。一个请求中,要么用帧(image_url 和 end_image_url),要么用参考图,不能两者同时使用。
Seedance 2.0 Fast 和 Mini 与 Seedance 2.0 有什么不同?
它们的任务和选项相同,但最高只到 720p。720p 下,Seedance 2.0 Fast 为每秒 $0.11,Seedance 2.0 Mini 为 $0.05,而 Seedance 2.0 为 $0.15。
Seedance 2.0 生成失败时会发生什么?
路由器会自动尝试下一条线路。你只需为成功的那条线路付一次费;如果所有线路都失败,任务就会失败,且不收费。