Skip to main content
モデル ID でアドレス指定される Comfy Router の正規ルート。 ベース URL: https://api.comfy.org 以下のすべてのエンドポイントは認証が必要です。X-API-Key: <api-key> または Authorization: Bearer <jwt> を送信してください。 Comfy API キーは Bearer トークンとして送信することもできます。両方の認証ヘッダーが指定された場合、X-API-Key が優先されます。キーと JWT の違いについては認証ヘッダーを、アクセス要件についてはクイックスタートを参照してください。

エンドポイント

GET /v2/models

Comfy Router が実行できるモデルを一覧表示します。 利用可能なモデル ID と課金情報を一覧表示します。has_more が true の間は next_cursor を使用します。 パラメータ
RouterPageCursor
不透明なページネーションカーソル。型: RouterPageCursornext_cursor として返される不透明なカーソル、1〜512文字
integer
1ページに返すモデル数。最大 100、デフォルト: 20
レスポンス
RouterModelListResponse
OK: モデルカタログの1ページ。本文: RouterModelListResponse、ヘッダー: X-Comfy-Request-Id
RouterErrorResponse
無効なリクエストです。エラータイプとリクエスト本文を確認してください。本文: RouterErrorResponse、ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-Id
RouterErrorResponse
認証情報が不足しているか、無効です。本文: RouterErrorResponse、ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-Id
RouterErrorResponse
この呼び出し元またはモデルに対して、リクエストは許可されていません。本文: RouterErrorResponse、ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-Id
RouterErrorResponse
Router は一時的に利用できません。バックオフして再試行してください。本文: RouterErrorResponse、ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-Id

GET /v2/models/{provider}/{model}

正規のモデル ID でパートナーモデル 1 件のカタログエントリを読み取ります。 カタログ全体を一覧表示せずに、1 つのモデルの詳細を読み取ります。 パラメータ
RouterProviderSegment
必須
正規の {provider}/{model} モデル ID のプロバイダー部分。型: RouterProviderSegment — 英数字スラッグ(例: anthropic)、最大 64 文字
RouterModelSegment
必須
正規の {provider}/{model} モデル ID のモデル部分。型: RouterModelSegment — 英数字スラッグ(例: claude-opus-4-6)、最大 128 文字
レスポンス
RouterModelDetail
OK - モデルのカタログエントリ。ボディ: RouterModelDetail — ヘッダー: X-Comfy-Request-Id
RouterErrorResponse
認証情報が不足しているか無効です。ボディ: RouterErrorResponse — ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-Id
RouterErrorResponse
この呼び出し元またはモデルに対して、リクエストは許可されていません。ボディ: RouterErrorResponse — ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-Id
RouterErrorResponse
モデル ID が見つかりませんでした。ボディ: RouterErrorResponse — ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-Id
RouterErrorResponse
Router は一時的に利用できません。バックオフしながら再試行してください。ボディ: RouterErrorResponse — ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-Id

POST /v2/models/{provider}/{model}

正規のモデル ID を指定してパートナーモデルを同期的に実行します。 モデルを実行し、完了した結果を同じレスポンスで受け取ります。 パラメータ
RouterProviderSegment
必須
正規の {provider}/{model} モデル ID のプロバイダー部分。型: RouterProviderSegment: 英数字スラッグ(例: anthropic)、最大 64 文字
RouterModelSegment
必須
正規の {provider}/{model} モデル ID のモデル部分。型: RouterModelSegment: 英数字スラッグ(例: claude-opus-4-6)、最大 128 文字
string
1 つの論理的な呼び出しを安全に再試行できるようにする、呼び出し元が生成するキー。1~255 文字
string
このモデルの現在のデフォルトではなく、別のプロバイダーを選択します。
boolean
model_provider と併用する場合にのみ意味を持ちます。デフォルト: False
string
最初の試行が Router 自身の側に起因する理由、または試行した特定のプロバイダーに起因する理由で失敗した場合に、Router がそのモデルの他の登録済みプロバイダーに対してこの呼び出しを再試行するかどうかを制御します。リクエスト自体に起因する理由で再試行されることは決してありません(再試行されない失敗は、これまでとまったく同じように拒否されます)。
リクエストボディ application/json: RouterModelInput(必須) パートナーモデル固有の JSON 入力。model_provider を指定しない場合、または strict_mode=true の場合は、そのままプロバイダーに転送されます。strict_mode=true の場合、ボディはすでに代替プロバイダー自身の実際のスキーマである必要があり、このモデル固有のスキーマではありません(strict_mode を参照)。model_provider で代替プロバイダーを選択し、strict_mode=false(デフォルト)の場合は、送信前にボディがそのプロバイダーの実際のスキーマへ変換されます。正確に表現できない固有のフィールドは破棄され、レスポンスの X-Comfy-Router-Dropped-Params ヘッダーで開示されます。決して黙って破棄されることはありません。 レスポンス
RouterModelOutput
OK: model_provider がない場合、または model_provider があり strict_mode=false(デフォルト)の場合は、可能なときはこのモデル固有の契約に変換し戻され、変換に失敗した場合は代替プロバイダー自身の生のレスポンスにフォールバックします(ログに記録され、決して黙って行われることはありません)。形状はこのモデル固有の出力です。strict_mode=true の場合は、代替プロバイダーのレスポンスがそのまま返されます。ボディ: RouterModelOutput: ヘッダー: X-Comfy-Request-IdX-Content-Type-OptionsX-Comfy-Router-Fallback-ProviderX-Comfy-Router-Dropped-ParamsIdempotent-ReplayedX-Committed-Spend-LimitX-Committed-Spend-CurrentX-Committed-Spend-Remaining
RouterErrorResponse
無効なリクエストです。エラータイプとリクエストボディを確認してください。ボディ: RouterErrorResponse: ヘッダー: X-Comfy-Error-TypeX-Comfy-Request-IdX-Comfy-Upstream-StatusIdempotent-Replayed
RouterErrorResponse
認証情報が不足しているか、無効です。ボディ: RouterErrorResponse: ヘッダー: X-Comfy-Error-TypeX-Comfy-Request-Id
RouterErrorResponse
この呼び出し元またはモデルに対して、このリクエストは許可されていません。ボディ: RouterErrorResponse: ヘッダー: X-Comfy-Error-TypeX-Comfy-Request-Id
RouterErrorResponse
モデル ID が見つかりませんでした。ボディ: RouterErrorResponse: ヘッダー: X-Comfy-Error-TypeX-Comfy-Request-Id
RouterErrorResponse
X-Comfy-Error-Type を確認してください: concurrency_limit_exceeded は元の呼び出しがまだ実行中であることを意味するため、Retry-After を待って同じキーを再利用してください。invalid_input の場合は新しいキーが必要です。ボディ: RouterErrorResponse: ヘッダー: X-Comfy-Error-TypeX-Comfy-Request-IdRetry-Afterconcurrency_limit_exceeded の場合)
RouterErrorResponse
リクエストボディが大きすぎます。ボディ: RouterErrorResponse: ヘッダー: X-Comfy-Error-TypeX-Comfy-Request-Id
RouterValidationErrorResponse
リクエストの内容がモデルのスキーマに対して拒否されました。ボディ: RouterValidationErrorResponse: ヘッダー: X-Comfy-Error-TypeX-Comfy-Request-IdIdempotent-Replayed
RouterErrorResponse
X-Comfy-Error-Type を確認してください: concurrency_limit_exceeded は実行中の呼び出しを減らすことを意味し、rate_limited は許可ウィンドウを待つことを意味します。ボディ: RouterErrorResponse: ヘッダー: X-Comfy-Error-TypeX-Comfy-Request-IdX-Committed-Spend-LimitX-Committed-Spend-CurrentX-Committed-Spend-Remaining
RouterErrorResponse
プロバイダー自身のレスポンスを結果に変換できませんでした(provider_error)。ボディ: RouterErrorResponse: ヘッダー: X-Comfy-Error-TypeX-Comfy-Request-IdX-Comfy-Upstream-Status
RouterErrorResponse
Router は一時的に利用できません。バックオフして再試行してください。ボディ: RouterErrorResponse: ヘッダー: X-Comfy-Error-TypeX-Comfy-Request-Id
RouterErrorResponse
リクエストがデッドラインを超過しました。再試行する前にエラータイプを確認してください。ボディ: RouterErrorResponse。ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-Id, X-Comfy-Upstream-Status, Retry-After

GET /v2/models/{provider}/{model}/openapi.json

1 つのパートナーモデルの入力スキーマと出力スキーマを OpenAPI ドキュメントとして読み取ります。 1 つのモデルの入力スキーマと出力スキーマを単体の OpenAPI ドキュメントとして読み取ります。 パラメータ
RouterProviderSegment
必須
正規の {provider}/{model} モデル ID のプロバイダー部分。型: RouterProviderSegment — 英数字のスラッグ(例: anthropic)、最大 64 文字
RouterModelSegment
必須
正規の {provider}/{model} モデル ID のモデル部分。型: RouterModelSegment — 英数字のスラッグ(例: claude-opus-4-6)、最大 128 文字
string
呼び出し元が以前の 200 で保持した ETag
レスポンス
RouterModelInputSchemaDocument
OK - モデルの入力スキーマと出力スキーマを、単体の OpenAPI ドキュメントとして返します。ボディ: RouterModelInputSchemaDocument — ヘッダー: X-Comfy-Request-IdETagCache-Control
no body
Not Modified - 呼び出し元が If-None-Match で送信した ETag 以降、ドキュメントは変更されていません。ヘッダー: X-Comfy-Request-IdETagCache-Control
RouterErrorResponse
認証情報が不足しているか無効です。ボディ: RouterErrorResponse — ヘッダー: X-Comfy-Error-TypeX-Comfy-Request-Id
RouterErrorResponse
この呼び出し元またはモデルに対して、リクエストは許可されていません。ボディ: RouterErrorResponse — ヘッダー: X-Comfy-Error-TypeX-Comfy-Request-Id
RouterErrorResponse
モデル ID が見つかりませんでした。ボディ: RouterErrorResponse — ヘッダー: X-Comfy-Error-TypeX-Comfy-Request-Id
RouterErrorResponse
Router がリクエストを完了できませんでした。ボディ: RouterErrorResponse — ヘッダー: X-Comfy-Error-TypeX-Comfy-Request-Id
RouterErrorResponse
Router は一時的に利用できません。バックオフして再試行してください。ボディ: RouterErrorResponse — ヘッダー: X-Comfy-Error-TypeX-Comfy-Request-Id

POST /v2/models/{provider}/{model}/requests

パートナーモデルの実行をキューに送信し、即座に応答を返します。 Comfy Router のキュー配信モードです。リクエストボディは、このモデルに対して POST /v2/models/{provider}/{model} が受け付けるものと同じパートナー固有の JSON 入力です(1つのボディ形状、モデルごとに1つのスキーマ、2つの配信モード)。ただしこのルートは結果を待つ間コネクションを保持しません。実行を受け付けてハンドルとともに 201 を返し、呼び出し元は後述の3つの読み取りを通じて後で結果を取得します。 パラメータ
RouterProviderSegment
必須
正規の {provider}/{model} モデル ID の小文字プロバイダーセグメント。実行対象のモデルを持つパートナーです。Type: RouterProviderSegment — 英数字スラグ(例: anthropic)、最大64文字
RouterModelSegment
必須
正規の {provider}/{model} モデル ID の小文字モデルセグメント。そのプロバイダー内で実行するモデルです。Type: RouterModelSegment — 英数字スラグ(例: claude-opus-4-6)、最大128文字
string
1つの論理的な呼び出しを安全に再試行できるようにする、呼び出し元が生成するキー。1~255文字
リクエストボディ application/jsonRouterModelInput(必須) パートナーモデル固有の JSON 入力で、このモデルに対して同期ルートが受け付けるボディと同一です。実行が受け付けられる前にモデル自身の入力スキーマに対して検証されるため、モデルが拒否するボディは、数分後に失敗するキュー中のリクエストではなく、ここで 422 となります。 レスポンス
RouterQueueSubmitResponse
Created - 実行がキューに受け付けられました。Body: RouterQueueSubmitResponse — Headers: X-Comfy-Request-Id, Idempotent-Replayed
RouterErrorResponse
認証情報が不足しているか無効です。Body: RouterErrorResponse — Headers: X-Comfy-Error-Type, X-Comfy-Request-Id
RouterErrorResponse
無効なリクエストです。エラータイプとリクエストボディを確認してください。Body: RouterErrorResponse — Headers: X-Comfy-Error-Type, X-Comfy-Request-Id
RouterErrorResponse
リクエストボディが大きすぎます。Body: RouterErrorResponse — Headers: X-Comfy-Error-Type, X-Comfy-Request-Id
RouterErrorResponse
Router のリクエストレベルの失敗。リクエストがモデルに到達しなかったか、モデル自身が報告しなかった理由で失敗しました。Body: RouterErrorResponse — Headers: X-Comfy-Error-Type, X-Comfy-Request-Id
RouterErrorResponse
この呼び出し元またはモデルに対してリクエストが許可されていません。Body: RouterErrorResponse — Headers: X-Comfy-Error-Type, X-Comfy-Request-Id
RouterErrorResponse
モデル ID が見つかりませんでした。Body: RouterErrorResponse — Headers: X-Comfy-Error-Type, X-Comfy-Request-Id
RouterErrorResponse
X-Comfy-Error-Type を確認してください: concurrency_limit_exceeded は元の呼び出しがまだ実行中であることを意味するため、Retry-After を待って同じキーを再利用します。invalid_input の場合は新しいキーが必要です。Body: RouterErrorResponse — Headers: X-Comfy-Error-Type, X-Comfy-Request-Id, Retry-Afterconcurrency_limit_exceeded の場合)
RouterValidationErrorResponse
リクエストの内容がモデルのスキーマに対して拒否されました。Body: RouterValidationErrorResponse — Headers: X-Comfy-Error-Type, X-Comfy-Request-Id, Idempotent-Replayed
RouterErrorResponse
Router が一時的に利用できません。バックオフして再試行してください。Body: RouterErrorResponse — Headers: X-Comfy-Error-Type, X-Comfy-Request-Id

GET /v2/models/{provider}/{model}/requests/{request_id}

送信済みリクエスト1件の結果を収集します。 収集エンドポイントです。正常に完了したリクエストに対しては、パートナーモデル自身のネイティブ出力を返します。これは同じモデルと同じ入力に対して同期ルートの 200 が返す内容とバイト単位で同一であり、2つの配信モードが同一の結果形状を生成するため、呼び出し側は2つ目のパーサーを用意することなく両者を切り替えられます。 パラメータ
RouterProviderSegment
必須
正規の {provider}/{model} モデル ID の小文字のプロバイダーセグメント。モデルを実行するパートナーを指します。Type: RouterProviderSegment — 英数字スラッグ、例: anthropic、最大64文字
RouterModelSegment
必須
正規の {provider}/{model} モデル ID の小文字のモデルセグメント。そのプロバイダー内で実行するモデルを指します。Type: RouterModelSegment — 英数字スラッグ、例: claude-opus-4-6、最大128文字
RouterQueueRequestId
必須
対象となるキュー中のリクエスト。送信時にボディで返された request_id です。Type: RouterQueueRequestIdpattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$, uuid, 最大36文字
レスポンス
RouterModelOutput
OK - 出力を生成したリクエストに対するパートナーモデルのネイティブ出力です。正常に完了したリクエスト、または記録された課金と保存された結果の両方を持つターミナルなリクエストが該当し、パートナー自身のメディアタイプのまま変更されずに返されます。同期ルートの 200 が返す内容とまったく同じです。Body: RouterModelOutput — Headers: X-Comfy-Request-Id, X-Content-Type-Options
RouterQueueStatusResponse
Accepted - リクエストはまだ完了していません。Body: RouterQueueStatusResponse — Headers: X-Comfy-Request-Id, Retry-After
RouterErrorResponse
認証情報が不足しているか無効です。Body: RouterErrorResponse — Headers: X-Comfy-Error-Type, X-Comfy-Request-Id
RouterErrorResponse
この呼び出し元またはモデルに対して、このリクエストは許可されていません。Body: RouterErrorResponse — Headers: X-Comfy-Error-Type, X-Comfy-Request-Id
RouterErrorResponse
モデル ID が見つかりませんでした。Body: RouterErrorResponse — Headers: X-Comfy-Error-Type, X-Comfy-Request-Id
RouterErrorResponse
Router のリクエストレベルの失敗。リクエストがモデルに到達しなかったか、モデル自身が報告しなかった理由で失敗しました。Body: RouterErrorResponse — Headers: X-Comfy-Error-Type, X-Comfy-Request-Id
RouterErrorResponse
Router が一時的に利用できません。バックオフして再試行してください。Body: RouterErrorResponse — Headers: X-Comfy-Error-Type, X-Comfy-Request-Id
RouterErrorResponse
リクエストが操作と競合する状態にあります。エラータイプを確認してください。Body: RouterErrorResponse — Headers: X-Comfy-Error-Type, X-Comfy-Request-Id
RouterErrorResponse
リクエストが期限を超過しました。再試行する前にエラータイプを確認してください。Body: RouterErrorResponse — Headers: X-Comfy-Error-Type, X-Comfy-Request-Id
RouterValidationErrorResponse
リクエストのコンテンツがモデルのスキーマに対して拒否されました。Body: RouterValidationErrorResponse — Headers: X-Comfy-Error-Type, X-Comfy-Request-Id, Idempotent-Replayed
RouterErrorResponse
Router のリクエストレベルの失敗。リクエストがモデルに到達しなかったか、モデル自身が報告しなかった理由で失敗しました。Body: RouterErrorResponse — Headers: X-Comfy-Error-Type, X-Comfy-Request-Id

PUT /v2/models/{provider}/{model}/requests/{request_id}/cancel

送信済みのリクエスト 1 件のキャンセルを要求します。 Comfy に、まだ完了していないリクエストを停止するよう要求します。これは要求であり、保証ではありません。202 はまさにそのことを示しています。CANCELLATION_REQUESTED は要求が受け入れられたことを意味し、実行が停止したことを意味するものではありません。パートナー側ですでに送信中の実行は、そのまま完了してしまう可能性があります。そして完了したパートナー生成は、誰かが結果を受け取ったかどうかに関わらず課金されます。そのため、実際に何が起きたかを知る必要がある呼び出し元は、後でステータスエンドポイントを読み取ってください。そこで有効になったキャンセルは、他のすべてのターミナルな結果と同様に、error_type を伴う COMPLETED として表されます。 パラメータ
RouterProviderSegment
必須
正規の {provider}/{model} モデル ID の小文字のプロバイダーセグメント。実行対象のモデルを持つパートナーです。型: RouterProviderSegment — 英数字のスラッグ(例: anthropic)、最大 64 文字
RouterModelSegment
必須
正規の {provider}/{model} モデル ID の小文字のモデルセグメント。そのプロバイダー内で実行するモデルです。型: RouterModelSegment — 英数字のスラッグ(例: claude-opus-4-6)、最大 128 文字
RouterQueueRequestId
必須
対象となるキュー中のリクエスト。送信時にレスポンスボディで返された request_id です。型: RouterQueueRequestIdpattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$、uuid、最大 36 文字
レスポンス
RouterQueueCancelResponse
受け入れ済み: CANCELLATION_REQUESTEDボディ: RouterQueueCancelResponse — ヘッダー: X-Comfy-Request-Id
RouterQueueCancelResponse
競合: ALREADY_COMPLETEDボディ: RouterQueueCancelResponse — ヘッダー: X-Comfy-Request-Id
RouterErrorResponse
無効なリクエストです。エラータイプとリクエストボディを確認してください。ボディ: RouterErrorResponse — ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-Id
RouterErrorResponse
認証情報が不足しているか無効です。ボディ: RouterErrorResponse — ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-Id
RouterErrorResponse
この呼び出し元またはモデルに対して、リクエストは許可されていません。ボディ: RouterErrorResponse — ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-Id
RouterErrorResponse
モデル ID が見つかりませんでした。ボディ: RouterErrorResponse — ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-Id
RouterErrorResponse
Router は一時的に利用できません。バックオフして再試行してください。ボディ: RouterErrorResponse — ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-Id
RouterErrorResponse
Router のリクエストレベルの失敗。リクエストがモデルに到達しなかったか、モデル自体が報告しなかった理由で失敗しました。ボディ: RouterErrorResponse — ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-Id

GET /v2/models/{provider}/{model}/requests/{request_id}/status

送信済みリクエスト 1 件のキュー状態を読み取ります。 ポーリング用のエンドポイントです。応答にはリクエストの現在の状態のみが含まれ、結果は含まれないため、クライアントはポーリングのたびに出力を転送することなく長時間の生成を監視できます。結果は、このエンドポイントが COMPLETED を返した時点で、後述の読み取りから一度だけ取得されます。 パラメータ
RouterProviderSegment
必須
正規の {provider}/{model} モデル ID の小文字プロバイダーセグメント。実行対象となるモデルを持つパートナーです。型: RouterProviderSegment — 英数字のスラッグ(例: anthropic)、最大 64 文字
RouterModelSegment
必須
正規の {provider}/{model} モデル ID の小文字モデルセグメント。そのプロバイダー内で実行するモデルです。型: RouterModelSegment — 英数字のスラッグ(例: claude-opus-4-6)、最大 128 文字
RouterQueueRequestId
必須
対象となるキュー中のリクエスト。送信時にボディで返された request_id です。型: RouterQueueRequestIdpattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$、uuid、最大 36 文字
レスポンス
RouterQueueStatusResponse
OK: リクエストの現在のキュー状態。ボディ: RouterQueueStatusResponse — ヘッダー: X-Comfy-Request-IdRetry-After
RouterErrorResponse
認証情報が不足しているか無効です。ボディ: RouterErrorResponse — ヘッダー: X-Comfy-Error-TypeX-Comfy-Request-Id
RouterErrorResponse
この呼び出し元またはモデルに対してリクエストが許可されていません。ボディ: RouterErrorResponse — ヘッダー: X-Comfy-Error-TypeX-Comfy-Request-Id
RouterErrorResponse
モデル ID が見つかりませんでした。ボディ: RouterErrorResponse — ヘッダー: X-Comfy-Error-TypeX-Comfy-Request-Id
RouterErrorResponse
Router のリクエストレベルの失敗。リクエストがモデルに到達しなかったか、モデル自体が報告しなかった理由で失敗しました。ボディ: RouterErrorResponse — ヘッダー: X-Comfy-Error-TypeX-Comfy-Request-Id
RouterErrorResponse
Router は一時的に利用できません。バックオフして再試行してください。ボディ: RouterErrorResponse — ヘッダー: X-Comfy-Error-TypeX-Comfy-Request-Id
RouterErrorResponse
Router のリクエストレベルの失敗。リクエストがモデルに到達しなかったか、モデル自体が報告しなかった理由で失敗しました。ボディ: RouterErrorResponse — ヘッダー: X-Comfy-Error-TypeX-Comfy-Request-Id
ここでの説明は簡潔です。モデルの選択、検証、再試行、課金については Comfy Router API の使用 を、ヘッダーの動作については ヘッダー を参照してください。

エラーバケット

Router の機械可読なエラーカテゴリで、X-Comfy-Error-Type ヘッダーでも送信されます。

リクエストレベルバケット

Router が受け付けたものの、完了できなかったリクエストに対して発生します。

トランスポートレベルバケット

モデルへの呼び出しの前またはその周辺で、Router 自身によって発生します。

レスポンスヘッダー

string
提供されるスキーマドキュメントの鮮度ディレクティブ。
string
提供されるドキュメントのバイト列に対する強力なエンティティタグ。GET /v2/models/{provider}/{model}/openapi.json 用です。
boolean
このレスポンスがモデルを再度実行した結果ではなく、Idempotency-Key の記録から提供された場合に存在し、true になります。
integer
同じ Idempotency-Key で同じリクエストを再試行するまでに待つ秒数。
RouterErrorType
障害を表す大まかで機械可読な分類で、Router がすべてのエラーレスポンスに設定します。型: RouterErrorType
string
この呼び出しに対してサーバーが生成する識別子で、成功、4xx、5xx を問わず、すべての Router レスポンスに存在します。エラーレスポンスこそ、ユーザーがサポートリクエストで引用する ID を必要とするまさにその瞬間だからです。
string
文字列の配列を保持する、JSON エンコードされた 1 つの文字列です。カンマで分割するのではなく JSON パーサーでデコードしてください。これはワイヤー上では単一の文字列であり、カンマ区切りの OpenAPI 配列ではないためです。また、各エントリはそれ自体にカンマを含む文です。このヘッダーは、ある変換がこの呼び出しのリクエストボディを生成し、1 つ以上のネイティブフィールドを、それを処理したプロバイダー上で正確に表現できなかった場合に常に存在し、削除された各フィールドとその理由を示します。呼び出し元が model_provider でその変換を要求した場合(strict_mode=false、これがデフォルト)でも、自動の fallback_provider 再試行がそれを実行した場合でも同様です。
string
fallback_provider が実際にこの呼び出しを 2 つ目のプロバイダーに対して再試行し、その再試行が成功した場合にのみ存在し、プロバイダー名を示します。最終的にこの呼び出しを処理したプロバイダーであり、試行されて同様に失敗したプロバイダーではありません。
integer
この呼び出しに対するモデルプロバイダー自身の HTTP ステータス。
integer
呼び出し元が現在、まだ実行中の呼び出しに対してコミットしている金額(米ドルのセント単位)。
integer
呼び出し元がまだ実行中の呼び出しにコミットできるパートナー支出の上限(米ドルのセント単位)。この金額は呼び出しが受け付けられた時点で確保され、その呼び出しが完了した時点で解放されます。
integer
上限までに残っている余裕(米ドルのセント単位)。下限は 0 です。
string
Router モデルのすべての成功した実行において、常に nosniff です。

結果アセット

モデルは、アセット URL、インラインバイト、またはその両方を返すことができます。以下のプロバイダーは、選択済みのアセットを Comfy ストレージにコピーし、その URL を置き換えます。この動作はモデルによって異なります。これを選択するリクエストヘッダーはありません。 これらの有効期間は、URL を開いたときではなく、URL が署名されたときに開始されます。キャッシュされた URL や再生された URL は残り時間が短い場合があります。再生しても有効期間は更新されません。アセットは速やかにダウンロードしてください。コピーされるのは各行に記載されたアセットのみです。byteplus/seedream-*byteplus/seededit-* の画像は BytePlus ビデオの行には含まれません。 Veo (veo/*) には別のストレージパスがあります。 response.videos[] では、存在する方のメンバーを読み取ってください。bytesBase64Encoded はクリップをインラインで含み、gcsUri は、プロバイダーから Comfy ストレージへの直接書き込みが環境で構成されている場合に、Comfy が署名した HTTPS リンクを含みます。そのリンクはレスポンスから 24 時間有効です。後者の場合はアセットをコピーするのではなく直接書き込むため、Veo は再ホスティングの表には含まれていません。 その他のモデルは、プロバイダーのアセット参照またはインラインバイトを返します。プロバイダーの URL はプロバイダーの有効期限に従います。これは上記の有効期間よりはるかに短い場合があり、Router の契約では規定されていません。 コピーはアセットごとのベストエフォートです。1 つのコピーが失敗した場合、そのエントリはプロバイダーの参照を保持します。レスポンスには Comfy とプロバイダーの両方の URL が含まれる可能性があり、アセットごとの明示的なコピーステータスフィールドはありません。生成は引き続き成功し、課金されます。1 つの正常に再ホストされたアセットから、すべての URL の有効期間を推測しないでください。 結果が Comfy ホストかどうかは、完了した呼び出しが後でその Idempotency-Key レコードから再生できるかどうかも決定します。上記の Idempotency-Key パラメーターは、再生できない場合に再試行が何で応答されるかを説明しています。

モデルごとの入力および出力スキーマ

各モデルのフィールドは GET /v2/models/{provider}/{model}/openapi.json から読み取ります。オペレーションの requestBody は入力の検証を記述しており、その 200 レスポンスは、スキーマが作成されている場合に出力の形状とメディアタイプを記述しています。x-comfy-input-schema-authored が false の場合、Router はモデル固有の事前検証なしで任意の JSON オブジェクトを受け入れます。プロバイダーの要件は引き続き適用されます。出力スキーマは結果を記述するものであり、Router は返されたプロバイダーのペイロードをそれらに対して検証しません。スキーマが作成されていない出力では、application/json ではなく */* が使用される場合があります。デコードする前にレスポンスのコンテンツタイプを確認してください。

スキーマ

RouterChargesOnPolicyRejection

このモデルでコンテンツポリシーによる拒否が課金されるかどうか。不明な値は課金される可能性があるものとして扱ってください。 型: string

RouterErrorResponse

認証、アクセス、モデル検索、クォータ、およびプロバイダー転送の失敗に対するエラーボディ。 フィールド
string
必須
失敗内容を人間が読める形式で記述したもの。エンドユーザーに提示しても安全です。機械的にパースされることはありません。分岐には error_type を使用してください。
RouterErrorType
必須
Router の失敗を表す粗い機械可読な分類。レスポンスヘッダー X-Comfy-Error-Type にも反映されるため、呼び出し側はボディをパースせずに分岐できます。値の集合は 15 個で固定されています。リクエストレベルの 6 つの分類 invalid_inputcontent_policy_violationprovider_errorprovider_timeoutinsufficient_creditsmodel_not_found に加えて、転送レベルの unauthorizedforbiddenconcurrency_limit_exceededclient_disconnectedinternal_errordeadline_exceedednot_enabledservice_unavailablerate_limited があります。型: RouterErrorType

RouterErrorType

機械可読な Router エラーのカテゴリ。X-Comfy-Error-Type ヘッダーでも送信されます。 型: string

RouterModelBilling

モデルを呼び出す前に確認すべき課金の挙動。価格や使用量は含まれません。 フィールド
RouterChargesOnPolicyRejection
必須
このモデルがコンテンツポリシー上の理由で拒否した呼び出しが、それでも呼び出し元に課金されるかどうか。プロバイダーによって異なり、その違いは呼び出し時には見えず、同じ呼び出しに対してエラーと課金の両方を見たユーザーは知りようがありません。そのため、プロバイダーごとの慣習に任せるのではなく、呼び出し前にモデルごとに明記されています。タイプ: RouterChargesOnPolicyRejection

RouterModelDetail

1つの Comfy Router モデルに対するモデル単位の詳細です。カタログ一覧が報告するすべての内容に加えて、単一モデルルートだけが持つモデル単位のフィールドを含みます。 RouterModelListEntryRouterModelDetailFields を組み合わせます。 型: object

RouterModelDetailFields

モデル詳細エンドポイントが返すオプションフィールド。 フィールド
string
このモデルのOpenAPIドキュメントのURL。入力スキーマと出力スキーマを含みます。HTTPS URL(例: https://api.comfy.org/v2/models/bfl/flux-2-pro/openapi.json)、最大2048文字

RouterModelId

POST /v2/models/{provider}/{model} で使用されるモデル ID。 型: 文字列。モデル ID(例: anthropic/claude-opus-4-6)、最大 193 文字

RouterModelInput

モデル入力オブジェクト。フィールドと検証については、選択済みモデルの OpenAPI ドキュメントを参照してください。 型: object

RouterModelInputSchemaDocument

1つのモデルの入力と出力に対応するスタンドアロンの OpenAPI ドキュメント。 型: object

RouterModelListEntry

モデルのIDと課金に関する事実。 フィールド
RouterModelId
必須
正規の Comfy Router モデルID、{provider}/{model}。これは POST /v2/models/{provider}/{model} でモデルを指定する値そのものであり、呼び出し側は他の何かから再導出することなく、この値をそのパスに埋め込むことができます。その patternRouterProviderSegmentRouterModelSegment を単一の / で結合したもので、maxLength はそれらの合計にその区切り文字を加えた値です。型: RouterModelId — モデルID、例: anthropic/claude-opus-4-6、最大193文字
RouterProviderSegment
必須
正規の {provider}/{model} モデルIDの小文字の provider セグメント。モデルを指定する対象のパートナーを表します。呼び出しルートの provider パスパラメータとカタログエントリの provider フィールドはどちらもこの1つのスキーマを参照しており、これによって一覧に載るIDと受け入れられるIDが乖離しないようになっています。型: RouterProviderSegment — 英数字のスラッグ、例: anthropic、最大64文字
RouterModelSegment
必須
正規の {provider}/{model} モデルIDの小文字の model セグメント。そのプロバイダー内で実行するモデルを表します。呼び出しルートの model パスパラメータとカタログエントリの model フィールドで共有されており、RouterProviderSegment と同じく乖離を防ぐためのものです。型: RouterModelSegment — 英数字のスラッグ、例: claude-opus-4-6、最大128文字
RouterModelBilling
必須
呼び出しの前に呼び出し側が必要とする、モデルごとの課金に関する事実であり、価格ではありません。使用量やコストの数値がここに現れることは決してありません。型: RouterModelBilling

RouterModelListResponse

Router モデルカタログの 1 ページです。 フィールド
array of RouterModelListEntry
必須
このページのモデルで、最大 limit 件です。型: RouterModelListEntry の配列
boolean
必須
このページより先に別のページが存在するかどうか。これが true の間はページを進め続けてください。data が短い、または空であることからカタログの終端を推測しないでください。
RouterPageCursor
Router リストへの不透明なカーソルです。サーバーによって生成され、そのまま往復されるだけです。オフセットではなく、モデル ID でもなく、順序付けもされておらず、カタログの再構築をまたいで安定もしません。したがって、これを解析したり、インクリメントしたり、取得元の走査を超えて永続化したりすることは、いずれも契約の範囲外です。オフセットではなくカーソルである理由は、カタログが変化するリストだからです。走査の途中でエントリが追加または削除されると、オフセットによる走査はエントリを黙ってスキップしたり繰り返したりしますが、呼び出し側はそれが起きたことを判別できません。型: RouterPageCursornext_cursor として返される不透明なカーソルで、1~512 文字です。
integer
必須
実際に提供されたページサイズです。最大値を超える limit を要求した場合、拒否されるのではなく最大値にクランプされるため、要求した値より小さくなることがあります。ページネーションには、送信した値ではなくこの数値を使用してください。そうしないと、受け取っていない行を前提にしてしまいます。1~100

RouterModelOutput

モデルの結果オブジェクトです。正確な形状については、選択済みモデルの出力スキーマを参照してください。 型: object

RouterModelSegment

{provider}/{model} モデル ID のモデル部分です。 型: string — 英数字のスラッグ(例: claude-opus-4-6)、最大 128 文字

RouterPageCursor

不透明なカタログカーソルです。変更を加えずにそのまま cursor として渡し直してください。 型: stringnext_cursor として返される不透明なカーソルで、1~512文字です。

RouterProviderSegment

{provider}/{model} というモデル ID のプロバイダー部分です。 型: string。英数字のスラッグ(例: anthropic)、最大 64 文字

RouterQueueCancelResponse

このルートが解決したリクエストを表す2つのステータス、すなわち 202400 に対するキャンセル要求への応答です。成功用のエンベロープとエラー用のエンベロープに分けるのではなく、両ステータスで単一のボディ形状をとります。どちらも「キャンセルで何が見つかったか」という同じ内容を伝えるものであり、ステータスコードごとに異なる型をパースしなければならないクライアントにとって、分割による利点は何もないからです。 フィールド
RouterQueueRequestId
必須
キュー中の1件の Router リクエストの識別子。呼び出し側がポーリング、キャンセル、結果の取得に使うハンドルです。型: RouterQueueRequestIdpattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$、uuid、最大36文字
RouterQueueCancelStatus
必須
キャンセル要求で何が見つかったかを示します。このルートが実際に解決したリクエストを表す2つの結果に対応します。どちらも HTTP ステータスに反映されるため、クライアントはどちらで分岐してもかまいません。型: RouterQueueCancelStatus

RouterQueueCancelStatus

このルートが実際に解決したリクエストを表す2つの結果について、キャンセル要求が見つけた内容です。どちらも HTTP ステータスに反映されるため、クライアントはどちらで分岐してもかまいません。 型: string

RouterQueuePosition

レスポンスが構成された時点で、このリクエストより前にキュー内にあるリクエストの数。0 はこのリクエストが先頭であることを意味します。 型: integer — 0 以上

RouterQueueRequestId

キュー中の Router リクエスト 1 件の識別子。呼び出し元がポーリングやキャンセル、結果の取得に用いるハンドルです。 型: stringpattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$、uuid、最大 36 文字

RouterQueueStatus

キュー中の Router リクエストの状態。値はちょうど 3 つで、RouterErrorType とは異なり、これは閉じた enum です。2 つのスキーマは意図的に逆方向に閉じられているためです。RouterErrorType は失敗を分類するもので、その集合は増えていくことが想定されているため、認識できないバケットをハード拒否する生成済みクライアントは、すでに何かが失敗したまさにその時に最も激しく失敗することになります。一方、これはライフサイクルであり、後で 4 つ目の状態が追加されたライフサイクルは、enum として宣言されているかどうかに関わらず、それに対して書かれたすべてのポーリングループにとって破壊的変更となります。そのため enum として宣言され、その制約はクライアントが見られる場所に明記されています。 Type: string

RouterQueueStatusFields

RouterQueueStatusResponse のうち URL ブロックではない半分です。キュー中のリクエスト 1 件の識別情報、その現在の状態、そしてその状態がターミナルで実行が成功しなかった場合は、その理由を示す粗い分類です。 フィールド
RouterQueueRequestId
必須
キュー中の Router リクエスト 1 件の識別子。呼び出し側がポーリング、キャンセル、結果の取得を行うためのハンドルです。型: RouterQueueRequestIdpattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$、uuid、最大 36 文字
RouterQueueStatus
必須
キュー中の Router リクエストの状態。値はちょうど 3 つで、RouterErrorType とは異なり、これは閉じた enum です。これは 2 つのスキーマが意図的に逆方向に閉じられているためです。RouterErrorType は失敗を分類するものであり、その集合は増えていくことが想定されているため、認識されない分類をハード拒否する生成済みクライアントは、すでに何かが失敗したまさにそのときに最も大きく失敗することになります。こちらはライフサイクルであり、後で 4 番目の状態が追加されるライフサイクルは、enum として宣言されているかどうかに関わらず、それに対して書かれたすべてのポーリングループにとって破壊的変更となります。そのため enum として宣言され、その制約はクライアントが見える場所に明記されています。型: RouterQueueStatus
RouterQueuePosition
レスポンスが構成された時点で、キュー内でこのリクエストより前に並んでいるリクエストの数。ゼロはこのリクエストが先頭であることを意味します。型: RouterQueuePosition — 0 以上
RouterErrorType
成功しなかった COMPLETED リクエストにのみ存在し、その失敗を返すときに結果の読み取りが X-Comfy-Error-Type に設定するのと同じ粗い分類を持ちます。これは、成功したターミナルリクエストと、失敗またはキャンセル済みのリクエストを区別するものです(どちらにも別個のターミナルステータスはありません)。また、成功時には null ではなく存在しません(ABSENT)。そのため、その有無で分岐してください。型: RouterErrorType

RouterQueueStatusResponse

キュー中のリクエスト1件の現在の状態を、送信時に返されたものと同じ3つのURLと組み合わせたものです。 RouterQueueUrlsRouterQueueStatusFields を構成要素とします。 型: object

RouterQueueSubmitFields

RouterQueueSubmitResponse のうち URL ブロックではない半分: 新しいリクエストの識別情報と、それが受け付けられた時点での状態です。 フィールド
RouterQueueRequestId
必須
キュー中の Router リクエスト1件の識別子。呼び出し元がポーリング、キャンセル、結果の収集に使うハンドルです。型: RouterQueueRequestIdpattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$, uuid, 最大36文字
RouterQueueStatus
必須
キュー中の Router リクエストの状態。値はちょうど3つで、RouterErrorType とは異なりこちらは閉じた enum です。これは2つのスキーマが意図的に逆方向に閉じられているためです。RouterErrorType は失敗を分類するものであり、その集合は増えていくことが想定されているため、未知のバケットを厳格に拒否する生成済みクライアントは、すでに何かが失敗したまさにそのときに最も失敗しやすくなります。一方こちらはライフサイクルであり、後で4番目の状態が追加されたライフサイクルは、enum として宣言されているかどうかに関わらず、それに対して書かれたすべてのポーリングループにとって破壊的変更となります。そのため enum として宣言され、その制約はクライアントが見られる場所に明記されています。型: RouterQueueStatus
RouterQueuePosition
レスポンスが構成された時点で、キュー内でこのリクエストより前に何件のリクエストがあるか。ゼロはこのリクエストが先頭であることを意味します。型: RouterQueuePosition — 0以上

RouterQueueSubmitResponse

実行がキューに受け入れられたときに返されるハンドルです。リクエストの識別情報と状態を、そのライフサイクルの残りの部分を指す 3 つの URL と合成したものです。 RouterQueueUrlsRouterQueueSubmitFields を合成します。 型: object

RouterQueueUrls

キュー中の1つのリクエストの残りのライフタイムに対応する3つのURLです。有効なハンドルを含むすべてのレスポンスで返されるため、クライアントが自分でキューURLを組み立てることはありません。 フィールド
string
必須
このリクエストのステータス読み取りの絶対URL。URI
string
必須
このリクエストの結果を取得する絶対URL。URI
string
必須
キャンセルを要求する絶対URL。URI

RouterValidationErrorContext

失敗した検証ルールについてプロバイダーが提供する詳細。 型: object

RouterValidationErrorDetail

1 件のフィールドレベルの検証失敗。 フィールド
array of any
必須
問題のあるフィールドへのパス。最も外側のセグメントが先頭に来ます。たとえば ["body", "image_url"]、または ["body", "images", 0] のように、整数は配列のインデックスを指します。
string
必須
この単一の失敗についての、人間が読める説明。
string
必須
この失敗の具体的で機械可読な理由。プロバイダーからそのまま渡されます。これは型付き SDK の例外階層が分岐に使う値であり、レスポンスヘッダーの error_type はその大まかな分類にすぎません。
RouterValidationErrorContext
1 件の RouterValidationErrorDetail で違反した境界値。プロバイダーからそのまま渡されます。たとえば greater_than に対する {"limit_value": 8}image_too_small に対する {"min_width": 512}file_too_large に対する {"max_size_bytes": 10485760} などです。キー集合はプロバイダーとエラータイプに固有であるため、これは意図的にオープンなオブジェクトとしています。固定のフィールドリストに絞り込んだり、msg 文字列に畳み込んだりすると、まさに移植された統合がコンパイルは通るものの、その境界値を読んでいた分岐を黙って失うことになります。エラータイプが境界値を持たない場合は省略されます。型: RouterValidationErrorContext
RouterValidationErrorInput
問題のある入力値。呼び出し元が loc から再導出することなく、何が拒否されたかを確認できるよう、そのままエコーバックされます。任意の JSON 型(文字列、数値、ブール、配列、オブジェクト、null)であるため、このスキーマは意図的にオブジェクトに絞り込まず、型なしのままにしています。プロバイダーが入力値をエコーバックしない場合は省略されます。型: RouterValidationErrorInput

RouterValidationErrorInput

プロバイダーが含める場合の、拒否された入力値です。

RouterValidationErrorResponse

422 検証エラーのレスポンスボディ。カテゴリについては X-Comfy-Error-Type を参照してください。 フィールド
array of RouterValidationErrorDetail
必須
リクエストで検出されたすべての検証失敗。問題のあるフィールドごとに 1 エントリ。型: RouterValidationErrorDetail の配列