申請プロセス
APIを使用するには、まずWan Videos Generation APIの該当ページでサービスを申請する必要があります。ページに入ったら、「Acquire」ボタンをクリックします。以下の図のように:
まだログインまたは登録していない場合は、自動的にログインページにリダイレクトされ、登録とログインを促されます。ログインまたは登録後、現在のページに自動的に戻ります。
初回申請時には無料のクレジットが付与され、このAPIを無料で使用できます。
基本使用
まず、基本的な使用方法を理解します。これは、プロンプトprompt、生成行動 action、初フレーム参照画像 image_url、およびモデル model を入力することで処理された結果を得ることができます。まず、action フィールドを簡単に渡す必要があります。その値は text2video で、主に2つの行動が含まれます:文生動画(text2video)、図生動画(image2video)。次に、モデル model を入力する必要があります。現在、主に wan2.6-i2v, wan2.6-r2v, wan2.6-i2v-flash, wan2.6-t2v モデルがあります。具体的な内容は以下の通りです:

accept:受け取りたいレスポンス結果の形式。ここではapplication/json、つまりJSON形式を記入します。authorization:APIを呼び出すためのキー。申請後、直接ドロップダウンから選択できます。
model:生成する動画のモデル。主にwan2.6-i2v,wan2.6-r2v,wan2.6-i2v-flash,wan2.6-t2vモデルがあります。action:今回の動画生成タスクの行動。主に3つの行動が含まれます:文生動画(text2video)、図生動画(image2video)。文生動画の場合、現在はモデルwan2.6-t2vのみがサポートされています。図生動画の場合、現在はモデルwan2.6-i2v,wan2.6-r2v,wan2.6-i2v-flashのみがサポートされています。image_url:図生動画行動image2videoを選択した場合、必ずアップロードする初フレーム参照画像のリンクが必要です。現在はモデルwan2.6-i2v、wan2.6-i2v-flashのみがサポートされています。reference_video_urls:図生動画時にオプションで、生成に使用する参考動画のリンクを指定します。現在はモデルwan2.6-r2vのみがサポートされています。size:生成する動画の解像度を指定します。形式は幅*高さです。このパラメータのデフォルト値と利用可能な列挙値は model パラメータに依存します。具体的なルールは公式ドキュメントを参照してください。duration:動画生成の長さ。主に5、10、15がサポートされています。shot_type:オプションで、生成する動画のショットタイプを指定します。つまり、動画が1つの連続ショットで構成されるか、複数の切り替えショットで構成されるかです。発効条件:"prompt_extend": trueの場合のみ有効です。パラメータの優先順位:shot_type > prompt。例えば、shot_typeが”single”に設定されている場合、promptに「複数ショット動画を生成」と含まれていても、モデルは単一ショット動画を出力します。具体的なルールは公式ドキュメントを参照してください。negative_prompt:オプションで、逆のプロンプト。動画画面に表示したくない内容を説明するために使用され、動画画面に制限をかけることができます。中英文をサポートし、長さは500文字を超えないようにします。超過部分は自動的に切り捨てられます。例:低解像度、エラー、最悪の品質、低品質、欠損、余分な指、比率不良など。resolution:生成する動画の解像度の階層を指定し、動画の鮮明さ(総ピクセル)を調整します。モデルは選択した解像度の階層に基づいて、自動的に近い総ピクセルにスケーリングし、動画のアスペクト比は入力画像 img_url のアスペクト比とできるだけ一致させます。詳細は公式ドキュメントを参照してください。audio_url:音声ファイルのURL。モデルはこの音声を使用して動画を生成します。使用方法は公式ドキュメントを参照してください。audio:音声付き動画を生成するかどうか。パラメータの優先順位:audio > audio_url。audio=falseの場合、audio_urlを渡しても出力は無音動画となり、料金は無音動画として計算されます。デフォルト値はtrueです。prompt_extend:プロンプトのスマートリライトを有効にするかどうか。これを有効にすると、大きなモデルを使用して入力プロンプトをスマートにリライトします。短いプロンプトの場合、生成効果が顕著に向上しますが、時間がかかります。デフォルト値はtrueです。prompt:プロンプト。callback_url:結果をコールバックするURL。

success:この時点での動画生成タスクの状態。task_id:この時点での動画生成タスクID。video_url:この時点での動画生成タスクの動画リンク。state:この時点での動画生成タスクの状態。
video_url の動画リンクアドレスを取得するだけで、生成された通義万相動画を得ることができます。
また、対応する接続コードを生成したい場合は、生成されたものを直接コピーできます。例えば、CURLのコードは以下の通りです:
図生動画機能
もし参考画像や参考動画を使って動画を生成したい場合は、パラメータaction を image2video に設定し、参考画像のリンクまたは参考動画のリンクを入力する必要があります。次に、生成する動画をカスタマイズするために拡張する必要があるプロンプトを入力する必要があります。以下の内容を指定できます:
model:動画を生成するモデルで、主にwan2.6-i2v、wan2.6-r2v、wan2.6-i2v-flash、wan2.6-t2vモデルがあります。image_url:画像から動画を生成する行動image2videoを選択した場合、アップロードする必要がある最初のフレームの参考画像リンクで、現在はモデルwan2.6-i2v、wan2.6-i2v-flashのみがサポートされています。reference_video_urls:画像から動画を生成する際にオプションで、生成に使用する参考動画のリンクを指定します。現在はモデルwan2.6-r2vのみがサポートされています。prompt:プロンプト。


非同期コールバック
Wan Videos Generation API の生成時間は比較的長く、約 1-2 分かかります。API が長時間応答しない場合、HTTP リクエストは接続を維持し続け、追加のシステムリソースを消費するため、本 API では非同期コールバックのサポートも提供しています。 全体の流れは、クライアントがリクエストを発行する際に、追加でcallback_url フィールドを指定します。クライアントが API リクエストを発行した後、API はすぐに結果を返し、現在のタスク ID を示す task_id フィールド情報を含みます。タスクが完了すると、生成された動画の結果が POST JSON 形式でクライアントが指定した callback_url に送信され、その中にも task_id フィールドが含まれているため、タスクの結果を ID で関連付けることができます。
以下の例を通じて、具体的にどのように操作するかを理解しましょう。
まず、Webhook コールバックは HTTP リクエストを受信できるサービスで、開発者は自分が構築した HTTP サーバーの URL に置き換える必要があります。ここではデモのために、公開の Webhook サンプルサイト https://webhook.site/ を使用します。このサイトを開くと、Webhook URL が得られます。以下のように示されています:
この URL をコピーすれば、Webhook として使用できます。このサンプルは https://webhook.site/624b2c78-6dbd-4618-9d2b-b32eade6d8c3 です。
次に、フィールド callback_url を上記の Webhook URL に設定し、対応するパラメータを入力します。具体的な内容は以下のようになります:

https://webhook.site/624b2c78-6dbd-4618-9d2b-b32eade6d8c3 で生成された動画の結果を確認できます。以下のように示されています:
内容は以下の通りです:
task_id フィールドがあり、他のフィールドは上記と似ているため、このフィールドを通じてタスクの関連付けが可能です。
エラーハンドリング
API を呼び出す際にエラーが発生した場合、API は対応するエラーコードとメッセージを返します。例えば:400 token_mismatched:不正なリクエスト、パラメータが不足しているか無効である可能性があります。400 api_not_implemented:不正なリクエスト、パラメータが不足しているか無効である可能性があります。401 invalid_token:未認証、無効または不足している認証トークン。429 too_many_requests:リクエストが多すぎます、レート制限を超えています。500 api_error:内部サーバーエラー、サーバーで何かがうまくいきませんでした。

