Chat Completions

OpenAI 互換の Chat Completions エンドポイントを使用して、メッセージ形式でテキストを生成します。

POST https://getrouter.ai/v1/chat/completions

基本リクエスト

curl https://getrouter.ai/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "MODEL_ID",
    "messages": [
      {"role": "system", "content": "明確かつ簡潔に回答してください。"},
      {"role": "user", "content": "API ゲートウェイとは何ですか?"}
    ]
  }'

非ストリーミングレスポンスでは、生成された内容は次の場所に格納されます。

choices[0].message.content

モデルから報告される場合、トークン使用量は usage オブジェクトで返されます。

Python

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://getrouter.ai/v1",
)

response = client.chat.completions.create(
    model="MODEL_ID",
    messages=[
        {"role": "system", "content": "明確かつ簡潔に回答してください。"},
        {"role": "user", "content": "API ゲートウェイとは何ですか?"},
    ],
)

print(response.choices[0].message.content)

Node.js / TypeScript

import OpenAI from 'openai'

const client = new OpenAI({
  apiKey: 'YOUR_API_KEY',
  baseURL: 'https://getrouter.ai/v1',
})

const response = await client.chat.completions.create({
  model: 'MODEL_ID',
  messages: [
    { role: 'system', content: '明確かつ簡潔に回答してください。' },
    { role: 'user', content: 'API ゲートウェイとは何ですか?' },
  ],
})

console.log(response.choices[0]?.message.content)

メッセージロール

API スキーマでは次のロールを使用できます。

ロール用途
system全体的な動作やコンテキスト
developerこのロールに対応するモデル向けの開発者指示
userエンドユーザーの入力
assistant以前のアシスタント出力
toolツール呼び出しから返された結果

主なリクエストフィールド

フィールド説明
model必須のモデル ID
messages必須の順序付き会話メッセージ
streamtrue の場合、増分チャンクを返す
temperature選択したモデルが対応するサンプリング制御
top_pNucleus sampling(核サンプリング)の制御
max_tokens対応モデルで生成する最大トークン数
max_completion_tokens対応モデルでの Completion トークン数の上限
toolsツール呼び出し対応モデル向けのツール定義
tool_choiceツール選択を制御
response_format対応モデル向けの構造化レスポンス設定
reasoning_effort対応する推論モデル向けの lowmediumhigh

選択したモデルが対応していないオプションフィールドは送信しないでください。

マルチモーダル入力

メッセージの content スキーマは、テキスト、画像 URL、入力音声、ファイル、動画 URL など、型付きのコンテンツパートに対応しています。利用可否はモデルによって異なります。

画像入力の例:

{
  "model": "MODEL_ID",
  "messages": [
    {
      "role": "user",
      "content": [
        {"type": "text", "text": "この画像について説明してください。"},
        {
          "type": "image_url",
          "image_url": {"url": "https://example.com/image.jpg"}
        }
      ]
    }
  ]
}

ツール呼び出し

対応モデルが tool_calls を返したら、アプリケーションで要求された関数を実行し、一致する tool_call_id を持つ tool メッセージを追加します。ツールの対応状況と具体的な動作はモデルによって異なります。

ストリーミング

streamtrue に設定し、各チャンクの choices[0].delta.content からテキストを読み取ります。詳しい例はストリーミングを参照してください。

エラー

  • 400 — リクエストフィールドが無効、または値が未対応
  • 401 — API キーがない、または無効
  • 429 — レート制限、クォータ、またはキャパシティ制限
  • モデルエラー — モデル ID が正しくない、またはエンドポイントが一致しない

次のステップ