> ## Documentation Index
> Fetch the complete documentation index at: https://dripart-chore-sync-comfy-api-v2-spec.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Comfy Router で Chat Completions を使用する

> Comfy Router 経由で openrouter/chat-completions を呼び出します: エンドポイント、リクエスト形状、Router が返すレスポンスについて説明します。

Openrouter から Comfy Router によって提供される `openrouter/chat-completions` の API リファレンスです。

## リクエストのセットアップ

[お使いの Comfy ワークスペース](https://platform.comfy.org/profile/api-keys?onboarding=router)でキーを作成し、`COMFY_API_KEY` としてエクスポートします。Python の場合は `pip install comfy-sdk` を実行します。TypeScript の場合は `npm install @comfyorg/sdk` を実行します。Swift の場合は [`ComfySwiftSDK`](https://github.com/Comfy-Org/comfy-swift-sdk) パッケージを追加します。cURL は生の HTTP を使用します。

**モデル ID:** `openrouter/chat-completions`

**エンドポイント:** `POST https://api.comfy.org/v2/models/openrouter/chat-completions`

<Note>
  このモデルには実行可能なリクエスト例がありません。以下の入力ドキュメントからボディを構築し、[Router クイックスタート](/ja/development/comfy-router/quickstart)で使用してください。
</Note>

## スキーマ

### 入力

<ParamField body="cache_control" type="object">
  自動プロンプトキャッシュを有効にします。トップレベルで設定すると、リクエスト内の最後のキャッシュ可能なブロックにキャッシュブレークポイントが自動的に適用されます。現在は Anthropic Claude モデルでサポートされています。
</ParamField>

<ParamField body="cache_control.ttl" type="string">
  指定可能な値: `5m`、`1h`
</ParamField>

<ParamField body="cache_control.type" type="string" required>
  指定可能な値: `ephemeral`
</ParamField>

<ParamField body="debug" type="object">
  リクエストの変換を検査するためのデバッグオプション（ストリーミングのみ）
</ParamField>

<ParamField body="debug.echo_upstream_body" type="boolean">
  true の場合、変換後の上流リクエストボディをストリーム開始時のデバッグチャンクに含めます。ストリーミングモードでのみ動作します。
</ParamField>

<ParamField body="frequency_penalty" type="number">
  頻度ペナルティ（-2.0 から 2.0）

  形式: `double`
</ParamField>

<ParamField body="image_config" type="object | string | number | object[]" />

<ParamField body="logit_bias" type="object">
  トークンの logit バイアス調整
</ParamField>

<ParamField body="logprobs" type="boolean">
  対数確率を返します
</ParamField>

<ParamField body="max_completion_tokens" type="integer">
  補完の最大トークン数
</ParamField>

<ParamField body="max_tokens" type="integer">
  最大トークン数（非推奨。max\_completion\_tokens を使用してください）。注意: 一部のプロバイダーでは最小 16 が強制されます。
</ParamField>

<ParamField body="messages" type="object[]" required>
  会話のメッセージのリスト
</ParamField>

<ParamField body="metadata" type="object">
  追加のオブジェクト情報のためのキーと値のペア（最大 16 ペア、キーは 64 文字、値は 512 文字）
</ParamField>

<ParamField body="modalities" type="`text`, `image`, `audio`[]">
  レスポンスの出力モダリティ。サポートされる値は "text"、"image"、"audio" です。
</ParamField>

<ParamField body="model" type="string">
  補完に使用するモデル
</ParamField>

<ParamField body="models" type="string[]">
  補完に使用するモデル
</ParamField>

<ParamField body="parallel_tool_calls" type="boolean">
  ツール使用時に並列関数呼び出しを有効にするかどうか。true の場合、モデルは 1 回のレスポンスで複数のツール呼び出しを生成することがあります。
</ParamField>

<ParamField body="plugins" type="object[]">
  このリクエストで有効にするプラグインとその設定。
</ParamField>

<ParamField body="presence_penalty" type="number">
  存在ペナルティ（-2.0 から 2.0）

  形式: `double`
</ParamField>

<ParamField body="provider" type="object">
  複数のモデルプロバイダーが利用可能な場合に、ルーティングの優先設定を任意で指定します。
</ParamField>

<ParamField body="provider.allow_fallbacks" type="boolean">
  バックアッププロバイダーによるリクエスト処理を許可するかどうか

  * true:（デフォルト）プライマリプロバイダー（または "order" で指定したカスタムプロバイダー）が利用できない場合、次に最適なプロバイダーを使用します。
  * false: プライマリまたはカスタムプロバイダーのみを使用し、利用できない場合は上流のエラーを返します。
</ParamField>

<ParamField body="provider.data_collection" type="`deny`, `allow`">
  データ収集の設定。要件を満たす利用可能なモデルプロバイダーがない場合、リクエストはエラーを返します。

  * allow:（デフォルト）ユーザーデータを一時的でない形で保存し、それを学習に使用する可能性があるプロバイダーを許可します。

  * deny: ユーザーデータを収集しないプロバイダーのみを使用します。
</ParamField>

<ParamField body="provider.enforce_distillable_text" type="boolean">
  テキスト蒸留を許可しているモデルのみにルーティングを制限するかどうか。true の場合、作者が蒸留を許可しているモデルのみが使用されます。
</ParamField>

<ParamField body="provider.ignore" type="`AkashML`, `AI21`, `AionLabs`, `Alibaba`, `Ambient`, `Baidu`, `Amazon Bedrock`, `Amazon Nova`, `Anthropic`, `Arcee AI`, `AtlasCloud`, `Avian`, `Azure`, `BaseTen`, `BytePlus`, `Black Forest Labs`, `Cerebras`, `Chutes`, `Cirrascale`, `Clarifai`, `Cloudflare`, `Cohere`, `Crucible`, `Crusoe`, `DeepInfra`, `DeepSeek`, `DekaLLM`, `Featherless`, `Fireworks`, `Friendli`, `GMICloud`, `Google`, `Google AI Studio`, `Groq`, `Hyperbolic`, `Inception`, `Inceptron`, `InferenceNet`, `Ionstream`, `Infermatic`, `Io Net`, `Inflection`, `Liquid`, `Mara`, `Mancer 2`, `Minimax`, `ModelRun`, `Mistral`, `Modular`, `Moonshot AI`, `Morph`, `NCompass`, `Nebius`, `Nex AGI`, `NextBit`, `Novita`, `Nvidia`, `OpenAI`, `OpenInference`, `Parasail`, `Poolside`, `Perceptron`, `Perplexity`, `Phala`, `Recraft`, `Reka`, `Relace`, `SambaNova`, `Seed`, `SiliconFlow`, `Sourceful`, `StepFun`, `Stealth`, `StreamLake`, `Switchpoint`, `Together`, `Upstage`, `Venice`, `WandB`, `Xiaomi`, `xAI`, `Z.AI`, `FakeProvider` | string[]">
  無視するプロバイダーのスラッグのリスト。指定した場合、このリストはこのリクエストに対してアカウント全体で無視するプロバイダー設定とマージされます。
</ParamField>

<ParamField body="provider.max_price" type="object">
  このリクエストに対して支払う最大価格を指定するオブジェクト。プロンプトと補完の 100 万トークンあたりの USD 価格です。
</ParamField>

<ParamField body="provider.max_price.audio" type="string">
  100 万プロンプトトークンあたりの価格
</ParamField>

<ParamField body="provider.max_price.completion" type="string">
  100 万プロンプトトークンあたりの価格
</ParamField>

<ParamField body="provider.max_price.image" type="string">
  100 万プロンプトトークンあたりの価格
</ParamField>

<ParamField body="provider.max_price.prompt" type="string">
  100 万プロンプトトークンあたりの価格
</ParamField>

<ParamField body="provider.max_price.request" type="string">
  100 万プロンプトトークンあたりの価格
</ParamField>

<ParamField body="provider.only" type="`AkashML`, `AI21`, `AionLabs`, `Alibaba`, `Ambient`, `Baidu`, `Amazon Bedrock`, `Amazon Nova`, `Anthropic`, `Arcee AI`, `AtlasCloud`, `Avian`, `Azure`, `BaseTen`, `BytePlus`, `Black Forest Labs`, `Cerebras`, `Chutes`, `Cirrascale`, `Clarifai`, `Cloudflare`, `Cohere`, `Crucible`, `Crusoe`, `DeepInfra`, `DeepSeek`, `DekaLLM`, `Featherless`, `Fireworks`, `Friendli`, `GMICloud`, `Google`, `Google AI Studio`, `Groq`, `Hyperbolic`, `Inception`, `Inceptron`, `InferenceNet`, `Ionstream`, `Infermatic`, `Io Net`, `Inflection`, `Liquid`, `Mara`, `Mancer 2`, `Minimax`, `ModelRun`, `Mistral`, `Modular`, `Moonshot AI`, `Morph`, `NCompass`, `Nebius`, `Nex AGI`, `NextBit`, `Novita`, `Nvidia`, `OpenAI`, `OpenInference`, `Parasail`, `Poolside`, `Perceptron`, `Perplexity`, `Phala`, `Recraft`, `Reka`, `Relace`, `SambaNova`, `Seed`, `SiliconFlow`, `Sourceful`, `StepFun`, `Stealth`, `StreamLake`, `Switchpoint`, `Together`, `Upstage`, `Venice`, `WandB`, `Xiaomi`, `xAI`, `Z.AI`, `FakeProvider` | string[]">
  許可するプロバイダーのスラッグのリスト。指定した場合、このリストはこのリクエストに対するアカウント全体の許可プロバイダー設定とマージされます。
</ParamField>

<ParamField body="provider.order" type="`AkashML`, `AI21`, `AionLabs`, `Alibaba`, `Ambient`, `Baidu`, `Amazon Bedrock`, `Amazon Nova`, `Anthropic`, `Arcee AI`, `AtlasCloud`, `Avian`, `Azure`, `BaseTen`, `BytePlus`, `Black Forest Labs`, `Cerebras`, `Chutes`, `Cirrascale`, `Clarifai`, `Cloudflare`, `Cohere`, `Crucible`, `Crusoe`, `DeepInfra`, `DeepSeek`, `DekaLLM`, `Featherless`, `Fireworks`, `Friendli`, `GMICloud`, `Google`, `Google AI Studio`, `Groq`, `Hyperbolic`, `Inception`, `Inceptron`, `InferenceNet`, `Ionstream`, `Infermatic`, `Io Net`, `Inflection`, `Liquid`, `Mara`, `Mancer 2`, `Minimax`, `ModelRun`, `Mistral`, `Modular`, `Moonshot AI`, `Morph`, `NCompass`, `Nebius`, `Nex AGI`, `NextBit`, `Novita`, `Nvidia`, `OpenAI`, `OpenInference`, `Parasail`, `Poolside`, `Perceptron`, `Perplexity`, `Phala`, `Recraft`, `Reka`, `Relace`, `SambaNova`, `Seed`, `SiliconFlow`, `Sourceful`, `StepFun`, `Stealth`, `StreamLake`, `Switchpoint`, `Together`, `Upstage`, `Venice`, `WandB`, `Xiaomi`, `xAI`, `Z.AI`, `FakeProvider` | string[]">
  プロバイダーのスラッグの順序付きリスト。ルーターは、このリストのうちリクエストされたモデルをサポートするサブセットの最初のプロバイダーを使用しようとし、利用できない場合は次のプロバイダーにフォールバックします。利用可能なプロバイダーがない場合、リクエストはエラーメッセージとともに失敗します。
</ParamField>

<ParamField body="provider.preferred_max_latency" type="number | object">
  希望する最大レイテンシ (秒単位)。数値 (p50 に適用) またはパーセンタイル別のしきい値を持つオブジェクトを指定できます。しきい値を超えるエンドポイントも引き続き使用される可能性がありますが、ルーティングでは優先度が下がります。フォールバックモデルを使用する場合、しきい値を満たしていればプライマリモデルの代わりにフォールバックモデルが使用されることがあります。
</ParamField>

<ParamField body="provider.preferred_min_throughput" type="number | object">
  希望する最小スループット (1 秒あたりのトークン数)。数値 (p50 に適用) またはパーセンタイル別のしきい値を持つオブジェクトを指定できます。しきい値を下回るエンドポイントも引き続き使用される可能性がありますが、ルーティングでは優先度が下がります。フォールバックモデルを使用する場合、しきい値を満たしていればプライマリモデルの代わりにフォールバックモデルが使用されることがあります。
</ParamField>

<ParamField body="provider.quantizations" type="`int4`, `int8`, `fp4`, `fp6`, `fp8`, `fp16`, `bf16`, `fp32`, `unknown`[]">
  プロバイダーをフィルタする量子化レベルのリスト。
</ParamField>

<ParamField body="provider.require_parameters" type="boolean">
  指定したパラメータをサポートするプロバイダーのみにフィルタするかどうか。この設定を省略するか false に設定した場合、プロバイダーはサポートするパラメータのみを受け取り、それ以外は無視します。
</ParamField>

<ParamField body="provider.sort" type="`price`, `throughput`, `latency`, `exacto` | object">
  このリクエストで使用する並び替え戦略 ("order" が指定されていない場合)。設定すると、負荷分散は行われません。
</ParamField>

<ParamField body="provider.zdr" type="boolean">
  ルーティングを ZDR (Zero Data Retention、データ保持ゼロ) エンドポイントのみに制限するかどうか。true の場合、プロンプトを保持しないエンドポイントのみが使用されます。
</ParamField>

<ParamField body="reasoning" type="object">
  推論モデルの構成オプション
</ParamField>

<ParamField body="reasoning.effort" type="`xhigh`, `high`, `medium`, `low`, `minimal`, `none`">
  推論モデルの推論にかける労力を制約します
</ParamField>

<ParamField body="reasoning.summary" type="string">
  指定可能な値: `auto`、`concise`、`detailed`
</ParamField>

<ParamField body="response_format" type="object">
  レスポンスフォーマットの構成
</ParamField>

<ParamField body="route" type="object">
  任意の型
</ParamField>

<ParamField body="seed" type="integer">
  決定論的な出力のためのランダムシード
</ParamField>

<ParamField body="service_tier" type="`auto`, `default`, `flex`, `priority`, `scale`">
  このリクエストの処理に使用するサービスティア。
</ParamField>

<ParamField body="session_id" type="string">
  可観測性のために関連するリクエスト (会話やエージェントワークフローなど) をグループ化するための一意の識別子。リクエストボディと x-session-id ヘッダーの両方で指定された場合、ボディの値が優先されます。最大 256 文字。
</ParamField>

<ParamField body="stop" type="string | string[] | object">
  停止シーケンス (最大 4 個)
</ParamField>

<ParamField body="stop_server_tools_when" type="object[]">
  server-tool エージェントループの停止条件。いずれかの条件が発火するとループが停止します (OR ロジック)。設定すると、`max_tool_calls` を上書きします。
</ParamField>

<ParamField body="stream" type="boolean" default="false">
  ストリーミングレスポンスを有効にする
</ParamField>

<ParamField body="stream_options" type="object">
  ストリーミングの構成オプション
</ParamField>

<ParamField body="stream_options.include_usage" type="boolean">
  Deprecated: このフィールドは効果がありません。完全な使用状況の詳細は常に含まれます。
</ParamField>

<ParamField body="temperature" type="number">
  サンプリング温度 (0-2)

  Format: `double`
</ParamField>

<ParamField body="tool_choice" type="`none` | `auto` | `required` | object">
  ツール選択の設定
</ParamField>

<ParamField body="tools" type="object[]">
  関数呼び出しで利用可能なツール
</ParamField>

<ParamField body="top_logprobs" type="integer">
  返す上位ログ確率の数 (0-20)
</ParamField>

<ParamField body="top_p" type="number">
  ニュークリアスサンプリングパラメータ (0-1)

  Format: `double`
</ParamField>

<ParamField body="trace" type="object">
  可観測性とトレーシングのためのメタデータ。既知のキー (trace\_id、trace\_name、span\_name、generation\_name、parent\_span\_id) は特別に処理されます。追加のキーはカスタムメタデータとして、設定されたブロードキャスト先にそのまま渡されます。
</ParamField>

<ParamField body="trace.generation_name" type="string" />

<ParamField body="trace.parent_span_id" type="string" />

<ParamField body="trace.span_name" type="string" />

<ParamField body="trace.trace_id" type="string" />

<ParamField body="trace.trace_name" type="string" />

<ParamField body="user" type="string">
  一意のユーザー識別子
</ParamField>

Router が `GET /v2/models/openrouter/chat-completions/openapi.json` で提供するスキーマ、つまりリクエストがプロバイダーに到達する前に呼び出しを検証するのと同じドキュメントから生成済みです。

### 出力

<ResponseField name="choices" type="object[]" required>
  補完候補のリスト
</ResponseField>

<ResponseField name="choices[].finish_reason" type="string" required>
  指定可能な値: `tool_calls`、`stop`、`length`、`content_filter`、`error`
</ResponseField>

<ResponseField name="choices[].index" type="integer" required>
  候補のインデックス
</ResponseField>

<ResponseField name="choices[].logprobs" type="object">
  補完の対数確率
</ResponseField>

<ResponseField name="choices[].logprobs.content" type="object[]" required>
  コンテンツトークンの対数確率
</ResponseField>

<ResponseField name="choices[].logprobs.content[].bytes" type="integer[]" required>
  トークンの UTF-8 バイト列
</ResponseField>

<ResponseField name="choices[].logprobs.content[].logprob" type="number" required>
  トークンの対数確率

  形式: `double`
</ResponseField>

<ResponseField name="choices[].logprobs.content[].token" type="string" required>
  トークン
</ResponseField>

<ResponseField name="choices[].logprobs.content[].top_logprobs" type="object[]" required>
  確率付きの上位代替トークン
</ResponseField>

<ResponseField name="choices[].logprobs.content[].top_logprobs[].bytes" type="integer[]" required />

<ResponseField name="choices[].logprobs.content[].top_logprobs[].logprob" type="number" required>
  形式: `double`
</ResponseField>

<ResponseField name="choices[].logprobs.content[].top_logprobs[].token" type="string" required />

<ResponseField name="choices[].logprobs.refusal" type="object[]">
  拒否トークンの対数確率
</ResponseField>

<ResponseField name="choices[].logprobs.refusal[].bytes" type="integer[]" required>
  トークンの UTF-8 バイト列
</ResponseField>

<ResponseField name="choices[].logprobs.refusal[].logprob" type="number" required>
  トークンの対数確率

  形式: `double`
</ResponseField>

<ResponseField name="choices[].logprobs.refusal[].token" type="string" required>
  トークン
</ResponseField>

<ResponseField name="choices[].logprobs.refusal[].top_logprobs" type="object[]" required>
  確率付きの上位代替トークン
</ResponseField>

<ResponseField name="choices[].logprobs.refusal[].top_logprobs[].bytes" type="integer[]" required />

<ResponseField name="choices[].logprobs.refusal[].top_logprobs[].logprob" type="number" required>
  形式: `double`
</ResponseField>

<ResponseField name="choices[].logprobs.refusal[].top_logprobs[].token" type="string" required />

<ResponseField name="choices[].message" type="object" required>
  リクエストとレスポンスのアシスタントメッセージ
</ResponseField>

<ResponseField name="choices[].message.audio" type="object">
  オーディオ出力データまたは参照
</ResponseField>

<ResponseField name="choices[].message.audio.data" type="string">
  Base64 エンコードされたオーディオデータ
</ResponseField>

<ResponseField name="choices[].message.audio.expires_at" type="integer">
  オーディオの有効期限タイムスタンプ
</ResponseField>

<ResponseField name="choices[].message.audio.id" type="string">
  オーディオ出力の識別子
</ResponseField>

<ResponseField name="choices[].message.audio.transcript" type="string">
  オーディオの文字起こし
</ResponseField>

<ResponseField name="choices[].message.content" type="string | object[] | object">
  アシスタントメッセージのコンテンツ
</ResponseField>

<ResponseField name="choices[].message.images" type="object[]">
  画像生成モデルによって生成された画像
</ResponseField>

<ResponseField name="choices[].message.images[].image_url" type="object" required />

<ResponseField name="choices[].message.images[].image_url.url" type="string" required>
  生成された画像の URL または base64 エンコードされたデータ
</ResponseField>

<ResponseField name="choices[].message.name" type="string">
  アシスタントのオプション名
</ResponseField>

<ResponseField name="choices[].message.reasoning" type="string">
  推論の出力
</ResponseField>

<ResponseField name="choices[].message.reasoning_details" type="object[]">
  拡張思考モデルの推論の詳細
</ResponseField>

<ResponseField name="choices[].message.refusal" type="string">
  コンテンツが拒否された場合の拒否メッセージ
</ResponseField>

<ResponseField name="choices[].message.tool_calls" type="object[]">
  アシスタントが実行したツール呼び出し
</ResponseField>

<ResponseField name="choices[].message.tool_calls[].function" type="object" required />

<ResponseField name="choices[].message.tool_calls[].function.arguments" type="string" required>
  JSON 文字列としての関数の引数
</ResponseField>

<ResponseField name="choices[].message.tool_calls[].function.name" type="string" required>
  呼び出す関数名
</ResponseField>

<ResponseField name="choices[].message.tool_calls[].id" type="string" required>
  ツール呼び出しの識別子
</ResponseField>

<ResponseField name="choices[].message.tool_calls[].type" type="string" required>
  指定可能な値: `function`
</ResponseField>

<ResponseField name="created" type="integer" required>
  作成時の Unix タイムスタンプ
</ResponseField>

<ResponseField name="id" type="string" required>
  一意の補完識別子
</ResponseField>

<ResponseField name="model" type="string" required>
  補完に使用されたモデル
</ResponseField>

<ResponseField name="object" type="string" required>
  指定可能な値: `chat.completion`
</ResponseField>

<ResponseField name="openrouter_metadata" type="object" />

<ResponseField name="openrouter_metadata.attempt" type="integer" required />

<ResponseField name="openrouter_metadata.attempts" type="object[]" />

<ResponseField name="openrouter_metadata.attempts[].model" type="string" required />

<ResponseField name="openrouter_metadata.attempts[].provider" type="string" required />

<ResponseField name="openrouter_metadata.attempts[].status" type="integer" required />

<ResponseField name="openrouter_metadata.endpoints" type="object" required />

<ResponseField name="openrouter_metadata.endpoints.available" type="object[]" required />

<ResponseField name="openrouter_metadata.endpoints.available[].model" type="string" required />

<ResponseField name="openrouter_metadata.endpoints.available[].provider" type="string" required />

<ResponseField name="openrouter_metadata.endpoints.available[].selected" type="boolean" required />

<ResponseField name="openrouter_metadata.endpoints.total" type="integer" required />

<ResponseField name="openrouter_metadata.is_byok" type="boolean" required />

<ResponseField name="openrouter_metadata.params" type="object" />

<ResponseField name="openrouter_metadata.params.quality_floor" type="number">
  フォーマット: `double`
</ResponseField>

<ResponseField name="openrouter_metadata.params.throughput_floor" type="number">
  フォーマット: `double`
</ResponseField>

<ResponseField name="openrouter_metadata.params.version_group" type="string" />

<ResponseField name="openrouter_metadata.pipeline" type="object[]" />

<ResponseField name="openrouter_metadata.pipeline[].cost_usd" type="number">
  フォーマット: `double`
</ResponseField>

<ResponseField name="openrouter_metadata.pipeline[].data" type="object" />

<ResponseField name="openrouter_metadata.pipeline[].guardrail_id" type="string" />

<ResponseField name="openrouter_metadata.pipeline[].guardrail_scope" type="string" />

<ResponseField name="openrouter_metadata.pipeline[].name" type="string" required />

<ResponseField name="openrouter_metadata.pipeline[].summary" type="string" />

<ResponseField name="openrouter_metadata.pipeline[].type" type="string" required>
  パイプラインステージのカテゴリ種別。複数のプラグインが同じ type を共有できます（例: guardrail レベルのプラグインはすべて `guardrail` を出力します）。どのプラグインが出力したかは `name` フィールドで区別します。

  指定可能な値: `guardrail`、`plugin`、`server_tools`、`response_healing`、`context_compression`
</ResponseField>

<ResponseField name="openrouter_metadata.region" type="string" required />

<ResponseField name="openrouter_metadata.requested" type="string" required />

<ResponseField name="openrouter_metadata.strategy" type="string" required>
  指定可能な値: `direct`、`auto`、`free`、`latest`、`alias`、`fallback`、`pareto`、`bodybuilder`、`fusion`
</ResponseField>

<ResponseField name="openrouter_metadata.summary" type="string" required />

<ResponseField name="service_tier" type="string">
  このリクエストに対して上流のプロバイダーが使用したサービス階層
</ResponseField>

<ResponseField name="system_fingerprint" type="string" required>
  システムフィンガープリント
</ResponseField>

<ResponseField name="usage" type="object">
  トークン使用量の統計
</ResponseField>

<ResponseField name="usage.completion_tokens" type="integer" required>
  補完（completion）のトークン数
</ResponseField>

<ResponseField name="usage.completion_tokens_details" type="object">
  補完のトークン使用量の詳細
</ResponseField>

<ResponseField name="usage.cost" type="number">
  補完のコスト

  フォーマット: `double`
</ResponseField>

<ResponseField name="usage.cost_details" type="object">
  上流の推論コストの内訳
</ResponseField>

<ResponseField name="usage.cost_details.upstream_inference_completions_cost" type="number" required>
  フォーマット: `double`
</ResponseField>

<ResponseField name="usage.cost_details.upstream_inference_cost" type="number">
  フォーマット: `double`
</ResponseField>

<ResponseField name="usage.cost_details.upstream_inference_prompt_cost" type="number" required>
  フォーマット: `double`
</ResponseField>

<ResponseField name="usage.is_byok" type="boolean">
  リクエストが Bring Your Own Key 構成を使用して行われたかどうか
</ResponseField>

<ResponseField name="usage.prompt_tokens" type="integer" required>
  プロンプトのトークン数
</ResponseField>

<ResponseField name="usage.prompt_tokens_details" type="object">
  プロンプトのトークン使用量の詳細
</ResponseField>

<ResponseField name="usage.total_tokens" type="integer" required>
  トークンの合計数
</ResponseField>

## 例

### 出力

```json theme={null}
{
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "message": {}
    }
  ],
  "created": 1750000000,
  "id": "gen-0000000000-examplecompletion",
  "model": "anthropic/claude-sonnet-4.5",
  "object": "chat.completion",
  "system_fingerprint": null,
  "usage": {
    "completion_tokens": 128,
    "cost": 0.00123,
    "prompt_tokens": 42,
    "total_tokens": 170
  }
}
```

## 出荷前の確認

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>
