はじめに
Wan 3.0 参照から動画 は、渡した参照素材から新しい 2〜30 秒のショットを組み立てます。1 リクエストで画像 10 枚、動画クリップ 5 本、音声クリップ 5 本まで使えます。reference_image_urls、reference_video_urls、reference_audio_urls、reference_file_url、reference_link_url のうち少なくとも 1 つが必要で、プロンプトは省略できます。顔、衣装、ロケーション、声を、別々にレンダリングしたショットのあいだで同じに保ちたいときに使います。text-to-video は実行のたびに新しい顔を作り出すので、これはできません。出力は 480p・720p・1080p で、既定は 720p です。
開始素材に応じてモードを選ぶ
| 開始素材 | モード |
|---|---|
| 書いたブリーフから、場面、行動、カメラ、必要に応じて音を組み立てます。 | Wan 3.0 テキストから動画 |
| 承認済みの開始画像が被写体と構図を決め、指示文がその後の動きを導きます。 | Wan 3.0 画像から動画 |
| 別々の参照素材に、人物、場所、動き、音の役割を明確に割り当てられます。 | Wan 3.0 参照から動画 |
主な機能とハイライト
画像は人物、衣装、セットのために
reference_image_urls には 1〜10 枚の画像(人物、衣装、セットの素材)を渡せます。形式は JPEG、透過なしの PNG、BMP、WEBP で、1 辺 240〜8000 ピクセル、1 枚あたり最大 20 MB です。参照画像は課金されません。それぞれが何かをプロンプトで名指ししてください。そうしないと、モデルは画像を平均し、どれにも似ていない被写体にしてしまいます。
動画は動きのために、音声は声のために
参照動画が運ぶのは顔ではなく、動きとカメラのスタイルです。MP4 か MOV のクリップを 5 本まで、1 本 1〜15 秒・合計 15 秒以内、16 fps 以上で渡せます。参照音声が運ぶのは声、セリフの読み方、ルームトーンで、WAV か MP3 のクリップを 5 本まで、こちらも合計 15 秒以内です。これらの上限はタスクの受け付け時ではなく生成中にチェックされるので、送信前にクリップの長さを測っておいてください。
出力と共有する 30 秒の枠
参照動画の秒数は出力と合わせて課金され、参照動画の長さと duration_seconds の合計は 30 秒を超えられません。たとえば 12 秒の動き参照を使うと、出力は最大 18 秒になります。参照画像と参照音声はこの枠に含まれません。
リクエストパラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
prompt | いいえ | 任意です。書く場合は、まず各参照が何を担うかを示し、続けて被写体、動作 1 つ、カメラの動き 1 つ、光と音を書きます。 1 文字以上 |
reference_image_urls | いいえ | 人物、衣装、セットのプレートとして 1〜10 枚を渡します。人物なのか衣装なのかセットなのか、プロンプトで一枚ずつ名指ししないと平均化されてしまいます。 1 件以上 · 10 件以内 |
reference_video_urls | いいえ | 最大 5 本、各 1〜15 秒、合計 15 秒までです。顔ではなく、動きやカメラワークのために使ってください。 1 件以上 · 5 件以内 |
reference_audio_urls | いいえ | 最大 5 本、各 1〜15 秒、合計 15 秒までです。カットが合わせるべき声、台詞の読み、ルームトーンに使います。 1 件以上 · 5 件以内 |
reference_file_url | いいえ | ショットを組み立てる前にモデルが読む資料を 1 つ渡せます。キャラクターシート、台本、ショットリスト、商品ブリーフなどです。 |
reference_link_url | いいえ | モデルが参考として読む公開ウェブページを 1 つ指定します。記事、商品ページ、キャラクター紹介などです。 |
aspect_ratio | いいえ | 16:9、9:16、1:1、4:3、3:4、adaptive から選びます。adaptive はモデルに選ばせる指定です。 |
enable_thinking | いいえ | 生成の前に、指示と参照素材をモデルにじっくり読み込ませます。長いドキュメントや Web ページ、複雑な参照画像に向いていますが、処理は遅くなります。 デフォルト値: |
resolution | いいえ | 480p、720p、1080p。既定は 720p。 |
duration_seconds | いいえ | 2〜30 の任意の整数秒、または -1 でスマート尺。既定は 5。 |
generate_audio | いいえ | 既定でオン。映像に固定された音付きでクリップが返ります。 デフォルト値: |
enable_prompt_expansion | いいえ | 既定でオフ。オンにすると生成前にプロンプトが書き直され、薄いブリーフには効き、詳細なブリーフとは喧嘩します。 |
seed | いいえ | 0〜2147483647。1 フィールドずつ比べるときは固定し、幅が欲しいときは外してください。 |
料金
参照動画の長さは課金対象の秒数に加算されますが、参照画像と音声は加算されません。実行前にクリップの長さを計測できないため、まず上限の15秒分を仮押さえし、精算時に未使用分を即座に解放します。実際に使用された秒数のみが課金されます。
| 仕様 | 料金 |
|---|---|
| $0.045 / 秒 |
| $0.09 / 秒 |
| $0.18 / 秒 |
ユースケース
決まった部屋で同じ人物を撮り直す
人物と部屋のサンプルは 2 枚の画像を送り、プロンプトで役割を名指ししています。「Image 1 is the character — keep her face, hair and the black slip dress exactly. Image 2 is the room.」そのうえで、ゆっくりした横移動のカメラの中を彼女が窓辺まで歩きます。720p で 8 秒、シードは 771120 です。2 枚の素材とシードを固定し、動作の行だけを変えるのが、シリーズものに向いたリクエストの形です。
声まで合わせた話し手
独白のサンプルは、話し手の顔と衣装のための画像 1 枚と、声のための参照音声 1 本を組み合わせています。プロンプトは両者の役割を分けたうえで、朝の光が入るキッチンテーブルでの固定のミディアムショットを書いています。720p で 10 秒です。テイクをまたいで同じ声でなければならない司会者、ナレーター、繰り返し登場する人物は、この形に従います。
プロンプトガイドと実践のヒント
ショットを書く前に参照素材の対応表を作る
プロンプトの冒頭で、参照素材ごとに 1 文ずつ役割を書きます。どの画像が人物で、どれがセットか、動画や音声は何のためか。そのあとで場面を書きます。被写体、動作を 1 つ、カメラの動きを 1 つ、光と音。プロンプトは「Image 1」「Image 2」のように画像を指すので、画像は言及する順番どおりに渡してください。
参照素材どうしの衝突ははっきり解消する
動きのクリップに不要な人物や背景が映っているなら、そのカメラの軌道やタイミングだけを求めてください。2 つの参照素材に同じ仕事を与え、どちらを使うかをモデルに選ばせるのはやめましょう。どちらが人物を決め、どちらが場所を決めるのかをブリーフの中で決めておきます。
再実行ごとに変えるのは 1 つだけ
seed と参照素材のセットを固定し、1 回の試行で変えるのは 1 行だけにします。動作、カメラの動き、参照素材 1 つのいずれかです。そうすれば結果の違いをその変更までたどれます。長い尺や高い解像度に進む前に 5 秒・720p で探り、どのテイクでも顔、衣装、場所、声をそれぞれの参照素材と照らし合わせてください。
API クイックスタート
# Generate the idempotency key once; reuse it when retrying after a lost response.
export SPICY_IDEMPOTENCY_KEY="${SPICY_IDEMPOTENCY_KEY:-$(uuidgen)}"
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
-d '{
"model": "alibaba/wan-3.0/reference-to-video",
"input": {
"aspect_ratio": "16:9",
"duration_seconds": 5,
"prompt": "A slow aerial shot drifting over a misty pine forest at sunrise",
"reference_image_urls": [
"https://example.com/reference.png"
],
"resolution": "720p"
}
}'
# Copy data.taskId from the response into TASK_ID, then poll the status.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $SPICY_API_KEY"
認証、完全なスキーマ、ポーリング、エラー処理は API リファレンスを参照してください。



























