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
不透明なページネーションカーソル。型:
RouterPageCursor — next_cursor として返される不透明なカーソル、1~512 文字integer
1 ページで返すモデル数。最大 100、デフォルト: 20
RouterModelListResponse
OK - モデルカタログの 1 ページ。ボディ:
RouterModelListResponse — ヘッダー: X-Comfy-Request-IdRouterErrorResponse
無効なリクエストです。エラータイプとリクエストボディを確認してください。ボディ:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-IdRouterErrorResponse
認証情報が不足しているか無効です。ボディ:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-IdRouterErrorResponse
この呼び出し元またはモデルに対してリクエストが許可されていません。ボディ:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-IdRouterErrorResponse
Router は一時的に利用できません。バックオフして再試行してください。ボディ:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-IdGET /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-IdRouterErrorResponse
認証情報が不足しているか無効です。ボディ:
RouterErrorResponse、ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-IdRouterErrorResponse
この呼び出し元またはモデルに対して、このリクエストは許可されていません。ボディ:
RouterErrorResponse、ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-IdRouterErrorResponse
モデル ID が見つかりませんでした。ボディ:
RouterErrorResponse、ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-IdRouterErrorResponse
Router は一時的に利用できません。バックオフしながら再試行してください。ボディ:
RouterErrorResponse、ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-IdPOST /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
現在のデフォルトの代わりに、このモデルを提供する代替プロバイダーを選択します。
fal、wavespeed、runware、higgsfield が代替候補で、GET /v2/models/{provider}/{model} が特定のモデルがどの候補をサポートしているかを報告します。その拒否は固定された順序でチェックされ、前のものが、後のものが該当するかどうかに関係なく応答します。認識されない値(登録されたプロバイダーではないもの)は 400 で拒否されます。次に、ボディがマルチパート操作(編集)を選択しているリクエストでの代替プロバイダーは、detail が “this request’s image selects the edit operation” で始まる 409 で拒否されますが、それはそのプロバイダーのこのモデル用のトランスレーターがその操作を提供できない場合に限られます。トランスレーターがメディアを扱えるレッグは正常に処理されます。次に、bring-your-own-key の資格情報を解決したリクエストでは、任意の代替プロバイダーが detail が this request resolved a BYOK credential で始まる 409 で拒否されます(そのレスポンスを参照)。そのプロバイダーがこのモデルを提供するかどうかは関係ありません。次に、指定されたプロバイダー自身のゲートがあります。これは、そのプロバイダーがあなたに対して有効になっていない場合は error_type: not_enabled を伴う 403 で拒否し、ゲートを評価できない場合は error_type: service_unavailable を伴う 503 で拒否します。そして、この 4 つすべてを通過した後にのみ、このモデル用のレッグを持たない実在のプロバイダーが error_type: invalid_input を伴う 400 で拒否されます。これは認識されない値と同じ応答です。fallback_provider は、bring-your-own-key リクエスト、ボディがマルチパート操作を選択しているリクエスト、および strict_mode=true の場合には、拒否されるのではなく効果を持ちません。boolean
model_provider と併用した場合にのみ意味を持ちます。デフォルト: Falsestring
最初の試行が Router または試行されたプロバイダーに起因する理由で失敗したときに、Router がこの呼び出しをモデルの他の登録済みプロバイダーに対して再試行するかどうかを制御します。省略した場合、または
false 以外の値はフォールバックをオンのままにします。false にするとオフになります。フォールバックが成功したレスポンスには X-Comfy-Router-Fallback-Provider が含まれます。bring-your-own-key の資格情報を解決したリクエストでは、このパラメータが何を言っていてもフォールバックは利用できません。試行は単に行われず、最初の失敗がそのままあなたに届きます。これは効果を持たないのであり、拒否ではありません。ここから 409 は発生しません。同じ理由で、ボディがマルチパート操作を選択しているリクエストおよび strict_mode=true の場合も同様です。それぞれが呼び出しを 1 つのプロバイダーに束縛し、別のプロバイダーに対して忠実に再生することはできないため、フォールバックは拒否されるのではなく単にスキップされます。その 409 で拒否されるのは明示的な model_provider のみであり、この無条件のスキップとは異なり、そのマルチパートの 409 はトランスレーターがその操作を提供できないレッグにのみ適用されます。boolean
このモデルの入力スキーマが宣言していないトップレベルのリクエストボディフィールドを受け入れるのではなく、拒否することをオプトインします。ネストされたフィールドはチェックされず、スキーマが未宣言のフィールドを許可しているモデルや作成されたスキーマを持たないモデル、または
strict_mode=true で送信されたキュー中の submit では、何も拒否されません。デフォルト: Falseapplication/json — RouterModelInput(必須)
パートナーモデルのネイティブ JSON 入力。model_provider がない場合、リクエストはモデルのデフォルトプロバイダーでネイティブディスパッチを実行し、このボディはモデル自身のネイティブスキーマであり、変更されずに転送されます(そこでは strict_mode は無意味で、何も変わりません)。model_provider が代替プロバイダーを選択し、strict_mode=false(デフォルト)の場合、ボディは送信前にそのプロバイダーの実際のスキーマに変換されます。正確に表現できないネイティブフィールドは破棄され、レスポンスの X-Comfy-Router-Dropped-Params ヘッダーで開示されます。決して暗黙には行われません。model_provider が代替プロバイダーを選択し、strict_mode=true の場合、変換は実行されません。ボディは、このモデルのネイティブなものではなく、すでにその代替プロバイダー自身の実際のスキーマでなければならず(strict_mode を参照)、変更されずに転送されます。ボディ自身のフィールドは、複数の操作をサポートするモデルで Router がどの操作を実行するかも選択します。編集可能な画像モデルの場合、入力画像を含めるとテキストから画像へから画像から画像へ(編集)操作に切り替わります。Seedance ビデオモデルの場合、先頭フレームの画像は画像から動画へを選択し、参照画像またはクリップは参照から動画を選択します。条件付きの各操作は、基本のテキストから画像へやテキストから動画へのレートではなく、独自のレートで計量されます。
レスポンス
RouterModelOutput
OK:
model_provider を指定しない場合、または model_provider と strict_mode=false(デフォルト。可能な場合はこのモデル固有のネイティブ契約に変換し直し、変換に失敗した場合は代替プロバイダー自身の生のレスポンスにフォールバックします。ログに記録され、決して無言にはなりません)を指定した場合、形状はこのモデル自身のネイティブ出力です。strict_mode=true の場合、代替プロバイダーのレスポンスがそのまま返されます。パートナーが生成結果を直接バイトとして返すモデルでは、ボディは application/json ではなく、パートナー自身の Content-Type の下のそのバイト列になります。レスポンスの Content-Type で分岐し、JSON ドキュメントであると仮定しないでください。ボディ:RouterModelOutput または生のバイト列(*/*) — ヘッダー:X-Comfy-Request-Id、X-Content-Type-Options、X-Comfy-Router-Fallback-Provider、X-Comfy-Router-Dropped-Params、X-Comfy-Credits-Used、Idempotent-Replayed、X-Committed-Spend-Limit、X-Committed-Spend-Current、X-Committed-Spend-RemainingRouterErrorResponse
無効なリクエストです。エラータイプとリクエストボディを確認してください。ボディ:
RouterErrorResponse — ヘッダー:X-Comfy-Error-Type、X-Comfy-Request-Id、X-Comfy-Upstream-Status、X-Comfy-Upstream-Detail、X-Comfy-Refusal-Subject、Idempotent-ReplayedRouterErrorResponse
認証情報が不足しているか無効です。ボディ:
RouterErrorResponse — ヘッダー:X-Comfy-Error-Type、X-Comfy-Request-IdRouterErrorResponse
Router のリクエストレベルの失敗です。リクエストがモデルに到達しなかったか、モデル自身が報告しなかった理由で失敗しました。ボディ:
RouterErrorResponse — ヘッダー:X-Comfy-Error-Type、X-Comfy-Request-IdRouterErrorResponse
この呼び出し元またはモデルに対して、このリクエストは許可されていません。ボディ:
RouterErrorResponse — ヘッダー:X-Comfy-Error-Type、X-Comfy-Request-IdRouterErrorResponse
モデル ID が見つかりませんでした。ボディ:
RouterErrorResponse — ヘッダー:X-Comfy-Error-Type、X-Comfy-Request-IdRouterErrorResponse
X-Comfy-Error-Type を確認してください。concurrency_limit_exceeded はオリジナルの呼び出しがまだ実行中であることを意味するので、Retry-After を待って同じキーを再利用します。invalid_input は新しいキーが必要です。このルートにおける 2 つの invalid_input 競合はキーに関するものではまったくなく、新しいキーでもどちらも解消しません。1 つは、model_provider が代替プロバイダーを指定している場合に拒否されるもので、リクエストボディが、そのプロバイダーのこのモデル用トランスレーターでは処理できないマルチパート操作(編集)を選択しているときが該当し、detail は “this request’s image selects the edit operation” で始まります。もう 1 つは、その後でチェックされるもので、リクエストがパス内のプロバイダーに対して bring-your-own-key 認証情報をすでに解決している場合で、detail は this request resolved a BYOK credential で始まります。model_provider を削除するか、BYOK 認証情報なしで、かつ(マルチパートの場合は)編集なしでリクエストを送信してください。ボディ:RouterErrorResponse — ヘッダー:X-Comfy-Error-Type、X-Comfy-Request-Id、Retry-After(concurrency_limit_exceeded の場合)RouterErrorResponse
リクエストボディが大きすぎます。ボディ:
RouterErrorResponse — ヘッダー:X-Comfy-Error-Type、X-Comfy-Request-IdRouterValidationErrorResponse
リクエストのコンテンツがモデルのスキーマに対して拒否されました。ボディ:
RouterValidationErrorResponse — ヘッダー:X-Comfy-Error-Type、X-Comfy-Request-Id、Idempotent-ReplayedRouterErrorResponse
X-Comfy-Error-Type を確認してください。concurrency_limit_exceeded は処理中の呼び出しを減らすことを意味し、rate_limited は許可ウィンドウを待つことを意味します。ボディ:RouterErrorResponse — ヘッダー:X-Comfy-Error-Type、X-Comfy-Request-Id、X-Committed-Spend-Limit、X-Committed-Spend-Current、X-Committed-Spend-RemainingRouterErrorResponse
プロバイダー自身のレスポンスを結果に変換できませんでした(
provider_error)。ボディ:RouterErrorResponse — ヘッダー:X-Comfy-Error-Type、X-Comfy-Request-Id、X-Comfy-Upstream-StatusRouterErrorResponse
Router は一時的に利用できません。バックオフを伴って再試行してください。ボディ:
RouterErrorResponse — ヘッダー:X-Comfy-Error-Type、X-Comfy-Request-Id、Retry-After(容量による拒否のみ)RouterErrorResponse
リクエストが期限を超過しました。再試行する前にエラータイプを確認してください。ボディ:
RouterErrorResponse — ヘッダー:X-Comfy-Error-Type、X-Comfy-Request-Id、X-Comfy-Upstream-Status、Retry-AfterGET /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-Id、ETag、Cache-Controlno body
Not Modified - ドキュメントは、呼び出し元が
If-None-Match で送信した ETag 以降変更されていません。ヘッダー: X-Comfy-Request-Id、ETag、Cache-ControlRouterErrorResponse
認証情報が不足しているか無効です。ボディ:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type、X-Comfy-Request-IdRouterErrorResponse
この呼び出し元またはモデルに対して、リクエストは許可されていません。ボディ:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type、X-Comfy-Request-IdRouterErrorResponse
モデルIDが見つかりませんでした。ボディ:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type、X-Comfy-Request-IdRouterErrorResponse
Routerがリクエストを完了できませんでした。ボディ:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type、X-Comfy-Request-IdRouterErrorResponse
Routerは一時的に利用できません。バックオフして再試行してください。ボディ:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type、X-Comfy-Request-IdPOST /v2/models/{provider}/{model}/requests
パートナーモデルの実行をキューに送信し、即座に応答を返します。
Comfy Router のキュー投入配信モードです。リクエストボディは、POST /v2/models/{provider}/{model} がこのモデルに対して受け付けるのと同じパートナー固有の JSON 入力です。1 つのボディ形状、モデルごとに 1 つのスキーマ、2 つの配信モードという関係ですが、このルートは結果を待つ間コネクションを保持しません。実行を受理し、ハンドルとともに 201 を返し、呼び出し側は後から下記の 3 つの読み取りを通じて結果を取得します。
パラメータ
RouterProviderSegment
必須
正規の
{provider}/{model} モデル ID の小文字プロバイダーセグメントです。モデルを実行する対象のパートナーを指します。型: RouterProviderSegment — 英数字スラッグ、例: anthropic、最大 64 文字RouterModelSegment
必須
正規の
{provider}/{model} モデル ID の小文字モデルセグメントです。そのプロバイダー内で実行するモデルを指します。型: RouterModelSegment — 英数字スラッグ、例: claude-opus-4-6、最大 128 文字string
このモデルを提供する代替プロバイダーを、現在のデフォルトの代わりに選択します。
boolean
model_provider と組み合わせた場合にのみ意味を持ちます。デフォルト: Falsestring
1 つの論理的な呼び出しを安全に再試行できるようにする、呼び出し側が生成するキーです。1〜255 文字
boolean
このモデルの入力スキーマが宣言していないトップレベルのリクエストボディフィールドを受け入れるのではなく、拒否することを選択します。ネストされたフィールドはチェックされません。また、スキーマが未宣言のフィールドを許可しているモデルや、作成されたスキーマを持たないモデル、あるいは
strict_mode=true で送信されたキュー投入の送信では、何も拒否されません。デフォルト: Falseapplication/json — RouterModelInput (必須)
パートナーモデルのネイティブ JSON 入力です。このモデルに対して同期ルートが受け付けるボディと同一であり、操作を選択し、同じ方法で課金されます。ボディ自身のフィールドが、複数の操作をサポートするモデルで Router が実行する操作を選択し(入力画像は編集可能な画像モデルを画像から画像へ切り替え、Seedance の先頭フレーム画像は画像から動画へ、参照画像またはクリップは参照から動画を選択します)、条件付けされた各操作は、ベースのテキストから画像へやテキストから動画へのレートではなく、それぞれ独自のレートで課金されます。ディスパッチ時にも同じプロバイダー選択の契約が適用されます。model_provider がない場合、または model_provider があり strict_mode=false(デフォルト)の場合、ボディはモデルのネイティブドキュメントであり、実行が受理される前にモデル自身の入力スキーマに対して検証されるため、モデルが拒否するボディは、数分後に失敗するキュー中のリクエストではなく、ここで 422 になります。非 strict の代替プロバイダーのボディは、さらにディスパッチ時にそのプロバイダーの実際のスキーマへ変換されます。strict_mode=true の場合、ボディはすでに代替プロバイダー自身のスキーマでなければならず、変更されずに転送されます。ネイティブスキーマの検証は、同期ルートとまったく同じようにスキップされます(model_provider と strict_mode を参照)。
レスポンス
RouterQueueSubmitResponse
作成済み。実行がキューに受理されました。ボディ:
RouterQueueSubmitResponse — ヘッダー: X-Comfy-Request-Id, Idempotent-ReplayedRouterErrorResponse
認証情報が不足しているか、無効です。ボディ:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-IdRouterErrorResponse
無効なリクエストです。エラータイプとリクエストボディを確認してください。ボディ:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-IdRouterErrorResponse
リクエストボディが大きすぎます。ボディ:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-IdRouterErrorResponse
Router のリクエストレベルの失敗です。リクエストがモデルに到達しなかったか、モデル自身が報告しなかった理由で失敗しました。ボディ:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-IdRouterErrorResponse
この呼び出し元またはモデルに対してリクエストが許可されていません。パートナーが生成結果を直接バイトとして返すモデルはまだキューに投入できず、
not_enabled で拒否されます。代わりに同期ルートで実行してください。ボディ: RouterErrorResponse — ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-IdRouterErrorResponse
モデル ID が見つかりませんでした。ボディ:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-IdRouterErrorResponse
X-Comfy-Error-Type を確認します。concurrency_limit_exceeded はオリジナルの呼び出しがまだ実行中であることを意味するため、Retry-After を待って同じキーを再利用してください。invalid_input は新しいキーを必要とします。このルートで発生する 2 つの invalid_input 競合はキーに関するものではまったくなく、どちらも新しいキーでは解消しません。1 つは model_provider で別のプロバイダーを指定したケースで、リクエストボディが、そのプロバイダーのこのモデル用トランスレータが処理できないマルチパート操作(編集)を選択している場合に拒否されます。その detail は “this request’s image selects the edit operation” で始まります。もう 1 つはその後で確認されるもので、リクエストがパス内のプロバイダーに対して BYOK 認証情報をすでに解決している場合です。その detail は this request resolved a BYOK credential で始まります。model_provider を削除するか、BYOK 認証情報を付けずに、さらに(マルチパートの場合は)編集を行わずにリクエストを送信してください。Body: RouterErrorResponse — Headers: X-Comfy-Error-Type, X-Comfy-Request-Id, Retry-After (concurrency_limit_exceeded の場合)RouterValidationErrorResponse
リクエストの内容がモデルのスキーマに照らして拒否されました。Body:
RouterValidationErrorResponse — Headers: X-Comfy-Error-Type, X-Comfy-Request-Id, Idempotent-ReplayedRouterErrorResponse
Router は一時的に利用できません。バックオフしながら再試行してください。Body:
RouterErrorResponse — Headers: X-Comfy-Error-Type, X-Comfy-Request-Id, Retry-After (容量拒否の場合のみ)GET /v2/models/{provider}/{model}/requests/{request_id}
送信した 1 件のリクエストの結果を収集します。
収集エンドポイントです。正常に完了したリクエストに対しては、パートナーモデル自身のネイティブ出力を返します。これは同じモデルと同じ入力に対して同期ルートの 200 が返す内容とバイト単位で同一です。つまり、2 つの配信モードは 1 つの結果形状を生成し、呼び出し元は 2 つ目のパーサーなしで両者を切り替えられます。
パラメータ
RouterProviderSegment
必須
正規の
{provider}/{model} モデル ID の小文字プロバイダーセグメント。モデルを実行するパートナーです。型: RouterProviderSegment — 英数字のスラッグ(例: anthropic)、最大 64 文字RouterModelSegment
必須
正規の
{provider}/{model} モデル ID の小文字モデルセグメント。そのプロバイダー内で実行するモデルです。型: RouterModelSegment — 英数字のスラッグ(例: claude-opus-4-6)、最大 128 文字RouterQueueRequestId
必須
対象とするキュー中のリクエスト。送信がボディで返した
request_id です。型: RouterQueueRequestId — pattern: ^[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 が返すのとまったく同じように、また送信が受け付けたのと同じプロバイダー選択契約のもとで、変更されずに返されます。model_provider がない場合、または model_provider があり strict_mode=false(デフォルト。可能な場合はこのモデルのネイティブ契約に変換して戻し、変換に失敗した場合は代替プロバイダー自身の生のレスポンスにフォールバックします。これはログに記録され、決して無言ではありません)の場合は、形状はこのモデル自身のネイティブ出力です。strict_mode=true の場合は、代替プロバイダーのレスポンスが変更されずに返されます。パートナーが生成をバイトとして直接返すモデルの場合、ボディは application/json ではなくパートナー自身の Content-Type でのそのバイト列です。レスポンスの Content-Type で分岐し、JSON ドキュメントであると仮定しないでください。ボディ: RouterModelOutput または生のバイト列(*/*) — ヘッダー: X-Comfy-Request-Id, X-Content-Type-OptionsRouterQueueStatusResponse
Accepted - リクエストはまだ完了していません。ボディ:
RouterQueueStatusResponse — ヘッダー: X-Comfy-Request-Id, Retry-AfterRouterErrorResponse
認証情報が不足しているか無効です。ボディ:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-IdRouterErrorResponse
この呼び出し元またはモデルに対してリクエストが許可されていません。ボディ:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-IdRouterErrorResponse
モデル ID が見つかりませんでした。ボディ:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-IdRouterErrorResponse
Router のリクエストレベルの失敗。リクエストがモデルに到達しなかったか、モデル自身が報告しなかった理由で失敗しました。ボディ:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-IdRouterErrorResponse
Router は一時的に利用できません。バックオフして再試行してください。ボディ:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-IdRouterErrorResponse
リクエストが操作と競合する状態にあります。エラータイプを確認してください。ボディ:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-IdRouterErrorResponse
リクエストが期限を超過しました。再試行する前にエラータイプを確認してください。ボディ:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-IdRouterValidationErrorResponse
リクエストのコンテンツがモデルのスキーマに対して拒否されました。ボディ:
RouterValidationErrorResponse — ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-Id, Idempotent-ReplayedRouterErrorResponse
Router のリクエストレベルの失敗。リクエストがモデルに到達しなかったか、モデル自身が報告しなかった理由で失敗しました。ボディ:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type, X-Comfy-Request-IdPUT /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 です。型: RouterQueueRequestId — pattern: ^[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-IdRouterQueueCancelResponse
競合:
ALREADY_COMPLETED。本文: RouterQueueCancelResponse — ヘッダー: X-Comfy-Request-IdRouterErrorResponse
無効なリクエストです。エラータイプとリクエストボディを確認してください。本文:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type、X-Comfy-Request-IdRouterErrorResponse
認証情報が不足しているか無効です。本文:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type、X-Comfy-Request-IdRouterErrorResponse
この呼び出し元またはモデルでは、このリクエストは許可されていません。本文:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type、X-Comfy-Request-IdRouterErrorResponse
モデル ID が見つかりませんでした。本文:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type、X-Comfy-Request-IdRouterErrorResponse
Router は一時的に利用できません。バックオフして再試行してください。本文:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type、X-Comfy-Request-IdRouterErrorResponse
Router のリクエストレベルの失敗。リクエストがモデルに到達しなかった、またはモデル自身が報告しなかった理由で失敗しました。本文:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type、X-Comfy-Request-IdGET /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 です。型: RouterQueueRequestId — pattern: ^[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-Id、Retry-AfterRouterErrorResponse
認証情報が不足しているか無効です。ボディ:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type、X-Comfy-Request-IdRouterErrorResponse
この呼び出し元またはモデルに対してリクエストが許可されていません。ボディ:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type、X-Comfy-Request-IdRouterErrorResponse
モデル ID が見つかりませんでした。ボディ:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type、X-Comfy-Request-IdRouterErrorResponse
Router のリクエストレベルの失敗。リクエストがモデルに到達しなかったか、モデル自身が報告しなかった理由で失敗しました。ボディ:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type、X-Comfy-Request-IdRouterErrorResponse
Router が一時的に利用できません。バックオフして再試行してください。ボディ:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type、X-Comfy-Request-IdRouterErrorResponse
Router のリクエストレベルの失敗。リクエストがモデルに到達しなかったか、モデル自身が報告しなかった理由で失敗しました。ボディ:
RouterErrorResponse — ヘッダー: X-Comfy-Error-Type、X-Comfy-Request-Idエラーバケット
Router の機械可読なエラーカテゴリで、X-Comfy-Error-Type ヘッダーでも送信されます。
リクエストレベルバケット
Router が受け付けたものの、完了できなかったリクエストに対して発生します。トランスポートレベルバケット
モデルへの呼び出しの前またはその周辺で、Router 自身によって発生します。レスポンスヘッダー
string
提供されるスキーマドキュメントの鮮度ディレクティブ。
string
提供されるドキュメントのバイト列に対する強力なエンティティタグ。
GET /v2/models/{provider}/{model}/openapi.json 用です。boolean
このレスポンスがモデルを再度実行した結果ではなく、
Idempotency-Key の記録から提供された場合に存在し、true になります。integer
同じリクエストを変更せずに再送する前に待機する秒数。送信時:
503integer
このキュー中のリクエストを再度ポーリングする前に待機する秒数。送信時:
200, 202integer
同じ
Idempotency-Key で同じリクエストを再試行する前に待機する秒数。送信時: 409, 504string
この実行にかかったコストを Comfy クレジットで示したもので、課金自体と同じ料金カードから算出されます。したがって呼び出し元は独自の価格表を持つ必要がありません。また、複数の課金対象呼び出しを経てプロバイダーに到達した実行では、最後の呼び出しの値ではなくそれらの合計になります。
RouterErrorType
障害を表す大まかで機械可読な分類で、Router がすべてのエラーレスポンスに設定します。型:
RouterErrorTypestring
コンテンツポリシーによる拒否がどの入力または出力に関するものかを、Router レベルの閉じた語彙として示します:
input, output, input_text, input_image, input_video, input_audio, output_text, output_image, output_video, output_audio。string
この呼び出しに対してサーバーが生成する識別子で、成功、4xx、5xx を問わず、すべての Router レスポンスに存在します。エラーレスポンスこそ、ユーザーがサポートリクエストで引用する ID を必要とするまさにその瞬間だからです。
string
文字列の配列を保持する、JSON エンコードされた 1 つの文字列です。カンマで分割するのではなく JSON パーサーでデコードしてください。これはワイヤー上では単一の文字列であり、カンマ区切りの OpenAPI 配列ではないためです。また、各エントリはそれ自体にカンマを含む文です。このヘッダーは、ある変換がこの呼び出しのリクエストボディを生成し、1 つ以上のネイティブフィールドを、それを処理したプロバイダー上で正確に表現できなかった場合に常に存在し、削除された各フィールドとその理由を示します。呼び出し元が
model_provider でその変換を要求した場合(strict_mode=false、これがデフォルト)でも、自動の fallback_provider 再試行がそれを実行した場合でも同様です。string
fallback_provider が実際にこの呼び出しを 2 つ目のプロバイダーに対して再試行し、その再試行が成功した場合にのみ存在し、プロバイダー名を示します。最終的にこの呼び出しを処理したプロバイダーであり、試行されて同様に失敗したプロバイダーではありません。string
モデルプロバイダーがリクエストを拒否した理由を、範囲を限定してサニタイズしたもの。
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 から読み取ります。この呼び出しには APIキーが必要です。スキーマが作成されているすべてのモデルについて、同じドキュメントが APIキーなしでこのサイトの /router-schemas/{provider}/{model}.json にも公開されています。このコピーは最後のドキュメント更新時に取得されたスナップショットであるため、両者が異なる場合はエンドポイントの内容が正式です。オペレーションの requestBody は入力の検証を記述しており、その 200 レスポンスは、スキーマが作成されている場合に出力の形状とメディアタイプを記述しています。x-comfy-input-schema-authored が false の場合、Router はモデル固有の事前検証なしで任意の JSON オブジェクトを受け入れます。プロバイダーの要件は引き続き適用されます。出力スキーマは結果を記述するものであり、Router は返されたプロバイダーのペイロードをそれらに対して検証しません。スキーマが作成されていない出力では、application/json ではなく */* が使用される場合があります。デコードする前にレスポンスのコンテンツタイプを確認してください。
スキーマ
RouterChargesOnPolicyRejection
このモデルでコンテンツポリシーによる拒否が課金されるかどうか。不明な値は課金される可能性があるものとして扱ってください。 型:string
RouterErrorResponse
認証、アクセス、モデル検索、クォータ、およびプロバイダー転送の失敗に対するエラーボディ。 フィールドstring
必須
失敗内容を人間が読める形式で記述したもの。エンドユーザーに提示しても安全です。機械的にパースされることはありません。分岐には
error_type を使用してください。文書化された例外が 2 つあります。POST /v2/models/{provider}/{model} では、409 は invalid_input バケットを共有する 3 つの無関係な条件に対して返され、それらを区別するのは detail だけです。“this request’s image selects the edit operation” で始まる detail はマルチパートの model_provider 拒否であり、“this request resolved a BYOK credential” で始まる detail は BYOK の model_provider 拒否です。どちらも新しい Idempotency-Key では解消されません。そのルート上の他の invalid_input 409 はキーの競合です。どちらのプレフィックスも安定した契約用語であり、マッチングに使用できます。これ以外の箇所では、detail による分岐に互換性の保証はありません。RouterErrorType
必須
Router の失敗を表す粗い機械可読な分類。レスポンスヘッダー
X-Comfy-Error-Type にも反映されるため、呼び出し側はボディをパースせずに分岐できます。値の集合は 19 個で閉じています。リクエストレベルの 6 つの分類 invalid_input、content_policy_violation、provider_error、provider_timeout、insufficient_credits、model_not_found に加えて、転送レベルの unauthorized、forbidden、concurrency_limit_exceeded、client_disconnected、internal_error、deadline_exceeded、not_enabled、service_unavailable、rate_limited、cancelled、queue_timeout、request_not_found、queue_backlog_full があります。閉じているとは今日ドキュメント化されている集合を指すのであって、永遠に成立する境界ではありません。集合は今後も増える見込みであり、そのためこれは意図的に enum ではなく素の文字列になっています。したがってクライアントは、認識できない値を internal_error として扱う必要があり、上記の一覧を網羅的に分岐して次の追加で壊れてはいけません。型: RouterErrorTypestring
モデルプロバイダーがリクエストを拒否した理由を、範囲を限定してサニタイズしたもの。
error_type が invalid_input で、かつ X-Comfy-Upstream-Status がプロバイダーの 4xx または 2xx である場合にのみ存在します。つまり、プロバイダーがリクエストを不正な形式として拒否し、その理由を示したケースです。通常そのステータスは 4xx です。プロバイダーが拒否された生成を成功のエンベロープ内で報告する場合には 2xx になります(BytePlus の失敗タスクのポーリングは HTTP 200 で、理由はボディに含まれます)。それ以外のすべての失敗では存在しません。プロバイダーの 5xx、転送の失敗、コンテンツポリシーによる拒否、および Router が自身について発生させたあらゆる拒否が含まれます。これは X-Comfy-Upstream-Detail ヘッダーを反映します。string
コンテンツポリシーによる拒否がどの入力または出力に関するものかを示す、Router レベルの閉じた語彙です:
input, output, input_text, input_image, input_video, input_audio, output_text, output_image, output_video, output_audio。プロバイダーがモダリティを特定しなかった場合、input / output は対象側を示します。error_type が content_policy_violation で、プロバイダーが拒否対象を機械可読なコードで示した場合にのみ存在し、それ以外では省略されます。プロバイダーの文章は決して含みません。現在、BytePlus、Runway、BFL、Gemini、Veo、Vertex、xAI、Wan の拒否について名前が付けられています。拒否がどちら側に関するものかを示さないプロバイダーでは省略されます。これは X-Comfy-Refusal-Subject ヘッダーを反映します。RouterErrorType
機械可読な Router エラーのカテゴリ。X-Comfy-Error-Type ヘッダーでも送信されます。
型: string
RouterModelBilling
モデルを呼び出す前に確認すべき課金の挙動。価格や使用量は含まれません。 フィールドRouterChargesOnPolicyRejection
必須
このモデルがコンテンツポリシー上の理由で拒否した呼び出しが、それでも呼び出し元に課金されるかどうか。プロバイダーによって異なり、その違いは呼び出し時には見えず、同じ呼び出しに対してエラーと課金の両方を見たユーザーは知りようがありません。そのため、プロバイダーごとの慣習に任せるのではなく、呼び出し前にモデルごとに明記されています。型:
RouterChargesOnPolicyRejectionRouterModelDetail
1つの Comfy Router モデルに対するモデル単位の詳細です。カタログ一覧が報告するすべての内容に加えて、単一モデルルートだけが持つモデル単位のフィールドを含みます。RouterModelListEntry、RouterModelDetailFields を組み合わせます。
型: 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。
型: string。モデル 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} でモデルを指定する値そのものであり、呼び出し側は他の何かから再導出することなく、この値をそのパスに埋め込むことができます。その pattern は RouterProviderSegment と RouterModelSegment を単一の / で結合したもので、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
必須
呼び出しの前に呼び出し側が必要とする、モデルごとの課金に関する事実であり、価格ではありません。使用量やコストの数値がここに現れることは決してありません。型:
RouterModelBillingRouterModelListResponse
Router モデルカタログの 1 ページです。 フィールドarray of RouterModelListEntry
必須
このページに含まれるモデルで、最大
limit 件です。型: RouterModelListEntry の配列boolean
必須
このページより先に別のページが存在するかどうか。これが true の間はページを進め続けてください。
data が短い、または空であることからカタログの終端を推測しないでください。RouterPageCursor
Router リストへの不透明なカーソルです。サーバーによって生成され、そのまま往復されるだけの値です。オフセットではなく、モデル ID でもなく、順序付けもされておらず、カタログの再構築をまたいで安定もしません。したがって、これを解析したり、インクリメントしたり、取得元の走査を超えて永続化したりすることは、いずれも契約の範囲外です。オフセットではなくカーソルである理由は、カタログが変化するリストだからです。走査の途中でエントリが追加または削除されると、オフセットによる走査はエントリを黙ってスキップしたり繰り返したりしますが、呼び出し側はそれが起きたことを判別できません。型:
RouterPageCursor。next_cursor として返される不透明なカーソルで、1~512 文字です。integer
必須
実際に提供されたページサイズです。最大値を超える
limit を要求した場合、拒否されるのではなく最大値にクランプされるため、要求した値より小さくなることがあります。ページネーションには、送信した値ではなくこの数値を使用してください。そうしないと、受け取っていない行を前提にしてしまいます。1~100RouterModelOutput
モデルの結果オブジェクトです。正確な形状については、選択済みモデルの出力スキーマを参照してください。 型:object
RouterModelSegment
{provider}/{model} モデル ID のモデル部分です。
型: string。英数字のスラッグ(例: claude-opus-4-6)、最大 128 文字
RouterPageCursor
不透明なカタログカーソルです。変更を加えずにそのままcursor として渡し直してください。
型: string。next_cursor として返される不透明なカーソルで、1~512文字です。
RouterProviderSegment
{provider}/{model} というモデル ID のプロバイダー部分です。
型: string。英数字のスラッグ(例: anthropic)、最大 64 文字
RouterQueueCancelResponse
このルートが解決したリクエストを表す2つのステータス、すなわち202 と 400 に対するキャンセル要求への応答です。成功用のエンベロープとエラー用のエンベロープに分けるのではなく、両ステータスで単一のボディ形状をとります。どちらも「キャンセルで何が見つかったか」という同じ内容を伝えるものであり、ステータスコードごとに異なる型をパースしなければならないクライアントにとって、分割による利点は何もないからです。
フィールド
RouterQueueRequestId
必須
キュー中の1件の Router リクエストの識別子。呼び出し側がポーリング、キャンセル、結果の取得に使うハンドルです。型:
RouterQueueRequestId、pattern: ^[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 ステータスに反映されるため、クライアントはどちらで分岐してもかまいません。型:
RouterQueueCancelStatusRouterQueueCancelStatus
このルートが実際に解決したリクエストを表す 2 つの結果について、キャンセル要求が検出した内容を示します。どちらも HTTP ステータスに反映されるため、クライアントはどちらで分岐してもかまいません。 型:string
RouterQueuePosition
レスポンスが構成された時点で、このリクエストより前にキュー内にあるリクエストの数。0 はこのリクエストが先頭であることを意味します。 型:integer — 0 以上
RouterQueueRequestId
キュー中の Router リクエスト 1 件の識別子。呼び出し元がポーリングやキャンセル、結果の取得に用いるハンドルです。 型:string、pattern: ^[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 として宣言され、その制約はクライアントが見られる場所に明記されています。
型: string
RouterQueueStatusFields
RouterQueueStatusResponse のうち URL ブロックではない半分です。キュー中のリクエスト 1 件の識別情報、その現在の状態、そしてその状態がターミナルで実行が成功しなかった場合は、その理由を示す粗い分類です。
フィールド
RouterQueueRequestId
必須
キュー中の Router リクエスト 1 件の識別子。呼び出し側がポーリング、キャンセル、結果の取得を行うためのハンドルです。型:
RouterQueueRequestId — pattern: ^[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 として宣言され、その制約はクライアントが見える場所に明記されています。型: RouterQueueStatusRouterQueuePosition
レスポンスが構成された時点で、キュー内でこのリクエストより前に並んでいるリクエストの数。ゼロはこのリクエストが先頭であることを意味します。型:
RouterQueuePosition — 0 以上RouterErrorType
成功しなかった
COMPLETED リクエストにのみ存在し、その失敗を返すときに結果の読み取りが X-Comfy-Error-Type に設定するのと同じ粗い分類を持ちます。これは、成功したターミナルリクエストと、失敗またはキャンセル済みのリクエストを区別するものです(どちらにも別個のターミナルステータスはありません)。また、成功時には null ではなく存在しません。そのため、その存在の有無で分岐してください。型: RouterErrorTypeRouterQueueStatusResponse
キュー中のリクエスト1件の現在の状態を、送信時に返されたものと同じ3つのURLと組み合わせたものです。RouterQueueUrls、RouterQueueStatusFields を構成要素とします。
型: object
RouterQueueSubmitFields
RouterQueueSubmitResponse のうち URL ブロックではない半分: 新しいリクエストの識別情報と、それが受け付けられた時点での状態です。
フィールド
RouterQueueRequestId
必須
キュー中の Router リクエスト1件の識別子。呼び出し元がポーリング、キャンセル、結果の収集に使うハンドルです。型:
RouterQueueRequestId — pattern: ^[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 として宣言され、その制約はクライアントが見られる場所に明記されています。型: RouterQueueStatusRouterQueuePosition
レスポンスが構成された時点で、キュー内でこのリクエストより前に何件のリクエストがあるか。ゼロはこのリクエストが先頭であることを意味します。型:
RouterQueuePosition — 0以上RouterQueueSubmitResponse
実行がキューに受け入れられたときに返されるハンドルです。リクエストの識別情報と状態を、そのライフサイクルの残りの部分を指す 3 つの URL と合成したものです。RouterQueueUrls、RouterQueueSubmitFields を合成します。
型: 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 文字列に畳み込んだりすると、まさに移植された統合がコンパイルは通るものの、その境界値を読んでいた分岐を黙って失うことになります。エラータイプが境界値を持たない場合は省略されます。型: RouterValidationErrorContextRouterValidationErrorInput
問題のある入力値。呼び出し元が
loc から再導出することなく、何が拒否されたかを確認できるよう、そのままエコーバックされます。任意の JSON 型(文字列、数値、ブール、配列、オブジェクト、null)であるため、このスキーマは意図的にオブジェクトに絞り込まず、型なしのままにしています。プロバイダーが入力値をエコーバックしない場合は省略されます。型: RouterValidationErrorInputRouterValidationErrorInput
プロバイダーがこの値を含める場合の、拒否された入力値です。RouterValidationErrorResponse
422 検証エラーのレスポンスボディ。カテゴリについては X-Comfy-Error-Type を参照してください。
フィールド
array of RouterValidationErrorDetail
必須
リクエストで検出されたすべての検証失敗。問題のあるフィールドごとに 1 エントリ。型:
RouterValidationErrorDetail の配列