Wan 3.0 API:30秒のクリップ、料金、コード
Wan 3.0は、Alibabaの音声付き動画モデルで、クリップを制御する5つの方法と、2〜30秒の長さに対応します。APIが受け付けるもの、各長さと解像度の料金、呼び出し方を紹介します。
Wan 3.0でできること
WanはAlibabaの動画モデルファミリーで、Wan 3.0はRevanaのカタログで最新のWan世代です。受け付けるものは次のとおりです。
- 5つの入力モード。テキストから動画、画像から動画、最初と最後のフレーム、参照画像、動画から動画。
- 幅広い長さ。1クリップにつき2〜30秒で、2秒の手軽なテストも30秒のフルテイクも、同じモデルで行えます。
- 映像と一緒に音声を。
audioをtrueに設定すると、環境音、効果音、セリフが同じ処理で生成されます。 - あらゆるチャンネルに対応するフレーミング。adaptive、16:9、4:3、1:1、3:4、9:16、21:9から選べます。
- 最大10枚の参照画像で、キャラクター、商品、背景を指定できます。
品質スコアやランキングは公開していません。カタログでわかるのは、モデルが何を受け付け、いくらかかるかです。出力が自社のプロダクトに合うかどうかは、自分のプロンプトで試して確かめてください。
Wan 3.0とWan 3.0 Primeのどちらを使うか
どちらもRevanaで利用できます。カタログでは、どちらも同じ解像度、長さ、参照画像の上限が掲載されています。違いは、Primeが動画から動画と21:9に対応しておらず、独自の1秒あたりのレートがあることです(下の料金表を参照)。
| Wan 3.0 | Wan 3.0 Prime | |
|---|---|---|
| タスク | テキストから動画、画像から動画、最初と最後のフレーム、参照画像、動画から動画 | テキストから動画、画像から動画、最初と最後のフレーム、参照画像 |
| 解像度 | 480p、720p、1080p | 480p、720p、1080p |
| 長さ | 2〜30秒 | 2〜30秒 |
| アスペクト比 | adaptive、16:9、4:3、1:1、3:4、9:16、または21:9 | adaptive、16:9、4:3、1:1、3:4、または9:16 |
| 参照画像 | 最大10枚 | 最大10枚 |
| 最安価格 | $0.05 / s | $0.07 / s |
| ルート | 3ルート | 3ルート |
実用的な選び方は、同じ3〜4個のプロンプトを480pで両方に実行し、結果を横並びで比べることです。480pでは、5秒のテストがWan 3.0で$0.25、Primeで$0.35です。
Wan 3.0の料金(2026年10月)
どちらのモデルも、出力動画1秒あたりで課金され、音声のオン・オフにかかわらず、解像度ごとに1つのレートです。
| 解像度 | Wan 3.0/秒 | 10秒のクリップ | 30秒のクリップ | Prime/秒 | Prime 30秒 |
|---|---|---|---|---|---|
| 480p | $0.05 | $0.50 | $1.50 | $0.07 | $2.10 |
| 720p | $0.09 | $0.90 | $2.70 | $0.13 | $3.90 |
| 1080p | $0.17 | $1.70 | $5.10 | $0.26 | $7.80 |
送信すると、ジョブの料金がプリペイドの残高から確保されます。課金されるのはジョブが成功した場合のみで、失敗した場合は確保が解放されます。金額は cost_usd として返されます。クレジットパックと各モデルのレートは、料金ページをご覧ください。
Wan 2.6とWan 2.7
以前のWanモデルも、720pと1080pで引き続き利用できます。
15秒のWan 3.0のクリップを生成する
"model": "wan-3.0" を指定して POST /v1/generations を送信し、完了するまで生成をポーリングします。この音声付き15秒・720pのクリップは$1.35です。
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": "wan-3.0",
"input": {
"prompt": "A hot air balloon rises over a misty valley at sunrise. Shot 1: wide shot as the balloon lifts off a meadow. Shot 2: view from the basket as the valley opens up below. Shot 3: the balloon drifts past the camera into the sun. Burner roar, birdsong, wind.",
"resolution": "720p",
"duration": 15,
"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"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": "wan-3.0",
"input": {
"prompt": "A hot air balloon rises over a misty valley at sunrise. Shot 1: wide shot as the balloon lifts off a meadow. Shot 2: view from the basket as the valley opens up below. Shot 3: the balloon drifts past the camera into the sun. Burner roar, birdsong, wind.",
"resolution": "720p",
"duration": 15,
"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 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: "wan-3.0",
input: {
prompt: "A hot air balloon rises over a misty valley at sunrise. Shot 1: wide shot as the balloon lifts off a meadow. Shot 2: view from the basket as the valley opens up below. Shot 3: the balloon drifts past the camera into the sun. Burner roar, birdsong, wind.",
resolution: "720p",
duration: 15,
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);最初の呼び出しは、生成の id とステータス queued を含む 202 を返します。完了したジョブは次のようになります。
{
"id": "gen_01JBX7Q2M4",
"model": "wan-3.0",
"status": "succeeded",
"output": {
"urls": [
"https://cdn.revana.si/g/gen_01JBX7Q2M4/0.mp4"
]
},
"cost_usd": 1.35,
"attempts": 1,
"error": null,
"created_at": "2026-10-19T14:02:11Z",
"completed_at": "2026-10-19T14:03:47Z"
}画像をアニメーション化する
画像を image_url として送信します。adaptive を指定すると、モデルがフレームを画像に合わせます。この8秒・1080pのクリップは$1.36です。
{
"model": "wan-3.0",
"input": {
"prompt": "The waves in the painting start to move and crash against the rocks while the clouds drift slowly. Ocean surf, gulls.",
"image_url": "https://example.com/painting.jpg",
"resolution": "1080p",
"duration": 8,
"aspect_ratio": "adaptive",
"audio": true
},
"max_cost_usd": 2
}参照画像
最大10枚の画像を image_urls として渡し、それぞれを位置で指定します。この12秒の正方形のクリップは$1.08です。
{
"model": "wan-3.0",
"input": {
"prompt": "The robot from the first image waters the plants in the greenhouse from the second image, then stops to watch a butterfly. Soft electronic hum, dripping water.",
"image_urls": [
"https://example.com/robot.jpg",
"https://example.com/greenhouse.jpg"
],
"resolution": "720p",
"duration": 12,
"aspect_ratio": "1:1",
"audio": true
},
"max_cost_usd": 2
}Wan 3.0は、元のクリップが新しいクリップを導く動画から動画にも対応しています。開始フレームと終了フレームは、ほかのモデルと同様に image_url と end_image_url で指定します。
Wan 3.0のプロンプトのコツ
- 動きは非常に短いクリップでテストする。Wan 3.0は2秒という短いクリップに対応しているため、480pでの手軽な動きのテストは$0.10で済みます。
- 長いクリップにはショットリストを使う。15〜30秒では、ショットに番号を付け、それぞれに被写体、アクション、カメラワークを指定します。
- 音を描写する。全体を通して流れるもの(風、群衆、音楽)と、特定の瞬間に起こること(ドア、セリフ)を書きます。不要なら「音楽なし」と書いてください。
- 登場人物は少なく。長いクリップでは、1〜2人のキャラクターのほうが、群衆よりも一貫性を保ちやすくなります。
- 文字は編集に任せる。画面上に正確な文言を出すことは、現在の動画モデルでは安定しません。
ルーティングとフォールバック
Wan 3.0には現在Revanaに3つのルート、Wan 3.0 Primeにも3つのルートがあります。ルーターは、各ジョブをまず最も安いルートに送り、失敗またはタイムアウトした場合は次のルートに移します。どのルートも同じモデルを同じ掲載価格で提供し、課金は成功したルートに対して1回のみです。
フォールバックは結果を得られる可能性を高めますが、稼働を保証するものではありません。すべてのルートが失敗した場合、ジョブは failed で終了し、課金はありません。
すべてのWanモデルはモデルページで、APIドキュメントと併せてご覧いただけます。サンプルを実行するには、APIキーを取得してください。
よくある質問
Wan 3.0 APIの料金はいくらですか?
2026年10月時点で、Wan 3.0は1秒あたり、480pが$0.05、720pが$0.09、1080pが$0.17で、音声込みです。10秒・720pのクリップは$0.90です。
Wan 3.0の動画は最長どれくらいですか?
1回のリクエストにつき2〜30秒で、duration フィールドで指定します。
Wan 3.0とWan 3.0 Primeの違いは何ですか?
Primeは1秒あたり$0.07からで、Wan 3.0の$0.05より高く、動画から動画と21:9には対応していません。解像度、長さ、参照画像の上限は同じです。選ぶ前に、自分のプロンプトで両方を試してください。
Wan 3.0は音声を生成しますか?
はい。audio を true にすると映像と一緒に音声が生成され、false にすると無音になります。どちらでも料金は同じです。
Wan 3.0は何枚の参照画像を受け付けますか?
最大10枚で、image_urls として送信します。プロンプトでは、それぞれの画像を位置で指定します。
Wan 3.0はどのアスペクト比に対応していますか?
Wan 3.0には、adaptive、16:9、4:3、1:1、3:4、9:16、21:9が掲載されています。adaptiveは、フレームを入力画像に合わせます。