ガイド
チャネルとプロバイダールーティング
X-Felo-Channel でモデルを特定のプロバイダーに固定し、デフォルトルーティング、課金、フォールバックのルールを理解します。
1 つのモデルが複数の上流プロバイダーから提供されることがあります。デフォルトでは Felo がプロバイダーを選びます。特定のプロバイダーを指定したい場合は、公開チャネルコードを 1 つ以上指定した X-Felo-Channel リクエストヘッダーを送ります。
対応 endpoint
X-Felo-Channel はすべての Model API 生成 endpoint で受け付けられます。
| Endpoint | プロトコル |
|---|---|
POST /api/v1/chat/completions | OpenAI Chat Completions |
POST /api/v1/responses | OpenAI Responses |
POST /api/v1/messages | Anthropic Messages |
POST /api/v1/images/generations | 画像生成 |
POST /api/v1/videos/generations | 動画生成 |
POST /api/v1/decisions | 意思決定 |
Data API(/v1/beta)と Felo APIs(/v2)には適用されません。
ヘッダーの値
値は 公開チャネルコード を順序どおりにカンマで区切ったリストです。
X-Felo-Channel: claude-cc
X-Felo-Channel: claude-cc,anthropic
X-Felo-Channel: default公開 Model API 仕様のルール:
- ヘッダーを省略するとデフォルトルートを使います。
defaultは単独で使う場合のみ有効です。チャネルコードと組み合わせないでください。- 公開チャネルコードは、カタログのモデルの
channels[].codeフィールドから取得します。プロバイダーの表示名ではなくコードを使ってください。 - ルーティングできるのは、実行可能で公開されているチャネルだけです。
デフォルトルーティング
ヘッダーを省略した場合、または default だけを送った場合、プラットフォームがプロバイダーを選びます。wallet モードでは、モデルの有効な公開チャネル順を逆方向に走査し、未公開または利用不可のチャネルを飛ばして、最初に利用可能なチャネルのプロバイダーを選びます。同じ上流モデル ID と service tier を持つ、そのプロバイダーの利用可能な endpoint を含める場合があります。
X-Felo-Channel: default を送る必要はありません。ヘッダーを省略するのがデフォルトルートの通常の使い方です。
明示的なルーティング
チャネルコードを送ると、指定した順に検証されます。送信されるのは最初のチャネルのプロバイダーグループだけです。別のプロバイダーへの自動フォールバックはありません。
つまり、チャネルリストは選択であり、リトライポリシーではありません。フェイルオーバーが必要な場合はアプリケーション側で実装してください。最初のチャネルが失敗したら、別のチャネルで新しいリクエストを送ります。
レガシーのプロバイダーヘッダーは X-Felo-Channel を上書きできません。クライアントの別のヘッダーもプロバイダーを要求している場合、X-Felo-Channel が優先されます。
料金
各公開チャネルは独自の標準料金と割引乗数を公開しています。モデル詳細ページでプロバイダーに表示される価格は、そのチャネルの顧客価格です。固定したチャネルによって、適用されるプロバイダーの料金が決まります。
大量のワークロードのためにチャネルを固定する前に、モデルページでプロバイダーの行を比較し、モデルと料金をお読みください。
チャネルコードの調べ方
- モデル詳細ページを開き、プロバイダー表を探します。
- プロバイダーを公開チャネルコードに対応付けます。コードは API が使う安定した識別子です。
- カタログを直接読む場合は
channels[].codeを使い、runnableを確認します。
たとえば claude-haiku-5-5 は anthropic(デフォルト)、azure、google-vertex-global、claude-cc など複数のチャネルを公開しています。claude-cc の行は独自の割引を示すため、固定するとプロバイダーと料金の両方が変わります。
例
Chat Completions を 1 つのチャネルに固定:
curl https://openapi.felo.ai/api/v1/chat/completions \
-H "Authorization: Bearer $FELO_API_KEY" \
-H "Content-Type: application/json" \
-H "X-Felo-Channel: claude-cc" \
-d '{
"model": "claude-haiku-5-5",
"max_tokens": 256,
"messages": [{"role": "user", "content": "Summarize this change in one sentence."}]
}'同じチャネルで Anthropic Messages:
curl https://openapi.felo.ai/api/v1/messages \
-H "Authorization: Bearer $FELO_API_KEY" \
-H "Content-Type: application/json" \
-H "X-Felo-Channel: claude-cc" \
-d '{
"model": "claude-haiku-5-5",
"max_tokens": 256,
"messages": [{"role": "user", "content": "Summarize this change in one sentence."}]
}'ルーティングヘッダーなしのデフォルトルーティング:
curl https://openapi.felo.ai/api/v1/chat/completions \
-H "Authorization: Bearer $FELO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-haiku-5-5",
"max_tokens": 256,
"messages": [{"role": "user", "content": "Summarize this change in one sentence."}]
}'