モデルガイド

Seedance 2.5 API:30秒のクリップ、料金、コード

Seedance 2.5は、Revanaのカタログで最も新しいSeedanceモデルです。テキスト、画像、動画から最長30秒のクリップを生成できます。このガイドでは、Seedance 2.0との違い、料金、呼び出し方を説明します。

Seedance 2.0に対するSeedance 2.5の追加点

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、またはadaptive16:9、9:16、1:1、4:3、3:4、21:9、またはadaptive
最安価格$0.08 / s$0.11 / s
ルート3ルート5ルート

要するに、Seedance 2.5は1本のクリップで最長30秒(Seedance 2.0は15秒)まで対応し、参照画像は9枚ではなく30枚まで受け付け、動画から動画にも対応します。4K出力が必要な場合は、引き続きSeedance 2.0を使います。15秒以下のクリップなら、選ぶ前に1秒あたりの料金を比べてください。720pでは、Seedance 2.0は$0.15、Seedance 2.5は$0.25です。

どちらのモデルも品質スコアは公開していません。選ぶ最善の方法は、自社のプロダクトで使う3〜4個のプロンプトを両方で実行して比べることです。

30秒のクリップが役立つ場面

  • 途切れないワンテイク。ウォークスルー、プロダクトデモ、セリフのあるシーンなど、15秒のクリップを2本つなぐと継ぎ目が目立ってしまうもの。
  • 広告スポット全体。多くのソーシャル広告のフォーマットは15〜30秒です。1回の生成でスポット全体を作れ、音声も全体を通して設計できます。
  • 長い編集でのつなぎ目を減らす。クリップをカットしてつなぐ場合でも、1本が長いほど、キャラクターや照明がずれる箇所が減ります。

クリップが15秒以下なら、まずSeedance 2.0でまかなえるかを確認してください。長い上限は不要かもしれません。

Seedance 2.5の料金(2026年10月)

Seedance 2.5は出力1秒あたりで課金され、480pで1秒あたり$0.11からです。表には、掲載レートと、各解像度での10秒と30秒のクリップの費用を示しています。ほかのAPIでの同じ料金は、Seedance 2.5の料金比較をご覧ください。

Seedance 2.5の1秒あたりとクリップあたりの料金
解像度1秒あたり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の動画を生成する

モデルID seedance-2.5 を指定して POST /v1/generations を送信します。レスポンスは、生成の 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);

長いジョブは短いジョブより完了に時間がかかるため、エンドポイントに連打せず、5〜10秒ごとにポーリングしてください。完了したジョブは次のようになります。

レスポンス
{
  "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)のどちらかを1回のリクエストで使い、両方は使えません。これらは別のモードで、混在させたリクエストは、課金の前に 422 で拒否されることがあります。

長いクリップのプロンプトのコツ

  • 段落ではなくショットリストを書く。ショットに番号を付け、それぞれに被写体、アクション、カメラワークを指定します。30秒にわたっては、形容詞より構成が重要です。
  • 登場人物は少なく。1〜2人のキャラクターのほうが、群衆よりも一貫性を保ちやすく、複数のカットをまたぐ場合は特にそうです。
  • 参照画像を活用する。最大30枚の画像で、キャラクターを複数の角度から、さらに商品、ロケーション、カラーパレットを固定できます。それぞれは「2枚目の画像のシューズ」のように、位置で指定します。
  • クリップ全体の音を設計する。すべてのショットの下で流れるもの(ビート、環境音)と、特定の瞬間に起こること(ドアが閉まる音、セリフ)を書きます。
  • ドラフトは短く小さく。冒頭のショットを480pの10秒のクリップでテストし、見た目が決まったら30秒をフルでレンダリングします。解像度によって結果が異なるため、ドラフトはプレビューではなく目安として扱ってください。
  • 文字はフレームに入れない。キャプション、価格、ロゴは、編集ソフトで追加してください。

ルーティングとフォールバック

Seedance 2.5には現在、Revanaに5つのルートがあります。ルーターは、各ジョブをまず最も安いルートに送信し、そのルートが失敗またはタイムアウトした場合は、次のルートに移します。バックアップのルートは1秒あたりの料金が高く(各ルートはモデルページに掲載)、課金されるのは成功したルートのみです。attempts フィールドで、ジョブが使ったルートの数を確認できます。

フォールバックは結果を得られる可能性を高めますが、稼働を保証するものではありません。特に長いジョブでは、アプリ側で failed を処理してください。たとえば、後でより低い解像度で再試行します。

Seedanceのすべてのティアはモデルページ、リクエストのリファレンスはドキュメントで確認できます。またはAPIキーを取得して、上のサンプルを実行してください。

よくある質問

Seedance 2.5 APIの料金はいくらですか?

2026年10月時点で、Seedance 2.5は1秒あたり、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枚)、動画から動画にも対応します。4Kに対応するのはSeedance 2.0で、Seedance 2.5は1080pまでです。

Seedance 2.5の動画は最長どれくらいですか?

1回のリクエストにつき4〜30秒です。長さは duration フィールドで指定します。

Seedance 2.5は4Kに対応していますか?

現時点のカタログでは対応していません。掲載されているのは480p、720p、1080pです。4K出力にはSeedance 2.0を使ってください。

Seedance 2.5は音声を生成しますか?

はい。audio を true にすると映像と一緒に音声が生成され、false にすると無音のクリップになります。どちらでも料金は同じです。

長いSeedance 2.5のジョブが失敗した場合、課金されますか?

いいえ。料金は送信時に確保され、ジョブが失敗すると解放されます。ルーターはまずほかのルートを試し、課金されるのは成功したジョブのみです。

1つのキーでSeedance 2.5を試す

Seedance 2.5、Seedance 2.0、カタログのすべてのモデルを1つのAPIキーで。プリペイドのクレジットは$10から、課金されるのは成功したジョブのみです。