Chat Completions
Chat Completions は最もよく使われる会話 API です。通常のチャット、コーディングアシスタント、要約、分類、ツール呼び出し、複数ターン会話に適しています。
OpenAI Chat Completions プロトコルに準拠しているため、既存の OpenAI 連携は Base URL と API Key を差し替えるだけで使えます。同じエンドポイントで Claude や Gemini などのモデルも呼び出せ、プロトコルの違いは RouteAPI が内部で変換します。
Endpoint
Section titled “Endpoint”POST /v1/chat/completions完全な URL:
https://api.routeapi.ai/v1/chat/completionsクライアントの Base URL に /v1 が含まれていない場合(例: https://api.routeapi.ai)でも /chat/completions へのリクエストを受け付け、RouteAPI が /v1/chat/completions に書き換えます。
リクエスト例
Section titled “リクエスト例”curl https://api.routeapi.ai/v1/chat/completions \ -H "Authorization: Bearer $ROUTEAPI_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-5.5", "messages": [ { "role": "user", "content": "RouteAPI を一文で紹介してください" } ] }'リクエストパラメータ
Section titled “リクエストパラメータ”| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
model | string | はい | モデル ID。現在のアカウントで利用可能なモデルである必要があります |
messages | array | はい | 会話メッセージ一覧 |
stream | boolean | いいえ | SSE ストリーミング出力を使用するかどうか。既定値は false |
temperature | number | いいえ | サンプリング温度 |
top_p | number | いいえ | nucleus sampling パラメータ |
max_tokens | number | いいえ | 最大出力 token 数 |
max_completion_tokens | number | いいえ | 出力上限の新しいフィールド名。両方ある場合、RouteAPI 自身の上限判定と計量ではこちらが優先されます |
stop | string/array | いいえ | カスタム停止シーケンス |
n | integer | いいえ | 生成候補数。複数候補が実際に返るかはモデル次第です |
presence_penalty | number | いいえ | presence penalty |
frequency_penalty | number | いいえ | frequency penalty |
seed | number | いいえ | ベストエフォートのサンプリングシード。再現性は上流モデル次第です |
user | string | いいえ | エンドユーザー識別子。対応する上流にはそのまま転送されます |
tools | array | いいえ | ツール定義 |
tool_choice | string/object | いいえ | ツール選択ポリシー |
response_format | object | いいえ | JSON mode または JSON Schema |
stream_options | object | いいえ | include_usage などのストリーミング追加オプション |
任意フィールドは送られたまま転送され、省略したフィールドに既定値が補われることはありません。詳しくは後述の「明示的なゼロ値」を参照してください。
messages 形式
Section titled “messages 形式”[ { "role": "system", "content": "あなたは慎重な技術アシスタントです。" }, { "role": "user", "content": "API ゲートウェイとは何かを説明してください。" }]よく使われる role:
| Role | 説明 |
|---|---|
system | システムプロンプト |
user | ユーザー入力 |
assistant | モデルの過去応答 |
tool | ツール呼び出し結果 |
content は文字列でも、マルチモーダル入力用のコンテンツブロック配列でもかまいません(マルチモーダル入力 を参照)。assistant メッセージがツール呼び出しを返した場合は、そのメッセージをそのまま返送し、role: "tool" の結果を続けます(ツール呼び出し を参照)。
レスポンス例
Section titled “レスポンス例”{ "id": "chatcmpl_xxx", "object": "chat.completion", "created": 1730000000, "model": "gpt-5.5", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "RouteAPI は、複数の AI モデルサービスを統一して管理する API ゲートウェイです。" }, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 24, "completion_tokens": 18, "total_tokens": 42 }}finish_reason は生成が終了した理由を示します。stop(自然終了)、length(出力上限に到達)、tool_calls(ツール呼び出しを要求)、content_filter(コンテンツフィルターで遮断)。
ストリーミング
Section titled “ストリーミング”stream: true を設定すると Server-Sent Events で返します。各行は chat.completion.chunk で、増分は choices[0].delta に入り、data: [DONE] で終わります。
data: {"id":"chatcmpl_xxx","object":"chat.completion.chunk","created":1730000000,"model":"gpt-5.5","choices":[{"index":0,"delta":{"content":"RouteAPI"},"finish_reason":null}]}
data: {"id":"chatcmpl_xxx","object":"chat.completion.chunk","created":1730000000,"model":"gpt-5.5","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
data: [DONE]既定では RouteAPI が data: [DONE] の前に token 使用量を含み choices が空の最終チャンクを追加します。"stream_options": {"include_usage": false} で抑止できます(stream_options 非対応のチャネルでは常に送られます)。使用量はコンソールのログにも記録されます。イベント処理の詳細とストリーム途中のエラーはストリーミング応答を参照してください。
SDK 設定
Section titled “SDK 設定”公式 OpenAI SDK は、API Key と Base URL を RouteAPI に向けるだけで、他のコードを変えずに使えます。
OpenAI Python SDK
Section titled “OpenAI Python SDK”pip install openaiimport osfrom openai import OpenAI
client = OpenAI( api_key=os.environ["ROUTEAPI_KEY"], base_url="https://api.routeapi.ai/v1",)
response = client.chat.completions.create( model="gpt-5.5", messages=[{"role": "user", "content": "RouteAPI を一文で紹介してください"}],)
print(response.choices[0].message.content)OpenAI Node.js SDK
Section titled “OpenAI Node.js SDK”npm install openaiimport OpenAI from 'openai';
const client = new OpenAI({ apiKey: process.env.ROUTEAPI_KEY, baseURL: 'https://api.routeapi.ai/v1',});
const response = await client.chat.completions.create({ model: 'gpt-5.5', messages: [{ role: 'user', content: 'RouteAPI を一文で紹介してください' }],});
console.log(response.choices[0].message.content);LangChain と LiteLLM
Section titled “LangChain と LiteLLM”どちらも OpenAI 互換のカスタムエンドポイントを指定できます。
import osfrom langchain_openai import ChatOpenAI
llm = ChatOpenAI( model="gpt-5.5", openai_api_key=os.environ["ROUTEAPI_KEY"], openai_api_base="https://api.routeapi.ai/v1",)import osimport litellm
response = litellm.completion( model="gpt-5.5", messages=[{"role": "user", "content": "RouteAPI を一文で紹介してください"}], api_key=os.environ["ROUTEAPI_KEY"], api_base="https://api.routeapi.ai/v1",)その他の互換クライアント
Section titled “その他の互換クライアント”OpenAI の Base URL をカスタマイズできるクライアントなら、同じ 3 項目で接続できます。
- API Key —
sk-で始まる RouteAPI API Key。 - Base URL —
https://api.routeapi.ai/v1。 - モデル —
GET /v1/modelsが返すモデル ID(Models を参照)。
Codex、Cursor、Claude Code、OpenCode などの設定例はOpenAI からの移行を参照してください。
公式 OpenAI API との違い
Section titled “公式 OpenAI API との違い”モデルの範囲が広い
Section titled “モデルの範囲が広い”公式 OpenAI API は OpenAI 自身のモデルしか提供しません。ここでは同じ model フィールドに複数プロバイダーのモデル(gpt-5.5、claude-sonnet-4-5、gemini-2.5-pro など)を指定でき、利用できるかどうかは Key とグループの設定によります。呼び出せるモデルは GET /v1/models の戻り値だけが根拠になります。
課金とレート制限は RouteAPI が管理
Section titled “課金とレート制限は RouteAPI が管理”- 課金は RouteAPI の価格表に基づき、プロバイダー公式価格と異なる場合があります。
- レート制限はプロバイダー自身の制限ではなく RouteAPI のポリシーに従います。
- 残高と Key クォータは RouteAPI コンソールで管理します。
能力は選択したモデル次第
Section titled “能力は選択したモデル次第”プロトコルはフィールドを定義するだけで、実際に効くかはモデル次第です。ツール呼び出し、画像入力、構造化出力、ストリーミング使用量、推論制御は、選択したモデルとその背後の上流サービスに依存します。モデル一覧エンドポイントは能力フラグを返さないため、依存する能力は本番前に実リクエストで 1 回確認してください。
明示的なゼロ値
Section titled “明示的なゼロ値”0、0.0、false を明示的に渡した任意パラメータは、「値が 0 だから未設定」として捨てられず、そのまま転送されます。これにより temperature: 0 を固定した決定論的なサンプリングが可能です。未設定にしたい場合はフィールド自体を省略し、null は送らないでください。
モデルサービスがリクエストを拒否した場合、RouteAPI は上流のステータスコードとメッセージを標準エラー形式で返し、message の末尾に (request id: <id>) を付けます。ルーティング前に発生したエラー(Key 無効、モデル権限なし、利用可能なチャネルなし)はよくあるエラーに記載のコードを使います。
互換性の注意
Section titled “互換性の注意”- 同じパラメータでも、モデルサービスによって対応状況が異なる場合があります。
tools、response_format、stream_optionsなどの任意パラメータを含める場合は、選択したモデルが対応しているか事前に確認してください。- 明示的に渡された
0またはfalseの任意パラメータは、ユーザーが明示設定した値として扱われるべきです。 - 構造化出力とツール呼び出しを併用する場合は、先に構造化出力の制約を確認してください。
次のステップ
Section titled “次のステップ”- Responses — より新しい OpenAI プロトコル。コーディングエージェントでよく使われます。
- Claude Messages — Anthropic ネイティブ形式。Claude 固有の機能を使えます。
- Google Gemini API — Google ネイティブ形式。
- Models — Key で呼べるモデルとエンドポイント種別。