仕組み

すべてのAI動画モデルに対応する1つのAPI

言語モデルでOpenRouterをご存知なら、Revanaは動画・画像生成における同じ発想です。Seedance、Veo、Kling、Wan、Nano Banana Pro、GPT Image 2、そのほかのカタログのモデルを、1つのAPIキー、1つのリクエスト形式、1つの前払い残高で利用でき、上流のルートが失敗した場合は自動的にフォールバックします。

各モデルを直接呼び出す場合の問題

モデルの開発元はそれぞれ独自のAPIを運営しており、アカウント、キー、リクエスト形式、ジョブのステータスの流れ、課金がすべて異なります。そのうち3つに対して開発すると、保守する連携が3つ、チャージする残高が3つ、処理するエラーコードが3種類になります。複数のプラットフォームが、異なる価格、異なる制限で同じモデルを提供していたり、処理能力が増減したりすることもあります。

そのコストは、新しいモデルを試したいときに現れ、2026年にはそれが数か月ごとに起こります。新しいモデルごとに、自社のプロダクトに合うかどうかを確認する前に、別の連携を作る必要があります。

Revanaの仕組み

  1. 1つのキー。サインアップして、ダッシュボードでAPIキーを作成します。カタログのすべてのモデルで使えます。
  2. 1つのリクエスト。model のIDと input オブジェクトを付けて POST /v1/generations を送信します。フィールド名はすべてのモデルで共通です:prompt、image_url、end_image_url、image_urls、resolution、duration、aspect_ratio、audio。
  3. 実行前に価格がわかる。ジョブの料金はカタログに基づいて決まり、前払い残高から確保されます。モデルが対応していないフィールドや値は、課金される前に 422 で拒否されます。上限として max_cost_usd を設定することもできます。
  4. ルーティング。ルーターは、そのモデルで最も安いルートにジョブを送ります。ルートが失敗またはタイムアウトした場合は、ジョブが次のルートに移ります。
  5. 1つの結果形式。GET /v1/generations/{id} をポーリングします。ステータスが succeeded になると、ファイルは output.urls に、課金額は cost_usd に入ります。ジョブが失敗した場合は、確保が解除されます。

ジョブは非同期です。画像は通常数秒、動画は1分未満から数分かかります。完全なフィールドのリファレンスとエラーコードはドキュメントにあります。

同じリクエストを3つのモデルで

リクエスト形式が共通なので、モデルの比較はループで行えます。このスクリプトは、1つのプロンプトをSeedance 2.0、Veo 3.1 Fast、Wan 3.0に送信し、各結果と費用を出力します。各モデルのオプションは異なるため、3つとも受け付ける値を選んでください。ここでは、720p、8秒、16:9です。

Python
import os
import time

import requests

API = "https://api.revana.si/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['REVANA_API_KEY']}"}

PROMPT = (
    "A paper boat sails down a rain-soaked street gutter at dusk, "
    "neon signs reflected in the water. Rain, distant traffic."
)
MODELS = ["seedance-2.0", "veo-3.1-fast", "wan-3.0"]

# Submit the same job to every model; each call returns 202 with an id.
jobs = {}
for model in MODELS:
    resp = requests.post(f"{API}/generations", headers=HEADERS, json={
        "model": model,
        "input": {
            "prompt": PROMPT,
            "resolution": "720p",
            "duration": 8,
            "aspect_ratio": "16:9",
            "audio": True,
        },
        "max_cost_usd": 1.5,
    })
    resp.raise_for_status()
    jobs[model] = resp.json()["id"]

# Poll each job until it finishes.
for model, job_id in jobs.items():
    while True:
        job = requests.get(f"{API}/generations/{job_id}", headers=HEADERS).json()
        if job["status"] in ("succeeded", "failed"):
            break
        time.sleep(5)
    if job["status"] == "succeeded":
        print(model, job["output"]["urls"][0], job["cost_usd"])
    else:
        print(model, "failed:", job["error"])

2026年10月時点のカタログ価格で、3つのジョブの費用は次のとおりです:

同じリクエストを3つのモデルで実行した場合の料金
モデルリクエスト料金
Seedance 2.0720p、8秒、音声は料金に含まれる$1.20
Veo 3.1 Fast720p、8秒、音声付き(別料金)$0.80
Wan 3.0720p、8秒、音声は料金に含まれる$0.72

1.5 の max_cost_usd は、3つすべてをカバーします。上限を超える費用になるジョブは、実行されません。

ルート間のフォールバック

ルートとは、モデルの上流の処理能力の供給元の1つです。Revanaの多くのモデルには複数のルートがあり、ルーターは順番にそれらを使います:

  • 最安のルートから。各ジョブは、そのオプションを受け付ける最も安いルートに送られます。
  • 失敗したら次へ。そのルートが失敗またはタイムアウトした場合、ジョブは自動的に次のルートに移ります。attempts フィールドに、試行された数が入ります。
  • 同じモデル、同じ価格。どのルートも、リクエストしたモデルを掲載価格で提供します。ルーターが別のモデルに差し替えることはありません。
  • 課金は1回だけ。成功したルートにのみ課金されます。すべてのルートが失敗した場合、ジョブは failed で終了し、課金はありません。
人気モデルのルート数
モデル種類ルート
Seedance 2.5video5ルート
Seedance 2.0video3ルート
Kling 3.0video2ルート
Veo 3.1 Fastvideo2ルート
Veo 3.1video2ルート
Wan 3.0video3ルート
Nano Banana Proimage1ルート
GPT Image 2image2ルート

ルートが1つのモデルは、フォールバックできません。フォールバックはジョブが完了する可能性を高めますが、稼働を保証するものではありません。コード側で failed のジョブを処理してください。たとえば、後で再試行するか、自分で別のモデルに切り替えます。

料金とクレジット

Revanaは従量課金制です。サブスクリプション、シート、月額の最低料金はありません。$10、$50、$100、$500、$1,000、$5,000のパックで前払いクレジットを購入し、どのモデルでも掲載価格で使えます。

  • ほとんどの動画モデルは、解像度や、モデルによっては音声のオン・オフに応じて、出力1秒あたりで料金が決まります。
  • 画像モデルは、サイズに応じて、1枚あたりで料金が決まります。
  • 料金は送信時に確保され、ジョブが成功すると課金され、失敗すると解放されます。

すべてのモデルの料金は料金ページに掲載されています。一般的な用途の費用は、Seedance 2.0、Veo 3.1、Kling 3.0のガイドで紹介しています。

カタログをコードで読み取る

カタログ全体は、https://revana.si/data/models.json で公開されているJSONファイルです。各モデルの主なフィールドは次のとおりです:

models.jsonのフィールド
フィールド内容
id次のフィールドとして送信する文字列 model
name, maker表示名と、モデルを作った会社
kindvideo or image
tasksモデルが受け付けるもの。たとえば text_to_video など image_to_video
options解像度、アスペクト比、長さ、音声、入力画像の上限
price単位(1秒あたり、1枚あたり、1ジョブあたり)と、各オプションの料金
routesそのモデルを提供するルートの数

たとえば、テキストから動画を作れるすべてのモデルを一覧にするには:

シェル
# Every model that can make a video from a text prompt
curl -s https://revana.si/data/models.json \
  | jq -r '.models[] | select(any(.tasks[]; . == "text_to_video")) | .id'

モデルの選択UIを作る、送信前にオプションを確認する、自分のインターフェースでジョブの料金を見積もる、といった用途に使えます。同じデータがモデルページにも使われています。

切り替える前に知っておくこと

  • オプションはモデルによって異なります。フィールド名は共通ですが、各モデルが受け付ける値は異なります。たとえばKling 3.0には、アスペクト比のオプションがありません。model の文字列を変更する前に、モデルページを確認してください。
  • 出力リンクには有効期限があります。完成したファイルはダウンロードして、自分のストレージに保管してください。
  • モデルは自分で選ぶ。ルーティングが変えるのはジョブが実行される場所であり、実行されるモデルではありません。別のモデルへのフォールバックは、コード側で決めることです。
  • 料金は変わることがあります。カタログには常に現在の料金が表示され、各ジョブの料金は送信時に確定します。

試してみませんか?APIキーを取得して、モデルを見るか、クイックスタートから始めましょう。

よくある質問

すべてのAI動画モデルに対応する1つのAPIはありますか?

Revanaは、Seedance、Veo、Kling、Wan、Hailuo、Grok Imagine、Nano Banana、GPT Imageなどの主要な動画・画像モデルを、1つのAPIキー、1つのリクエスト形式、1つの前払い残高で利用できるようにします。各モデルのオプションと料金は、それぞれ異なります。

RevanaはOpenRouterとどう似ていますか?

OpenRouterは、開発者に多数の言語モデルを1つのAPIで提供します。Revanaは、動画・画像生成モデルで同じことを行います。1つのキー、1つの残高、同じモデルに対する複数の供給元にまたがるルーティングです。

上流のルートが失敗した場合は、どうなりますか?

モデルに複数のルートがある場合、ルーターは同じ掲載価格で、ジョブを次のルートに移します。すべてのルートが失敗した場合、ジョブは失敗として終了し、確保された金額は解放されます。

使っているモデルが利用できない場合、Revanaは別のモデルに切り替えますか?

いいえ。ルーターが変更するのはルートであり、モデルは変更しません。別のモデルにフォールバックしたい場合は、コード側で、別のモデルIDを指定した新しいリクエストを送信してください。

課金はどのように行われますか?

$10から$5,000までのパックで前払いクレジットを購入します。サブスクリプションはありません。各ジョブはカタログに基づいて料金が決まり、送信時に確保され、成功した場合にのみ課金されます。

コードでモデルと料金の一覧を取得するには?

https://revana.si/data/models.json を取得します。すべてのモデルについて、ID、開発元、タスク、オプション、料金、ルート数が記載されています。

カタログ全体を1つのキーで

キーを作成し、前払いクレジットを追加すれば、同じリクエストで、どの動画・画像モデルも呼び出せます。