模型指南

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
模型 idseedance-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 起。

Seedance 2.0 的每秒价格和每段价格
分辨率每秒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 上重新运行,以获得最终画质和更高的分辨率。

Seedance 2.0 各档位对比
模型480p / s720p / s720p 下 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。

cURL
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"
Python
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.js
// 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 生成失败时会发生什么?

路由器会自动尝试下一条线路。你只需为成功的那条线路付一次费;如果所有线路都失败,任务就会失败,且不收费。

用一个密钥调用 Seedance 2.0

创建密钥,充入 $10 起的额度,就可以用同一个密钥调用 Seedance 2.0 和目录中的其他所有模型。