モデルガイド

Seedance 2.0 API:料金、パラメータ、動作するコード

Seedance 2.0は、ByteDanceの音声付きマルチショット動画モデルです。このガイドでは、得意なこと、APIが受け付けるすべてのオプション、各解像度でのクリップの費用、ターミナルに貼り付けられるリクエストを解説します。

Seedance 2.0の得意分野

ByteDanceは、2026年2月にSeedance 2.0をリリースしました。映像とサウンドトラックを1回の処理で生成し、1つのクリップの中で複数のショットをカットでつなぎ、そのカットをまたいでキャラクターと映像スタイルを保てます。そのため、商品広告、ストーリーの見せ場、最初から音声が必要なSNS向けクリップなど、短い物語性のある動画の、有力な標準の選択肢です。

  • マルチショットのクリップ。ショットを順番に説明すると、モデルは被写体の一貫性を保ちながら、それらの間をカットでつなぎます。
  • 同じ処理で音声も生成。audio を true に設定すると、環境音、効果音、セリフが映像と同時に生成されます。
  • 画像による制御。最初のフレームから始めたり、最初と最後のフレームの両方を固定したり、キャラクター、商品、ルックのために最大9枚の参照画像を渡したりできます。
  • 柔軟なフレーミング。SNS向けの縦型9:16から、シネマティックな21:9まで、6種類の固定アスペクト比と、入力画像に合わせる適応設定があります。

苦手な点:ほとんどの動画モデルと同様に、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、またはadaptive
音声audio: true or false
参照画像最大9枚、次の形式で image_urls

モデルが対応していないフィールドや値は、課金される前に 422 エラーで拒否されるため、リクエストの入力ミスで費用がかかることはありません。

Seedance 2.0の料金(2026年10月)

Seedance 2.0は、出力動画の1秒あたりで課金されます。以下の価格は、2026年10月時点のRevanaのカタログに基づき、480pで1秒あたり$0.08からです。

Seedance 2.0の1秒あたりと1クリップあたりの料金
解像度1秒あたり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枚の参照画像に対応する、2つの軽量なティアがありますが、720pまでです。ドラフトや大量生成に向いています。気に入ったプロンプトは、最終的な品質と高い解像度のために、Seedance 2.0で再実行してください。

Seedance 2.0のティア比較
モデル480p / s720p / s720pで5秒ルート
Seedance 2.0$0.08$0.15$0.753ルート
Seedance 2.0 Fast$0.05$0.11$0.553ルート
Seedance 2.0 Mini$0.03$0.05$0.254ルート

Seedance 2.0の動画を生成する

すべてのリクエストは、ベアラートークンとしてAPIキーを付けて POST /v1/generations に送信されます。呼び出しはすぐに、生成の id を含む 202 を返し、status が succeeded または failed になるまで、数秒ごとに GET /v1/generations/{id} をポーリングします。この例は、音声付き・720pの5秒のクリップを要求するもので、$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 を追加すると、ショットの終わり方を固定できます。モデルが2つのフレーム間の動きを補完するため、トランジション、見せ場の演出、ビフォーアフターのショットに向いています。

リクエストボディ
{
  "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
}

参照画像

最初のフレームを固定せずに、キャラクターや商品の一貫性を保つには、最大9枚の画像を image_urls として送信し、プロンプトでそれぞれを説明します。たとえば「1枚目の画像の女性」のように書きます。1回のリクエストでは、フレームと参照のどちらか一方を使い、両方は使えません。これらは別のモードで、混在させたリクエストは拒否されることがあります。

リクエストボディ
{
  "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:彼女の手のクローズアップ」のようなラベルを付けると、モデルにカットの位置が明確に伝わります。
  • カメラワークを指定する。プッシュイン、オービット、手持ち、固定の三脚、ドローンのプルバックなど。ショットごとに1つの動きのほうが、列挙するより伝わります。
  • 音を描写する。「トタン屋根に当たる雨、遠くの雷、音楽なし」のように書くほうが、音声を成り行きに任せるよりうまくいきます。セリフが不要なら、そう書いてください。
  • セリフは短く。セリフを引用符で囲み、誰が話すかを書きます。5秒のクリップには、短い1文が収まります。
  • 文字はフレームに入れない。キャプション、タイトル、ロゴは、編集で追加してください。
  • ドラフトは安く、それからアップスケール。480pまたはSeedance 2.0 Miniで試行を重ね、勝ったプロンプトを1080pで再実行します。解像度やティアが違うと結果は同一ではないため、ドラフトは目安として扱ってください。

Seedance 2.0のルーティングとフォールバックの仕組み

Revanaは、APIルーターです。同じモデルを提供する複数の上流プロバイダーの手前に、1つのキーと1つのリクエスト形式を用意します。Seedance 2.0には現在、3つのルートがあります。ルーターは、各ジョブをまず最も安いルートに送り、そのルートが失敗またはタイムアウトした場合は、自動的に次のルートに再送します。

  • どのルートがジョブを処理しても、掲載価格が適用され、成功したルートにのみ課金されます。
  • 生成結果の attempts フィールドに、試行されたルートの数が入ります。
  • すべてのルートが失敗した場合、ジョブはエラーを伴う failed で終了し、課金はありません。

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

試してみませんか?APIキーを取得して、Seedance 2.0をほかの動画モデルと比較してみましょう。

よくある質問

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

2026年10月時点で、Seedance 2.0は、1秒あたり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の動画は、どのくらいの長さにできますか?

1回のリクエストで4〜15秒です。より長い作品には、複数のクリップを生成して編集でつなぐか、最長30秒まで対応するSeedance 2.5を使います。

Seedance 2.0で参照画像を使えますか?

はい。キャラクター、商品、スタイルのために、image_urls で最大9枚まで使えます。1回のリクエストでは、フレーム(image_url と end_image_url)と参照のどちらか一方を使い、両方は使えません。

Seedance 2.0 FastとMiniは、Seedance 2.0とどう違いますか?

タスクとオプションは同じですが、720pまでです。720pでは、Seedance 2.0 Fastが1秒あたり$0.11、Seedance 2.0 Miniが$0.05で、Seedance 2.0の$0.15と比べて安くなっています。

Seedance 2.0の生成が失敗した場合は、どうなりますか?

ルーターが自動的に次のルートを試します。課金は1回で、成功したルートに対してのみです。すべてのルートが失敗した場合、ジョブは失敗し、課金はありません。

1つのキーでSeedance 2.0を呼び出す

キーを作成し、$10からクレジットを追加すれば、同じキーでSeedance 2.0とカタログのすべてのモデルを使えます。