> ## Documentation Index
> Fetch the complete documentation index at: https://dripart-matt-router-pricing-pika-and-guard.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# HappyHorse 1.1 R2V を Comfy Router で使用する

> Comfy Router 経由で HTTP を通して wan/happyhorse-1.1-r2v を呼び出すための Python、TypeScript、cURL スニペット、およびリクエストフィールドと結果の形状

HappyHorse 1.1 R2V の API リファレンスです。HappyHorse 1.1 の参照から動画は、最大9枚の参照画像に写る被写体を新しいシーン全体で一貫させます。プロンプト内では character1、character2 のように指定します。

**入力：** 画像, テキスト · **出力：** ビデオ

## クイックスタート

[ご自身の Comfy ワークスペース](https://platform.comfy.org/profile/api-keys?onboarding=router)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python と TypeScript のスニペットは Comfy SDK（`pip install comfy-sdk` と `npm install @comfyorg/sdk`）を使用しています。cURL のスニペットは、同じ呼び出しを生の HTTP で実行するものです。

**モデル ID:** `wan/happyhorse-1.1-r2v`

**エンドポイント:** `POST https://api.comfy.org/v2/models/wan/happyhorse-1.1-r2v`

<Tabs defaultTabIndex={1}>
  <Tab title="結果を待つ">
    <CodeGroup>
      ```python Python theme={null}
      import asyncio
      from comfy_sdk import AsyncComfy

      # 環境変数から COMFY_API_KEY を読み取ります。
      # SDK は冪等性キーを自動的に作成し、自動リトライのために再利用します。
      async def main():
          async with AsyncComfy() as client:
              result = await client.models.run(
                  "wan/happyhorse-1.1-r2v",
                  {
                      "input": {
                          "prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop",
                          "media": [
                              {
                                  "type": "reference_image",
                                  "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png",
                              },
                          ],
                      },
                      "parameters": {
                          "resolution": "720P",
                          "duration": 5,
                      },
                  },
              )

          print("video:", result["output"]["video_url"])

      asyncio.run(main())
      ```

      ```typescript TypeScript theme={null}
      import { comfy } from "@comfyorg/sdk";

      // 環境変数から COMFY_API_KEY を読み取ります。
      // SDK は冪等性キーを自動的に作成し、自動リトライのために再利用します。
      type Result = { output: { video_url: string } };
      const result = await comfy.models.run<Result>("wan/happyhorse-1.1-r2v", {
        input: {
          prompt: "character1 walks in from the left, turns to the camera and waves, plain orange backdrop",
          media: [
            {
              type: "reference_image",
              url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png",
            },
          ],
        },
        parameters: {
          resolution: "720P",
          duration: 5,
        },
      });
      if (result.kind !== "json") throw new Error("expected a JSON result");

      console.log("video:", result.data.output.video_url);
      ```

      ```bash cURL theme={null}
      curl https://api.comfy.org/v2/models/wan/happyhorse-1.1-r2v \
        -H "X-API-Key: $COMFY_API_KEY" \
        -H "Idempotency-Key: $(uuidgen)" \
        -H "Content-Type: application/json" \
        -d "{\"input\": {\"prompt\":\"character1 walks in from the left, turns to the camera and waves, plain orange backdrop\",\"media\":[{\"type\":\"reference_image\",\"url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png\"}]}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}"
      ```
    </CodeGroup>
  </Tab>

  <Tab title="キューに送信して後で収集">
    同じボディを `POST https://api.comfy.org/v2/models/wan/happyhorse-1.1-r2v/requests` に送信します。Router は実行が受け付けられるとすぐに `201` と `request_id` を返し、結果は準備ができた時点で、このプロセスからでも別のプロセスからでも収集できます。[キュー配信](/ja/development/comfy-router/queue) では、ステータス、キャンセル、収集の流れを説明します。

    <CodeGroup>
      ```python Python theme={null}
      import asyncio
      from comfy_sdk import AsyncComfy

      # 環境変数から COMFY_API_KEY を読み取ります。
      # submit() 呼び出しごとに独自の Idempotency-Key を生成し、自動リトライで再利用します。
      async def main():
          async with AsyncComfy() as client:
              handle = await client.models.submit(
                  "wan/happyhorse-1.1-r2v",
                  {
                      "input": {
                          "prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop",
                          "media": [
                              {
                                  "type": "reference_image",
                                  "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png",
                              },
                          ],
                      },
                      "parameters": {
                          "resolution": "720P",
                          "duration": 5,
                      },
                  },
              )
              print("request_id:", handle.request_id)  # モデル ID と合わせて、別のプロセスに必要な情報はこれだけです

              # リクエストが完了するまでポーリングし、サーバーが指定する Retry-After の時間だけ待機します。
              async for update in handle.iter_events():
                  print(update.status, update.queue_position)

              # プロバイダー自身のペイロードで、models.run() が返すのと同じ値です。
              # 失敗またはキャンセル済みのリクエストは、ここで型付きの Router エラーを発生させます。
              result = await handle.get()

          print("video:", result["output"]["video_url"])

      asyncio.run(main())
      ```

      ```typescript TypeScript theme={null}
      import { comfy } from "@comfyorg/sdk";

      // 環境変数から COMFY_API_KEY を読み取ります。
      // submit() 呼び出しごとに独自の Idempotency-Key を生成し、自動リトライで再利用します。
      type Result = { output: { video_url: string } };
      const handle = await comfy.models.submit<Result>("wan/happyhorse-1.1-r2v", {
        input: {
          prompt: "character1 walks in from the left, turns to the camera and waves, plain orange backdrop",
          media: [
            {
              type: "reference_image",
              url: "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png",
            },
          ],
        },
        parameters: {
          resolution: "720P",
          duration: 5,
        },
      });
      console.log("requestId:", handle.requestId); // モデル ID と合わせて、別のプロセスに必要な情報はこれだけです

      // リクエストが完了するまでポーリングし、サーバーが指定する Retry-After の時間だけ待機します。
      for await (const update of handle.events()) {
        console.log(update.status, update.queuePosition);
      }

      // models.run() が返すのと同じ結果です。失敗またはキャンセル済みのリクエストはここで拒否されます。
      const result = await handle.get();
      if (result.kind !== "json") throw new Error("expected a JSON result");

      console.log("video:", result.data.output.video_url);
      ```

      ```bash cURL theme={null}
      # 1. 送信。Router は request_id、status_url、response_url、cancel_url とともに 201 を返します。
      curl https://api.comfy.org/v2/models/wan/happyhorse-1.1-r2v/requests \
        -H "X-API-Key: $COMFY_API_KEY" \
        -H "Idempotency-Key: $(uuidgen)" \
        -H "Content-Type: application/json" \
        -d "{\"input\": {\"prompt\":\"character1 walks in from the left, turns to the camera and waves, plain orange backdrop\",\"media\":[{\"type\":\"reference_image\",\"url\":\"https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png\"}]}, \"parameters\": {\"resolution\":\"720P\",\"duration\":5}}"

      # 2. ステータスが COMPLETED になるまでポーリングし、各レスポンスが指定する Retry-After の秒数だけ待機します。
      REQUEST_ID="<request_id from the 201 body>"
      curl -i https://api.comfy.org/v2/models/wan/happyhorse-1.1-r2v/requests/$REQUEST_ID/status \
        -H "X-API-Key: $COMFY_API_KEY"

      # 3. 収集。完了時はモデルのネイティブ出力とともに 200、まだ実行中の場合はステータスボディとともに 202 を返します。
      curl https://api.comfy.org/v2/models/wan/happyhorse-1.1-r2v/requests/$REQUEST_ID \
        -H "X-API-Key: $COMFY_API_KEY"
      ```
    </CodeGroup>
  </Tab>
</Tabs>

## スキーマ

### 入力

<ParamField body="input" type="object" required>
  プロンプトワードなどの基本情報を入力します。
</ParamField>

<ParamField body="input.audio_url" type="string">
  オーディオファイルのダウンロード URL。対応形式: mp3 および wav。reference\_video\_urls とは併用できません。
</ParamField>

<ParamField body="input.img_url" type="string">
  先頭フレーム画像の URL、または Base64 エンコードされたデータ。wan2.5-i2v-preview および
  wan2.6-i2v モデルでは必須です。happyhorse-1.x の i2v 系の呼称は、先頭フレームをここでは
  受け取りません。type が first\_frame の media 要素として受け取ります（後述の media を参照）。
  また、wan2.6-i2v では成功する img\_url ボディも、happyhorse-1.0-i2v と
  happyhorse-1.1-i2v ではプロバイダーに拒否されます。wan2.7/wan3.0 系の呼称も、
  参照アセットを media で受け取ります。画像形式: JPEG、JPG、PNG、BMP、WEBP。
  解像度: 360-2000 ピクセル。ファイルサイズ: 最大 10MB。
</ParamField>

<ParamField body="input.media" type="object[]">
  メディアアセットのリスト。動画生成のための参照素材（画像、オーディオ、ビデオ）を
  指定します。各要素は type と url フィールドを含みます。このフィールドはこの
  コンポーネントから提供されるすべてのモデルで共通であり、どのモデルがどの type 値を
  受け入れるか、また画像やビデオの入力を img\_url や reference\_video\_urls ではなく
  ここで渡すかどうかは、モデルによって異なります。モデルごとの対応 type 値:

  * wan2.7-i2v: first\_frame、last\_frame、driving\_audio、first\_clip。first\_frame と
    last\_frame: JPEG/JPG/PNG/BMP/WEBP、1辺あたり 240-8000 ピクセル、アスペクト比 1:8
    から 8:1 の間、最大 20MB、公開 URL または data:\{MIME\_type};base64,... URL。
    driving\_audio（WAV/MP3、2-30 秒、最大 15MB）と first\_clip（MP4/MOV、2-10
    秒、1辺あたり 240-4096 ピクセル、最大 100MB）: 公開 HTTP/HTTPS URL。インラインの
    data: URL は受け付けられません。
  * wan2.7-r2v: first\_frame（任意、最大 1）、reference\_image、reference\_video。少なくとも
    reference\_image または reference\_video が 1 つ必要で、参照画像と
    参照ビデオの合計は最大 5 です。first\_frame と reference\_image: JPEG/JPG/PNG/BMP/WEBP
    （アルファチャンネルなし）、1辺あたり 240-8000 ピクセル、アスペクト比 1:8 から 8:1 の間、最大
    20MB、公開 URL または data:\{MIME\_type};base64,... URL。reference\_video: 公開
    HTTP/HTTPS URL。インラインの data: URL は受け付けられません。
  * wan2.7-videoedit: video（ちょうど 1 つ。編集対象のクリップ: MP4/MOV、2-10 秒、
    1辺あたり 240-4096 ピクセル、最大 100MB、公開 HTTP/HTTPS URL。インラインの data: URL
    は受け付けられません）に加えて、任意で 0 から 4 つの reference\_image（JPEG/JPG/PNG/BMP/WEBP、
    1辺あたり 240-8000 ピクセル、アスペクト比 1:8 から 8:1 の間、最大 20MB、公開 URL
    または data:\{MIME\_type};base64,... URL）。
  * wan3.0-video、wan3.0-video-prime: first\_frame（最大 1）、last\_frame（最大 1）、
    reference\_image（最大 10）、reference\_video（最大 5 クリップ、合計再生時間 \<= 15s）、
    reference\_audio（最大 5 クリップ、合計再生時間 \<= 15s）、file（最大 1、link とは
    併用不可）、link（最大 1、file とは併用不可）。reference\_\*/file/link の type
    と first\_frame/last\_frame の type は、同じリクエスト内では同時に使用できません。
    配列の順序が、プロンプト内でのアセットの参照順序を定義します（画像 1、ビデオ 1、
    オーディオ 1、...）。first\_frame、last\_frame、reference\_image: JPEG/JPG/PNG/BMP/WEBP、
    1辺あたり 240-8000 ピクセル、アスペクト比は最大 8:1、最大 20MB、公開 URL または
    data:\{MIME\_type};base64,... URL。reference\_video、reference\_audio、file、link:
    公開 HTTP/HTTPS URL。インラインの data: URL は受け付けられません。
  * happyhorse-1.0-i2v、happyhorse-1.1-i2v: first\_frame のみ、ちょうど 1 つ。これらの呼称
    は先頭フレームをここで受け取り、img\_url では受け取りません。少なくとも 300x300
    ピクセル、アスペクト比 1:2.5 から 2.5:1 の間、JPEG/JPG/PNG/WEBP、最大 20MB、公開 URL
    または data:\{MIME\_type};base64,... URL。
  * happyhorse-1.0-r2v、happyhorse-1.1-r2v: reference\_image のみ、1 から 9 個。これが
    このモデル唯一の参照入力です。最短辺が少なくとも 400 ピクセル、JPEG/JPG/PNG/WEBP、
    最大 20MB、公開 URL または data:\{MIME\_type};base64,... URL。reference\_video は
    この操作の入力タイプではありません。
  * happyhorse-1.0-video-edit: video（ちょうど 1 つ。編集対象のクリップ: MP4/MOV、3-60
    秒、長辺が最大 4096 ピクセル、短辺が少なくとも 360 ピクセル、アスペクト
    比 1:2.5 から 2.5:1 の間、最大 100MB、公開 HTTP/HTTPS URL。インラインの data:
    URL は受け付けられません）に加えて、任意で 0 から 5 つの reference\_image（JPEG/JPG/PNG/BMP/WEBP、
    少なくとも 300x300 ピクセル、アスペクト比 1:2.5 から 2.5:1 の間、最大 20MB、公開 URL
    または data:\{MIME\_type};base64,... URL）。
  * happyhorse-1.0-t2v、happyhorse-1.1-t2v、wan2.7-t2v、wan2.6-t2v、wan2.5-t2v-preview:
    テキストから動画への操作。これらのパートナーのリファレンスには media 入力の記載が
    ないため、このフィールドは未設定のままにしてください。
  * wan2.5-i2v-preview、wan2.6-i2v、wan2.6-r2v: このコンポーネントはこれらの呼称に
    ついて media の語彙を列挙していません。wan2.5-i2v-preview と wan2.6-i2v は先頭
    フレームを img\_url で受け取り、wan2.6-r2v は参照クリップを reference\_video\_urls で
    受け取ります。
    上記のモデルごとの個数は、このスキーマの制約ではなくパートナーの制約です。media
    には minItems/maxItems が宣言されていません。許容される type とその上限は
    モデルごとに異なるためです。スキーマで受け入れられることは、プロバイダーが受け入れ
    ることを意味しません。また逆に、上記のアセットごとの「最大 20MB」という数値
    （画像入力の上限であり、インラインで送信できる唯一の入力です）は、最終的に
    受け取るアセットに対するパートナーの上限であり、アセットが公開 URL の場合は
    そのまま適用されます。そのバイト列が Comfy を経由することはないためです。
    インラインの data:\{MIME\_type};base64,... URL は Comfy を経由するため、
    転送時の上限にも当てはまります。Comfy Router の POST ボディは合計で 100 MiB に
    制限され、それを超えると 413 が返されます。また base64 はペイロードを約 4/3 に
    膨らませるため、およそ 75 MB を超える単一のインラインアセットは、ここにある
    パートナーのルールのいずれかに到達する前に拒否されます。そのサイズでは、
    パートナー自身の20MB の上限であればインラインで問題なく収まるため、アセットが 1 つの場合はパートナーのルールが制約となります。複数のアセットにまたがる場合は、転送時の上限が制約となります。100 MiB の Router 上限は各要素ではなくリクエスト全体を制限するためです。これらの上限に近いものは public URL として送信してください。
</ParamField>

<ParamField body="input.media[].type" type="string" required>
  メディアアセットの種類

  指定可能な値: `first_frame`, `last_frame`, `driving_audio`, `first_clip`, `reference_image`, `reference_video`, `reference_audio`, `video`, `file`, `link`
</ParamField>

<ParamField body="input.media[].url" type="string" required>
  メディアファイルの URL: 公開 HTTP/HTTPS URL、または（上記の `media` の説明で各モデルごとに挙げられているまさに IMAGE 入力、すなわち wan2.7-i2v の first\_frame と last\_frame、wan2.7-r2v の first\_frame と reference\_image、wan2.7-videoedit の reference\_image、wan3.0-video と wan3.0-video-prime の first\_frame、last\_frame、reference\_image、happyhorse-1.0-i2v と happyhorse-1.1-i2v の first\_frame、happyhorse-1.0-r2v と happyhorse-1.1-r2v の reference\_image、happyhorse-1.0-video-edit の reference\_image に限られます）インラインの `data:{MIME_type};base64,...` URL。これらのモデルの video、audio、file、link 入力はいずれもインラインの data: URL を受け付けません。パートナー自身のアップロードサービスが発行する oss\://dashscope-instant の一時 URL、または（wan2.7-videoedit では）Asset Center の asset\_id は、それをアップロードした Alibaba Cloud アカウントに対してのみ解決されます。Comfy は自身のキーでモデルを呼び出し、アップロード用のルートを公開していないため、呼び出し元自身の oss\:// URL や asset\_id はサポートされる入力ではありません。このフィールドは URL スキームを検証しないため、そのような値はここで拒否されることなく、そのままパートナーへ転送されます。モデルごとのサイズとピクセルの上限、およびインラインのペイロードを全体として制限する 100 MiB の Router リクエストボディ上限については、`media` の説明を参照してください。
</ParamField>

<ParamField body="input.negative_prompt" type="string">
  ネガティブプロンプトの語句は、ビデオ画面に表示したくないコンテンツを記述するために使用します
</ParamField>

<ParamField body="input.prompt" type="string">
  テキストプロンプトの語句。中国語と英語をサポートし、長さは 800 文字以内です
  （wan3.0-video では最大 20,000 文字。上限を超えた内容は切り捨てられます）。
  複数の参照ビデオを使用する wan2.6-r2v では、参照ビデオの順序に合わせて 'character1'、'character2' などで被写体を参照してください。例：「Character1 が道端で歌い、Character2 がその横で踊る」
  wan3.0-video の参照モードでは、media 配列内の対応する順序に合わせて 'Image 1'、'Video 1'、'Audio 1' などでメディアアセットを参照してください。
</ParamField>

<ParamField body="input.reference_video_urls" type="string[]">
  wan2.6-r2v モデル専用の参照ビデオ URL。1～3 本のビデオ URL の配列です。
  入力の制限:

  * 形式: mp4、mov
  * 本数: 1～3 本のビデオ
  * 単一ビデオの長さ: 2～30 秒
  * 単一ファイルサイズ: 最大 30MB
  * audio\_url と併用できません
    参照の再生時間: 単一ビデオは最大 5 秒、2 本のビデオはそれぞれ最大 2.5 秒、3 本のビデオはそれに比例して短くなります。
    課金: 実際に使用した参照の再生時間に基づきます。
</ParamField>

<ParamField body="input.template" type="string">
  ビデオエフェクトのテンプレート名。任意です。現在サポートされているのは squish、flying、carousel です。使用した場合、prompt パラメータは無視されます。
</ParamField>

<ParamField body="model" type="string">
  呼び出すモデルの ID。このコンポーネントでは制約されません。Comfy Router が `POST /v2/models/wan/{model}` の `{model}` パスセグメントから設定するため、Router の呼び出し元はこれを省略します。`POST /proxy/wan/api/v1/services/aigc/video-generation/video-synthesis` への直接の v1 呼び出しでは必ず指定する必要があり、受け付けられる表記の enum はその操作自身のコンポーネント `WanVideoGenerationRequest` にあります。
</ParamField>

<ParamField body="parameters" type="object">
  ビデオ処理パラメータ
</ParamField>

<ParamField body="parameters.audio" type="boolean" default="true">
  ビデオにオーディオを追加するかどうか。wan3.0-video と wan3.0-video-prime でのみサポートされます。プロバイダーは他の wan モデルについてはこのような切り替えを文書化していません。
</ParamField>

<ParamField body="parameters.audio_setting" type="string" default="&#x22;auto&#x22;">
  wan2.7-videoedit モデルのビデオオーディオ設定。

  * auto（デフォルト）: モデルがプロンプトの内容に基づいてインテリジェントに判断します
  * origin: 入力ビデオのオリジナルオーディオを強制的に保持します

    指定可能な値: `auto`, `origin`
</ParamField>

<ParamField body="parameters.duration" type="integer" default="5">
  生成されるビデオの再生時間（秒）:

  * wan2.5 モデル: 5 秒または 10 秒
  * wan2.6-t2v、wan2.6-i2v: 5 秒、10 秒、または 15 秒
  * wan2.6-r2v: 5 秒または 10 秒のみ（15 秒はサポートされません）
  * wan2.7-i2v、wan2.7-t2v: \[2, 15] の整数
  * wan2.7-r2v、wan2.7-videoedit: \[2, 10] の整数
  * wan3.0-video: ビデオ入力なしの場合は \[2, 30] の整数。ビデオ入力がある場合は
    入力ビデオの再生時間と出力ビデオの再生時間の合計が 30 秒を超えてはなりません。-1 を指定すると
    スマート再生時間モードが有効になり、モデルが適切な再生時間を選択します
    このプロキシは \[-1, 30] の範囲外の再生時間に対して 400 を返します。

    範囲: `-1` ～ `30`
</ParamField>

<ParamField body="parameters.prompt_extend" type="boolean" default="true">
  プロンプトのインテリジェントな書き換えを有効にするかどうか。デフォルトは true です
</ParamField>

<ParamField body="parameters.ratio" type="string">
  生成されるビデオのアスペクト比。wan2.7 および wan3.0 モデル専用です。
  wan2.7 モデルでは、指定しない場合、解像度の階層に基づいてデフォルト値が決まります。
  wan3.0-video では、adaptive（デフォルト）が入力メディアの縦横比と意図に基づいて
  適切なアスペクト比を自動的に推奨します。

  指定可能な値: `adaptive`, `16:9`, `9:16`, `1:1`, `4:3`, `3:4`
</ParamField>

<ParamField body="parameters.resolution" type="string">
  解像度レベル。サポートされる値はモデルによって異なります:

  * wan2.5-i2v-preview: 480P、720P、1080P
  * wan2.6 モデル（t2v、i2v、r2v）: 720P、1080P のみ（480P はサポートされません）
  * wan2.7 モデル（i2v、t2v、r2v、videoedit）: 720P、1080P（デフォルト 1080P）
  * wan3.0-video, wan3.0-video-prime: 480P、720P、1080P（上流のデフォルトは 1080P）
  * happyhorse-1.0-\* (t2v, i2v, r2v, video-edit): 720P、1080P
  * happyhorse-1.1-\* (t2v, i2v, r2v): 480P、720P、1080P
    このプロキシは、解像度もサイズも指定されていないビデオ生成リクエストを拒否します。解像度の階層が課金レートを決定するためです。解像度はチェックの前に大文字に変換し、変換後の値を転送します。この enum に含まれない値には 400 を返し、上記で 480P 非対応として挙げられている wan2.6、wan2.7、happyhorse-1.0 モデルでは、480P（解像度として送信された場合も、480P のサイズとして送信された場合も）に対して 400 を返します。

    可能な値: `480P`, `720P`, `1080P`
</ParamField>

<ParamField body="parameters.seed" type="integer">
  乱数シード。モデルが生成するコンテンツのランダム性を制御するために使用します

  範囲: `0` から `2147483647` まで
</ParamField>

<ParamField body="parameters.shot_type" type="string" default="&#x22;single&#x22;">
  インテリジェントなマルチレンズ制御。prompt\_extend が有効な場合にのみ機能します。
  wan2.6 および wan2.7-r2v モデル向け。

  * single: シングルショットビデオ（デフォルト）
  * multi: マルチショットビデオ

    可能な値: `multi`, `single`
</ParamField>

<ParamField body="parameters.size" type="string">
  幅*高さ形式のビデオ解像度。対応する解像度はモデルによって異なります:
  wan2.5 T2V の場合: 480P（480*832、832*480、624*624）、720P、1080P のサイズ
  wan2.6 T2V/R2V の場合（480P なし）:
  720P: 1280*720, 720*1280, 960*960, 1088*832, 832*1088
  1080P: 1920*1080, 1080*1920, 1440*1440, 1632*1248, 1248*1632
  サイズと解像度の両方を送信した場合、課金される階層はサイズによって決まり、
  解像度は依然としてこのプロキシがそのモデルに対して受け付ける値である必要があります。480P のサイズは、
  解像度の説明で 480P 非対応として挙げられているすべてのモデルで 400 を返します。
</ParamField>

<ParamField body="parameters.watermark" type="boolean" default="false">
  透かしロゴを追加するかどうか。透かしは右下隅に配置されます
</ParamField>

Router が `GET /v2/models/wan/happyhorse-1.1-r2v/openapi.json` で提供するスキーマから生成されています。これは、リクエストがプロバイダーに到達する前に Router が呼び出しを検証する対象となるドキュメントと同じものです。

### 出力

<ResponseField name="output" type="object" required />

<ResponseField name="output.actual_prompt" type="string">
  インテリジェントな書き換え後の実際のプロンプト（ビデオタスク用）
</ResponseField>

<ResponseField name="output.check_audio" type="string">
  オーディオ生成を伴うI2Vタスク用のオーディオURL
</ResponseField>

<ResponseField name="output.code" type="string">
  失敗したリクエストのエラーコード（リクエストが成功した場合は返されません）
</ResponseField>

<ResponseField name="output.end_time" type="string">
  タスクの完了時間
</ResponseField>

<ResponseField name="output.message" type="string">
  失敗したリクエストに関する詳細情報（リクエストが成功した場合は返されません）
</ResponseField>

<ResponseField name="output.orig_prompt" type="string">
  オリジナルの入力プロンプト（ビデオタスク用）
</ResponseField>

<ResponseField name="output.results" type="object[]">
  画像生成タスクのタスク結果のリスト
</ResponseField>

<ResponseField name="output.results[].actual_prompt" type="string">
  インテリジェントな書き換え後の実際のプロンプト（有効な場合）
</ResponseField>

<ResponseField name="output.results[].code" type="string">
  画像のエラーコード（一部のタスクが失敗した場合に返されます）
</ResponseField>

<ResponseField name="output.results[].message" type="string">
  画像のエラー情報（一部のタスクが失敗した場合に返されます）
</ResponseField>

<ResponseField name="output.results[].orig_prompt" type="string">
  オリジナルの入力プロンプト
</ResponseField>

<ResponseField name="output.results[].url" type="string">
  生成された画像のURLアドレス
</ResponseField>

<ResponseField name="output.scheduled_time" type="string">
  タスクの実行時間
</ResponseField>

<ResponseField name="output.submit_time" type="string">
  タスクの送信時間
</ResponseField>

<ResponseField name="output.task_id" type="string" required>
  タスクID
</ResponseField>

<ResponseField name="output.task_metrics" type="object">
  画像生成タスクのタスク結果統計
</ResponseField>

<ResponseField name="output.task_metrics.FAILED" type="integer">
  失敗したタスクの数
</ResponseField>

<ResponseField name="output.task_metrics.SUCCEEDED" type="integer">
  成功したタスクの数
</ResponseField>

<ResponseField name="output.task_metrics.TOTAL" type="integer">
  タスクの総数
</ResponseField>

<ResponseField name="output.task_status" type="string" required>
  タスクステータス

  指定可能な値: `PENDING`、`RUNNING`、`SUCCEEDED`、`FAILED`、`CANCELED`、`UNKNOWN`
</ResponseField>

<ResponseField name="output.video_url" type="string">
  完了したビデオ生成タスクのビデオURL。リンクの有効期間は24時間です
</ResponseField>

<ResponseField name="request_id" type="string" required>
  一意のリクエスト識別子
</ResponseField>

<ResponseField name="usage" type="object">
  出力情報の統計。成功した結果のみがカウントされます
</ResponseField>

<ResponseField name="usage.SR" type="integer">
  ビデオ解像度レベル（I2Vおよびwan3.0-videoタスク）
</ResponseField>

<ResponseField name="usage.duration" type="number">
  生成されたビデオの再生時間（秒）（I2Vおよびwan3.0-videoタスク）
</ResponseField>

<ResponseField name="usage.fps" type="integer">
  生成されたビデオのフレームレート（wan3.0-videoタスク）
</ResponseField>

<ResponseField name="usage.image_count" type="integer">
  生成された画像の数（T2IおよびI2Iタスク）
</ResponseField>

<ResponseField name="usage.input_video_duration" type="number">
  入力ビデオの再生時間（秒）。ビデオ入力がない場合は0.0（wan3.0-videoタスク）
</ResponseField>

<ResponseField name="usage.output_video_duration" type="number">
  出力ビデオの再生時間（秒）（wan3.0-videoタスク）
</ResponseField>

<ResponseField name="usage.ratio" type="string">
  生成されたビデオのアスペクト比（例: 16:9）（wan3.0-videoタスク）
</ResponseField>

<ResponseField name="usage.size" type="string">
  画像の解像度（T2IおよびI2Iタスク）
</ResponseField>

<ResponseField name="usage.video_count" type="integer">
  生成されたビデオの数（T2Vタスク）
</ResponseField>

<ResponseField name="usage.video_duration" type="number">
  生成されたビデオの再生時間（秒）（T2Vタスク）
</ResponseField>

<ResponseField name="usage.video_ratio" type="string">
  ビデオ解像度の比率（T2Vタスク）
</ResponseField>

<ResponseField name="code" type="string">
  失敗したリクエストのエラーコード。`output` の下ではなくエンベロープのルートで報告されます（リクエストが成功した場合は返されません）。
</ResponseField>

<ResponseField name="message" type="string">
  失敗したリクエストに関する詳細情報。`output` の下ではなくエンベロープのルートで報告されます（リクエストが成功した場合は返されません）。`output.message` にフォールバックする前にこれを確認してください。
</ResponseField>

## 例

### 入力

```json theme={null}
{
  "input": {
    "prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop",
    "media": [
      {
        "type": "reference_image",
        "url": "https://raw.githubusercontent.com/Comfy-Org/workflow_templates/main/input/pink_robot_front.png"
      }
    ]
  },
  "parameters": {
    "resolution": "720P",
    "duration": 5
  }
}
```

### 出力

```json theme={null}
{
  "output": {
    "task_id": "0385dc79-5ff8-4d82-bcb6-7c1a9f2e4d60",
    "task_status": "SUCCEEDED",
    "submit_time": "2027-01-01T00:00:00.000Z",
    "scheduled_time": "2027-01-01T00:00:01.000Z",
    "end_time": "2027-01-01T00:01:04.000Z",
    "orig_prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop",
    "actual_prompt": "character1 walks in from the left, turns to the camera and waves, plain orange backdrop, even studio lighting, steady medium shot",
    "video_url": "https://.../generated.mp4"
  },
  "request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51",
  "usage": {
    "SR": 720,
    "duration": 5
  }
}
```

ビデオの URL は 24 時間有効です。保存する必要がある場合は、速やかにビデオをダウンロードしてください。

## 出荷前の確認

SDK は `Idempotency-Key` を生成し、自動リトライで再利用します。手動リトライでは元のキーを再利用してください。Router は最大 10 分間接続を保持できます。

リクエストが失敗すると、Router は理由を説明する `X-Comfy-Error-Type` レスポンスヘッダーを送信します。`422` は、プロバイダーを呼び出す前に Router が入力を拒否したことを意味し、`413` はリクエスト本文が Router の受け入れ可能なサイズを超えていたことを意味します。生成されたアセットは [結果 URL の有効期限](/ja/development/comfy-router/reference#結果アセット) があるため、早めにダウンロードしてください。

上記のフィールド説明に記載されているサイズ制限は、プロバイダーの仕様から引用した、そのフィールドに対するプロバイダー自身の上限です。Router はリクエスト本文全体に対して別の上限を適用し、base64 エンコードされたメディアもこれにカウントされます。[リクエスト本文のサイズ](/ja/development/comfy-router/limitations) を参照してください。

このページは、Comfy Router 経由で呼び出す 1 つのパートナーモデルについて説明しています。同じ `comfy-sdk` / `@comfyorg/sdk` パッケージには、Comfy Cloud 上で ComfyUI のワークフローグラフ全体を実行するための 2 つ目のクライアントも含まれています: `Comfy(api_key=...)` / `new Comfy({ apiKey })`、および `client.workflows`、`client.assets`、`client.jobs`。[Comfy SDKs](/ja/development/api-development/sdks) を参照してください。

<CardGroup cols={3}>
  <Card title="ヘッダー" icon="list" href="/ja/development/comfy-router/headers">
    認証、冪等性、リクエスト ID、エラー分類、リトライ間隔、支出上限。
  </Card>

  <Card title="Router API の利用" icon="code" href="/ja/development/comfy-router/api">
    モデルの検出、バリデーションエラー、リトライ、課金。
  </Card>

  <Card title="制限事項" icon="triangle-exclamation" href="/ja/development/comfy-router/limitations">
    Router が現在対応していないことと、代替手段。
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.