ガイド

テキストから動画 vs 画像から動画:5つのAPIモードを解説

ほとんどの動画モデルは、プロンプト以外の入力も受け付けます。画像から始める、最初と最後のフレームを固定する、キャラクターや商品の参照画像を渡す、既存のクリップから作るといったことができます。このガイドでは、各モードの内容、使いどころ、呼び出し方を説明します。

5つのモードの概要

どのモードも同じエンドポイント POST /v1/generations を使います。変わるのは、プロンプトとともに送信する入力です。

動画生成のモード
モード送信するもの向いている用途
テキストから動画a promptアイデアの検討、Bロール、画像がないシーン
画像から動画image_url としての開始フレームとプロンプト商品ショット、アートワーク、静止画を、見た目を正確に保ったままアニメーション化
最初と最後のフレームimage_url end_image_url、およびプロンプトトランジション、見せ場の演出、決まった画像で終わらせたいショット
参照画像image_urls としての複数の画像とプロンプト複数のショットにわたり、キャラクター、商品、場所の一貫性を保つ
動画から動画元のクリップとプロンプト手元の映像のスタイル変更や作り直し

すべてのモデルがすべてのモードに対応しているわけではありません。下の対応表で主要なモデルを確認でき、各モデルのタスクはモデルページに掲載されています。

テキストから動画

テキストから動画は最もシンプルなモードです。ショットを説明すると、顔やセットから色、フレーミングまで、あとはモデルがすべて決めます。この自由度は、アイデアを探るときや、Bロール、状況説明のショット、抽象的な背景など、汎用的な映像が必要なときに役立ちます。

動画に特定のものを映す必要がある場合には向きません。自社の商品、ロゴ、特定の人物、ブランドガイドに合わせるべきレイアウトなどです。これらの細部は生成のたびに新たに作られるため、同じプロンプトから作った2つのクリップは一致しません。

よいテキストのプロンプトには、被写体、アクション、設定、カメラ、光、そしてモデルが音声を生成する場合は音が含まれます。Seedance 2.0ガイドには、プロンプトのコツがさらに載っています。

画像から動画

画像から動画では、あなたの画像が最初のフレームになります。商品、顔、構図、色など、その中のすべてが開始時に固定され、プロンプトでは、その後に起こることだけを説明すれば済みます。商品写真、イラスト、キービジュアルのアニメーション化や、見た目を正確にしたいショットに向いたモードです。

よくあるワークフローは、まずNano Banana ProやGPT Image 2などの画像モデルで静止画を作り、仕上がりを整えてから、アニメーション化する方法です。静止画のほうが、動画より安く、速く試行を重ねられます。

Seedance 2.0の画像から動画のリクエスト例です。音声付き5秒・720pのクリップで、料金は$0.75です。アスペクト比 adaptive は、フレームを画像の形に合わせます。

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": "The coffee in the cup starts to steam, and a hand reaches in from the right and lifts the cup off the table. Morning light, quiet cafe ambience.",
      "image_url": "https://example.com/coffee.jpg",
      "resolution": "720p",
      "duration": 5,
      "aspect_ratio": "adaptive",
      "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": "The coffee in the cup starts to steam, and a hand reaches in from the right and lifts the cup off the table. Morning light, quiet cafe ambience.",
        "image_url": "https://example.com/coffee.jpg",
        "resolution": "720p",
        "duration": 5,
        "aspect_ratio": "adaptive",
        "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: "The coffee in the cup starts to steam, and a hand reaches in from the right and lifts the cup off the table. Morning light, quiet cafe ambience.",
      image_url: "https://example.com/coffee.jpg",
      resolution: "720p",
      duration: 5,
      aspect_ratio: "adaptive",
      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);

画像ではなく、動きを説明してください。画像はモデルがすでに見ています。「白いコーヒーカップが木のテーブルにある」と言い直すより、「湯気が立ちのぼり、カップが持ち上げられる」のほうがうまくいきます。

最初と最後のフレーム

end_image_url を追加すると、モデルが、選んだ2枚の画像の間の動きを生成します。終わりが固定されるため、このモードは、シーン間のトランジション、ビフォーアフターのショット、商品の見せ場の演出、次のクリップにきれいにつながるクリップに向いています。ループにするには、両端に同じ画像を試してください。

2つのフレームは、1つのショットの妥当な始まりと終わりであるべきです。同じシーン、フレーミング、光にします。違いが大きすぎると、モデルは数秒で大きな変化を作り出さなければならず、結果が予測しにくくなります。この音声なし5秒・1080pのKling 3.0のクリップは$0.60です。

リクエストボディ
{
  "model": "kling-3.0",
  "input": {
    "prompt": "Time-lapse: the empty plot fills with a small wooden cabin as the camera holds still, clouds racing overhead",
    "image_url": "https://example.com/plot-empty.jpg",
    "end_image_url": "https://example.com/plot-cabin.jpg",
    "resolution": "1080p",
    "duration": 5,
    "audio": false
  },
  "max_cost_usd": 1
}

Seedance 2.5、Seedance 2.0、Seedance 2.0 Mini、Veo 3.1、Veo 3.1 Fast、Veo 3.1 Lite、Kling 3.0、Kling 3.0 Omni、Wan 3.0、Grok Imagine Video 1.5が、カタログで最初と最後のフレームに対応しています。Hailuo 2.3は開始フレームを受け付けますが、終了フレームは受け付けません。

参照画像

参照画像はフレームではありません。モデルは、それを使って人物、商品、場所の見た目を学習し、プロンプトで説明した新しいショットの中に配置します。このため、参照画像は一貫性のためのモードです。10個のショットにわたって同じキャラクターを、または異なる設定で同じ商品を登場させられます。

画像を image_urls として送信し、プロンプトでは、それぞれを位置で指定します。たとえば「1枚目の画像の女性が、2枚目の画像のバッグを持つ」のように書きます。上限はモデルによって異なり、Seedance 2.5は最大30枚、Wan 3.0は最大10枚、Seedance 2.0は最大9枚、Seedance 2.0 Miniは最大9枚、Veo 3.1 Fastは最大3枚、Veo 3.1 Liteは最大3枚です。Seedanceモデルでは、1回のリクエストでフレームと参照のどちらか一方を送信してください。

この音声付き8秒・720pのVeo 3.1 Fastのリクエストは$0.80です。

リクエストボディ
{
  "model": "veo-3.1-fast",
  "input": {
    "prompt": "The man from the first image walks into the bakery from the second image, picks up a loaf and smiles at the camera. Bell over the door, quiet chatter.",
    "image_urls": [
      "https://example.com/man.jpg",
      "https://example.com/bakery.jpg"
    ],
    "resolution": "720p",
    "duration": 8,
    "aspect_ratio": "16:9",
    "audio": true
  },
  "max_cost_usd": 1.5
}

動画から動画

動画から動画は、すでに手元にあるクリップから始めます。元のクリップが動きとタイミングを導き、プロンプトでは、新しいスタイル、新しい設定、異なる細部など、何を変えるかを説明します。実写映像のスタイル変更、以前の生成結果の作り直し、パフォーマンスはそのままに見た目を変える場合に向いています。

このガイドのモデルのうち、Seedance 2.5、Kling 3.0 Omni、Wan 3.0が動画から動画に対応しており、Kling 3.0 Motion Controlも元の動画から生成します。元のクリップの入力はモデルによって異なるため、開発に取りかかる前にモデルのページを確認してください。

動画入力のあるジョブは、モデルによって料金の設定が異なります。Seedance 2.5では、課金される秒数が出力に入力クリップを加えたものになり、より低い動画入力ありのレートが適用されます。10秒の元動画から作る10秒・720pのクリップは$3.00で、プロンプトから作る同じクリップは$2.50です。Kling 3.0 Omniは、動画入力のあるジョブに独自のレートを設定しており、720pで1秒あたり$0.13です。

どのモデルがどのモードに対応しているか

2026年10月時点のRevanaのカタログより:

各モデルが対応する生成モード
モデルテキスト画像最初と最後参照動画
Seedance 2.5yesyesyesyesyes
Seedance 2.0yesyesyesyesno
Seedance 2.0 Miniyesyesyesyesno
Veo 3.1yesyesyesnono
Veo 3.1 Fastyesyesyesyesno
Veo 3.1 Liteyesyesyesyesno
Kling 3.0yesyesyesnono
Kling 3.0 Omniyesyesyesyesyes
Wan 3.0yesyesyesyesyes
Hailuo 2.3yesyesnonono
Grok Imagine Video 1.5yesyesyesyesno

モードによって料金は変わりますか?

ほとんど変わりません。動画モデルは、出力の秒数、解像度、モデルによっては音声に応じて課金されます。5秒・720pのSeedance 2.0のクリップは、プロンプトから始めても画像から始めても$0.75で、終了フレームや参照画像を追加してもカタログの料金は変わりません。例外は、上で説明した動画入力です。

各ジョブの料金は、送信時にプリペイドの残高から確保され、ジョブが成功した場合にのみ課金されます。すべてのレートは料金ページに掲載しています。

モードの選び方

  • まだ素材がない:テキストから動画から始めるか、画像モデルで静止画を作ってアニメーション化します。
  • 見た目を正確にしたい:承認済みのフレームからの画像から動画。
  • 終わり方が重要:最初と最後のフレーム。
  • 多くのショットで同じキャラクターや商品:参照画像。
  • すでに映像がある:動画から動画。

モデルが対応していないフィールドや値は、課金の前に 422 で拒否されるため、モードを間違えても料金はかかりません。フィールドの完全なリファレンスはドキュメントをご覧ください。

試してみませんか?APIキーを取得して、最初のリクエストを送信しましょう。

よくある質問

テキストから動画と画像から動画の違いは何ですか?

テキストから動画はプロンプトだけから生成するため、ショットのあらゆる要素をモデルが作り出します。画像から動画は、あなたの画像を最初のフレームとして使うため、見た目が固定され、プロンプトでは動きだけを説明します。

画像から動画は、テキストから動画より高いですか?

カタログの料金では、そうではありません。動画モデルは、出力の秒数、解像度、モデルによっては音声に応じて課金されます。5秒・720pのSeedance 2.0のクリップは、2026年10月時点でどちらでも$0.75です。

最初と最後のフレームとは何ですか?

開始画像を image_url として、終了画像を end_image_url として送信すると、モデルがその間の動きを生成します。トランジション、見せ場の演出、ループに便利です。

参照画像は何枚送れますか?

モデルによって異なります。Seedance 2.5は最大30枚、Wan 3.0は最大10枚、Seedance 2.0は最大9枚、Seedance 2.0 Miniは最大9枚、Veo 3.1 Fastは最大3枚、Veo 3.1 Liteは最大3枚です。

開始フレームと参照画像を組み合わせられますか?

Seedanceモデルでは組み合わせられません。1回のリクエストでは、フレームと参照のどちらか一方を送信してください。

動画から動画に対応しているモデルはどれですか?

主要なモデルでは、Seedance 2.5、Kling 3.0 Omni、Wan 3.0が動画から動画に対応しており、Kling 3.0 Motion Controlも同様です。すべてのモデルのタスクは、モデルページに掲載されています。

1つのキーですべてのモードを試す

テキスト、画像、フレーム、参照のジョブは、Revanaではすべて同じリクエストを使います。プリペイドのクレジットは$10から。