Skip to Content
APIプロバイダールーティング

プロバイダールーティング

1 つのモデルは複数のプロバイダーで提供されていることが多く、provider.type はリクエストをそのうち 1 つに固定します。どんなプロバイダーがあるか、なぜ固定するのかはプロバイダールーティングを参照してください。本ページは各プロトコルのフィールド契約です。

フィールドの位置

このフィールドの位置はプロトコルによって異なります:

プロトコル / エンドポイントリクエストボディリクエストヘッダー
OpenAI Chat Completions · POST /v1/chat/completionsextra_body.provider.typeX-OfoxAI-Provider-Type
OpenAI Responses · POST /v1/responsesextra_body.provider.typeX-OfoxAI-Provider-Type
OpenAI Images · POST /v1/images/generationsextra_body.provider.typeX-OfoxAI-Provider-Type
Anthropic Messages · POST /anthropic/v1/messagesextra_body.provider.typeX-OfoxAI-Provider-Type
Gemini generateContent · POST /gemini/v1beta/…黙って無視X-OfoxAI-Provider-Type
Video API · POST /v1/videosトップレベルの provider.type

画像モデルのうち、現在複数のプロバイダーで提供されているのは openai/gpt-image-2azure_foundryopenai)だけです。ほかは単一プロバイダーのため、別のプロバイダーを指定すると 400 provider_type_unavailable が返ります。また Gemini 系の画像モデルには 2 つのプロトコル入口があります —— /v1/images/generations ではボディのフィールドが有効ですが、Gemini ネイティブの generateContent では無視されます。

リクエストボディで渡す

extra_body は JSON ボディのリテラルなキーとして存在し、その中に provider をネストします:

Terminal
curl https://api.ofox.io/v1/chat/completions \ -H "Authorization: Bearer $OFOX_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "anthropic/claude-sonnet-5", "messages": [{ "role": "user", "content": "..." }], "extra_body": { "provider": { "type": "bedrock" } } }'

公式の OpenAI SDK を使用する場合、extra_body はリクエストボディのリテラルなキーとして存在する必要があります。TypeScript SDK はパラメータオブジェクトに記述したとおりに送信します。Python SDK の extra_body= 引数は内容をボディのトップレベルにマージするため、キーをもう 1 段階深くネストするか、リクエストヘッダーで渡してください。

Gemini ネイティブプロトコルはボディの extra_body.provider を無視します —— リクエストは正常に返り、制約は適用されず、エラーも出ません。このプロトコルでは下記のヘッダーを使ってください。

リクエストヘッダーで渡す

X-OfoxAI-Provider-Type は Gemini を含むすべてのテキストプロトコルで有効で、リクエストボディを変更できない接続方式に向いています:

Terminal
curl https://api.ofox.io/gemini/v1beta/models/google/gemini-3.1-flash-lite:generateContent \ -H "Authorization: Bearer $OFOX_API_KEY" \ -H "X-OfoxAI-Provider-Type: vertex" \ -H "Content-Type: application/json" \ -d '{ "contents": [{ "parts": [{ "text": "..." }] }] }'

両方に対応しているプロトコルでは、ヘッダーとボディのフィールドは等価です。Video API にヘッダー形式はありません — Video API · プロバイダールーティングを参照してください。

エラー

error.type発生条件
invalid_provider_type値がプロバイダー名ではありません:綴り間違い、または廃止された書き方です。
provider_type_unavailableプロバイダーは存在しますが、このモデルを提供していません。メッセージには提供元のプロバイダーも併記されます。

指定できるプロバイダー

一覧と、あるモデルをどのプロバイダーが提供しているかの調べ方はプロバイダールーティングにあります。

Last updated on