> ## Documentation Index
> Fetch the complete documentation index at: https://comfyuiwiki.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Comfy Router クイックスタート

> 最新のフロンティアメディアモデルを使って、数分で画像とビデオを生成します。

<div className="router-quickstart-marker" />

Comfy Router は、`https://api.comfy.org` でホストされている画像・ビデオモデルを単一の API で利用できるようにします。[あなたの Comfy ワークスペース](https://platform.comfy.org/profile/api-keys?onboarding=router)で APIキーを作成し、公式の [Python と TypeScript SDK](/ja/development/api-development/sdks) またはプレーンな HTTP で任意のモデルを呼び出します。課金は従量制です。各リクエストはワークスペースの残高からクレジットを消費し、サブスクリプションはありません。

<Note>
  **Higgsfield をお使いですか？** ご自身の Higgsfield キーを保存すると、それらの生成は Comfy のクレジットではなく、Higgsfield アカウントに課金されます。エンドポイントもリクエストボディも同じです。詳細は[ご自身のキーで Higgsfield を使う](/ja/development/comfy-router/higgsfield-byok)をご覧ください。
</Note>

<Steps titleSize="h2">
  <Step title="APIキーを作成する">
    [あなたの Comfy ワークスペース](https://platform.comfy.org/profile/api-keys?onboarding=router)でキーを作成します。Bash 互換のターミナルで、次を設定します：

    ```bash theme={null}
    export COMFY_API_KEY="comfyui-..."
    ```

    APIキーはサーバー上またはローカル環境に保管してください。これらの例はターミナルまたはサーバー向けであり、ブラウザの JavaScript 向けではありません。

    Router はリクエストごとにクレジットを消費します。ワークスペースにクレジット残高がない場合、最初の実呼び出しは `error_type: insufficient_credits` とともに `402` を返します。このチェックはボディの検証が実行される前に実行されるため、クレジットのないワークスペースでは、無効なリクエストであっても `402` が返ることがあります。リクエストボディをデバッグする前に、[ワークスペースの請求](https://platform.comfy.org)でクレジットを追加してください。
  </Step>

  <Step title="リクエストをキューに送信する">
    言語を選択して例を実行します。生成には数分かかることがあります。

    <CodeGroup>
      ```python Python theme={null}
      # Python 3.10+
      # インストール: python -m pip install "comfy-sdk>=0.3.0"
      # quickstart.py として保存し、次を実行: python quickstart.py

      import asyncio

      from comfy_sdk import AsyncComfy

      # AsyncComfy は環境から COMFY_API_KEY を読み取ります。
      async def main():
          async with AsyncComfy() as client:
              handle = await client.models.submit(
                  "byteplus/dreamina-seedance-2-5-260628",
                  {
                      "content": [
                          {
                              "text": "A red fox trotting through a snowy pine forest",
                              "type": "text",
                          },
                      ],
                      "duration": 5,
                      "ratio": "16:9",
                      "resolution": "720p",
                  },
              )
              print("request_id:", handle.request_id)

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

              result = await handle.get()

          print("result:", result)

      asyncio.run(main())
      ```

      ```bash cURL theme={null}
      # 1. リクエストを送信します。201 レスポンスの request_id を保存します。
      curl https://api.comfy.org/v2/models/byteplus/dreamina-seedance-2-5-260628/requests \
        -H "X-API-Key: $COMFY_API_KEY" \
        -H "Idempotency-Key: $(uuidgen)" \
        -H "Content-Type: application/json" \
        -d '{"content": [{"text": "A red fox trotting through a snowy pine forest", "type": "text"}], "duration": 5, "ratio": "16:9", "resolution": "720p"}'

      # 2. ステータスが COMPLETED になるまでポーリングし、毎回 Retry-After の値だけ待機します。
      REQUEST_ID="paste-request-id-from-201-response"
      curl -i "https://api.comfy.org/v2/models/byteplus/dreamina-seedance-2-5-260628/requests/$REQUEST_ID/status" \
        -H "X-API-Key: $COMFY_API_KEY"

      # 3. モデルの結果を収集します。
      curl "https://api.comfy.org/v2/models/byteplus/dreamina-seedance-2-5-260628/requests/$REQUEST_ID" \
        -H "X-API-Key: $COMFY_API_KEY"
      ```

      ```typescript TypeScript theme={null}
      // Node.js 22+
      // インストール: npm install "@comfyorg/sdk@>=0.4.0" --save-dev tsx
      // quickstart.mts として保存し、次を実行: npx tsx quickstart.mts

      import { comfy } from "@comfyorg/sdk";

      // Comfy は環境から COMFY_API_KEY を読み取ります。
      const handle = await comfy.models.submit(
        "byteplus/dreamina-seedance-2-5-260628",
        {
          content: [
            {
              text: "A red fox trotting through a snowy pine forest",
              type: "text",
            },
          ],
          duration: 5,
          ratio: "16:9",
          resolution: "720p",
        },
      );
      console.log("requestId:", handle.requestId);

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

      const result = await handle.get();

      console.log("result:", result.data);
      ```
    </CodeGroup>

    SDK の各 submit 呼び出しは冪等キーを生成し、自動再試行のためにそれを再利用します。cURL の例では `uuidgen` でキーを生成します。利用できない場合は、別の UUID ジェネレーターを使用してください。ステータス、キャンセル、結果の収集の詳細については、[キュー配信](/ja/development/comfy-router/queue)をご覧ください。
  </Step>
</Steps>
