模型指南

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 对比
Seedance 2.0Seedance 2.5
任务文生视频、图生视频、首尾帧和参考图文生视频、图生视频、首尾帧、参考图和视频生视频
视频时长4 到 15 秒4 到 30 秒
分辨率480p、720p、1080p 和 4K480p、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 价格对比。

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。

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.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"
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.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.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.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 任务失败时会扣费吗?

不会。提交时价格会被预留,任务失败时就会释放。路由器会先尝试其他线路,你只需为成功的任务付费。

用一个密钥试用 Seedance 2.5

一个 API 密钥即可使用 Seedance 2.5、Seedance 2.0 以及目录中的其他所有模型。预付额度 $10 起,仅对成功的任务收费。