コンテンツにスキップ

Chat Completions

Chat Completions は最もよく使われる会話 API です。通常のチャット、コーディングアシスタント、要約、分類、ツール呼び出し、複数ターン会話に適しています。

OpenAI Chat Completions プロトコルに準拠しているため、既存の OpenAI 連携は Base URL と API Key を差し替えるだけで使えます。同じエンドポイントで Claude や Gemini などのモデルも呼び出せ、プロトコルの違いは RouteAPI が内部で変換します。

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 に書き換えます。

Terminal window
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 を一文で紹介してください" }
]
}'
フィールド型必須説明
modelstringはいモデル ID。現在のアカウントで利用可能なモデルである必要があります
messagesarrayはい会話メッセージ一覧
streambooleanいいえSSE ストリーミング出力を使用するかどうか。既定値は false
temperaturenumberいいえサンプリング温度
top_pnumberいいえnucleus sampling パラメータ
max_tokensnumberいいえ最大出力 token 数
max_completion_tokensnumberいいえ出力上限の新しいフィールド名。両方ある場合、RouteAPI 自身の上限判定と計量ではこちらが優先されます
stopstring/arrayいいえカスタム停止シーケンス
nintegerいいえ生成候補数。複数候補が実際に返るかはモデル次第です
presence_penaltynumberいいえpresence penalty
frequency_penaltynumberいいえfrequency penalty
seednumberいいえベストエフォートのサンプリングシード。再現性は上流モデル次第です
userstringいいえエンドユーザー識別子。対応する上流にはそのまま転送されます
toolsarrayいいえツール定義
tool_choicestring/objectいいえツール選択ポリシー
response_formatobjectいいえJSON mode または JSON Schema
stream_optionsobjectいいえinclude_usage などのストリーミング追加オプション

任意フィールドは送られたまま転送され、省略したフィールドに既定値が補われることはありません。詳しくは後述の「明示的なゼロ値」を参照してください。

[
{ "role": "system", "content": "あなたは慎重な技術アシスタントです。" },
{ "role": "user", "content": "API ゲートウェイとは何かを説明してください。" }
]

よく使われる role:

Role説明
systemシステムプロンプト
userユーザー入力
assistantモデルの過去応答
toolツール呼び出し結果

content は文字列でも、マルチモーダル入力用のコンテンツブロック配列でもかまいません(マルチモーダル入力 を参照)。assistant メッセージがツール呼び出しを返した場合は、そのメッセージをそのまま返送し、role: "tool" の結果を続けます(ツール呼び出し を参照)。

{
"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(コンテンツフィルターで遮断)。

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 非対応のチャネルでは常に送られます)。使用量はコンソールのログにも記録されます。イベント処理の詳細とストリーム途中のエラーはストリーミング応答を参照してください。

公式 OpenAI SDK は、API Key と Base URL を RouteAPI に向けるだけで、他のコードを変えずに使えます。

Terminal window
pip install openai
import os
from 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)
Terminal window
npm install openai
import 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);

どちらも OpenAI 互換のカスタムエンドポイントを指定できます。

import os
from 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 os
import 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",
)

OpenAI の Base URL をカスタマイズできるクライアントなら、同じ 3 項目で接続できます。

  1. API Key — sk- で始まる RouteAPI API Key。
  2. Base URL — https://api.routeapi.ai/v1。
  3. モデル — GET /v1/models が返すモデル ID(Models を参照)。

Codex、Cursor、Claude Code、OpenCode などの設定例はOpenAI からの移行を参照してください。

公式 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 コンソールで管理します。

詳しくは課金とクォータとモデル価格を参照してください。

プロトコルはフィールドを定義するだけで、実際に効くかはモデル次第です。ツール呼び出し、画像入力、構造化出力、ストリーミング使用量、推論制御は、選択したモデルとその背後の上流サービスに依存します。モデル一覧エンドポイントは能力フラグを返さないため、依存する能力は本番前に実リクエストで 1 回確認してください。

0、0.0、false を明示的に渡した任意パラメータは、「値が 0 だから未設定」として捨てられず、そのまま転送されます。これにより temperature: 0 を固定した決定論的なサンプリングが可能です。未設定にしたい場合はフィールド自体を省略し、null は送らないでください。

モデルサービスがリクエストを拒否した場合、RouteAPI は上流のステータスコードとメッセージを標準エラー形式で返し、message の末尾に (request id: <id>) を付けます。ルーティング前に発生したエラー(Key 無効、モデル権限なし、利用可能なチャネルなし)はよくあるエラーに記載のコードを使います。

  • 同じパラメータでも、モデルサービスによって対応状況が異なる場合があります。
  • tools、response_format、stream_options などの任意パラメータを含める場合は、選択したモデルが対応しているか事前に確認してください。
  • 明示的に渡された 0 または false の任意パラメータは、ユーザーが明示設定した値として扱われるべきです。
  • 構造化出力とツール呼び出しを併用する場合は、先に構造化出力の制約を確認してください。
  • Responses — より新しい OpenAI プロトコル。コーディングエージェントでよく使われます。
  • Claude Messages — Anthropic ネイティブ形式。Claude 固有の機能を使えます。
  • Google Gemini API — Google ネイティブ形式。
  • Models — Key で呼べるモデルとエンドポイント種別。