OpenRouterとは何か——統合LLM APIゲートウェイの仕組み
OpenRouterは、複数のLLMベンダーを1つのOpenAI互換インターフェースに束ねる統合APIゲートウェイです。https://openrouter.ai/api/v1/chat/completions という単一エンドポイントと1つのAPI Keyで、GPT、Claude、Gemini、Llama、DeepSeek、Qwen、Mistralなど70社以上の400以上のモデルに到達できます。各社への個別登録、SDKの使い分け、請求ダッシュボードの分散管理が不要になります。
- 認証:
Authorization: Bearer $OPENROUTER_API_KEY - プロトコル:OpenAI Chat Completions形式——既存のOpenAI SDKコードは
base_urlとapi_keyの変更だけで動作します - モデル指定:
ベンダー/モデル名形式(例:openai/gpt-4o、anthropic/claude-3.5-sonnet、google/gemini-2.5-pro)
OpenRouter内部では、次の2層が独立してルーティング判断を行います。
| 決定層 | 決定内容 | 制御フィールド |
|---|---|---|
| モデルルーティング | どのモデルが応答するか | model、またはopenrouter/autoで自動選択 |
| プロバイダルーティング | 同一モデルをどのデータセンターが処理するか | providerオブジェクト;デフォルトは価格の逆二乗加重で安く安定したプロバイダを自動選択 |
主力プロバイダがレート制限やエラーを返した場合、OpenRouterは次の利用可能なプロバイダ、またはmodels配列で指定した代替モデルへ自動切り替えします。ビジネスコード側でcircuit breakerを自前実装しなくても、ゲートウェイ層でフェイルオーバーが完結します。
複数ベンダー管理の痛点——OpenRouterが解く摩擦点
多モデル開発を進めるほど、次のような非自明なコストが積み上がります。
- アカウント分散:ベンダーごとにKYC、請求先、API Keyローテーションを個別管理する必要があります
- SDK/プロトコルの差異:モデル切り替えのたびにクライアント実装を書き換える工数が発生します
- 可用性の自前設計:直連では限流・障害時のリトライとフォールバックをアプリ側で実装する必要があります
- 請求の突合:複数ダッシュボードを横断してコストを把握するのは、A/Bテストやプロトタイプ段階でも負担になります
OpenRouterと各社直連APIの比較——どちらを選ぶべきか
OpenRouterは公式SDKの代替ではなく、「多モデル利用」と「単一ベンダー直連」の間にある折衷案です。次の表で主要な差分を整理します。
| 観点 | OpenRouter | 各社直連API |
|---|---|---|
| アカウントとKey | 1つのOpenRouter Keyで全モデルに到達 | ベンダーごとに個別登録・個別Key |
| SDK移行コスト | base_urlとapi_keyの2行変更で済む | ベンダーごとにSDK/プロトコルが異なる場合あり |
| フェイルオーバー | プロバイダ切替+モデルFallbackを内蔵 | リトライ・切替ロジックを自前実装 |
| 請求と用量 | 1つのDashboardで全モデルの消費を確認 | 複数管理画面を横断して突合 |
| Token単価 | ベンダー原価をそのまま透過、token markupなし | 公式原価;大口はエンタープライズ割引の可能性 |
| 追加手数料 | Credits購入時に5.5%(最低$0.80);暗号資産決済は別途5% | 中間層手数料なし |
| レイテンシ | ゲートウェイ経由で約10〜80msの追加ホップ | 直連で最低レイテンシ |
| 専用機能 | 汎用Chat Completionsインターフェース | Prompt Caching、Batch API、Assistants API、Vertex AIツールチェーンなど |
OpenRouterの5つの利点と、向かないケース
利点1:1 Keyで全モデルに到達、移行コストがほぼゼロ。モデル切替はmodel文字列の変更だけで済み、ベンダーごとの適配層を書く必要がありません。
利点2:プロバイダ横断の自動フェイルオーバー。models配列とroute: "fallback"で明示的なフォールバックチェーンを設定でき、主力が落ちても次候補へ自動移行します。
利点3:統一請求と用量分析。1つのDashboardで全モデルの消費、コスト、TTFT、スループットを確認できます。
利点4:token markupなしの料金設計。公式FAQによればtoken単価への上乗せはなく、Credits購入時のみ5.5%の手数料がかかります。BYOK(Bring Your Own Key)モードでは月100万リクエストまで無料、超過分は同等額の5%サービス料です。
利点5:プロトタイプと多モデルA/Bテストに最適。同一のPrompt/Agentフレームワークで市場の主要モデルを横断検証でき、月数千ドル規模の中規模ワークロードでも運用負荷を抑えられます。
直連APIの方が適するケース:単一モデル固定で月数万ドル以上の超大口(5.5%手数料が直連構築のコストを上回る)、Anthropic Prompt CachingやOpenAI Batch APIなどベンダー専用機能が必須、レイテンシに極端に敏感、データコンプライアンスやデータレジデンシー上、米国の第三者中間層を経由できない——これらの条件では直連を検討してください。
実践手順——OpenRouter APIを6ステップで導入する
登録から初回リクエストまでの流れです。Pythonバージョン競合や古いSDK残留を避けるため、クリーンなmacOS開発環境での作業を推奨します。
- OpenRouterアカウントを登録する:openrouter.aiにアクセスし、GitHubまたはメールで登録します。
- API Keyを発行する:Dashboard → Keysでキーを生成し、
OPENROUTER_API_KEY環境変数に保存します。リポジトリへのハードコードは避けてください。 - (任意)Creditsをチャージする:有料モデル呼び出しには残高が必要です。チャージ時に5.5%(最低$0.80)の手数料がかかります。未チャージでも25以上の無料モデルが利用可能ですが、レート制限があります。
- 利用可能モデルを確認する:
GET /api/v1/modelsで対象モデルIDと現行単価を確認します。 - 初回リクエストを送る:curlまたはSDKで
/v1/chat/completionsを呼び出し、modelを指定します。 - ストリーミングとFallbackを検証する:本番投入前に
stream: trueとmodels配列の容災チェーンをそれぞれテストし、クライアント側が正しく処理できることを確認します。
curl https://openrouter.ai/api/v1/models \
-H "Authorization: Bearer $OPENROUTER_API_KEY"
コード例——curl / Python / Node.js / OpenAI SDK / ストリーミング / Fallback
以下は代表的な4パターンに加え、ストリーミングとFallbackの例です。OpenRouterはHTTP-RefererとX-Titleヘッダーの送信を推奨しています(ランキング統計用)。
curl https://openrouter.ai/api/v1/chat/completions \
-H "Authorization: Bearer $OPENROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-3.5-sonnet",
"messages": [
{ "role": "user", "content": "量子コンピューティングを一文で説明してください" }
]
}'
import requests
import os
response = requests.post(
url="https://openrouter.ai/api/v1/chat/completions",
headers={
"Authorization": f"Bearer {os.environ['OPENROUTER_API_KEY']}",
"Content-Type": "application/json",
},
json={
"model": "google/gemini-2.5-pro",
"messages": [
{"role": "user", "content": "クイックソートのPython実装を書いてください"}
],
},
)
print(response.json()["choices"][0]["message"]["content"])
from openai import OpenAI
import os
client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key=os.environ["OPENROUTER_API_KEY"],
)
completion = client.chat.completions.create(
model="openai/gpt-4o",
messages=[{"role": "user", "content": "Hello!"}],
extra_headers={
"HTTP-Referer": "https://your-app-domain.com",
"X-Title": "My App",
},
)
print(completion.choices[0].message.content)
import OpenAI from "openai";
const openai = new OpenAI({
baseURL: "https://openrouter.ai/api/v1",
apiKey: process.env.OPENROUTER_API_KEY,
});
const completion = await openai.chat.completions.create({
model: "deepseek/deepseek-chat",
messages: [{ role: "user", content: "Explain OpenRouter in one sentence" }],
});
console.log(completion.choices[0].message.content);
const stream = await openai.chat.completions.create({
model: "anthropic/claude-3.5-sonnet",
messages: [{ role: "user", content: "秋について短い詩を書いてください" }],
stream: true,
});
for await (const chunk of stream) {
const content = chunk.choices[0]?.delta?.content;
if (content) process.stdout.write(content);
}
{
"model": "anthropic/claude-3.5-sonnet",
"models": [
"anthropic/claude-3.5-sonnet",
"openai/gpt-4o",
"google/gemini-2.5-pro"
],
"route": "fallback",
"messages": [{ "role": "user", "content": "Hello" }]
}
主モデルがレート制限やエラーを返した場合、OpenRouterはリスト順に次のモデルを自動試行します。アプリ側で追加のリトライロジックを書く必要はありません。
無料枠・BYOK・料金——引用しておきたい技術情報
- 無料モデル:25以上の無料モデル(Llama、Gemma、DeepSeek無料枠など)が利用可能。未チャージアカウントは約50回/日;$10以上チャージ後は1000回/日・20回/分に引き上げ。
- BYOK(Bring Your Own Key):各ベンダーのAPI Keyを持ち込むと、月100万リクエストまでOpenRouterサービス料無料。超過分は同等額の5%。
- 料金メカニズム:Tokenはベンダー原価を透過、markupなし。Credits購入時のみ5.5%(最低$0.80)。暗号資産決済は別途5%。
- モデル数:70社以上のプロバイダ、400以上のモデル。完全なリストは
GET /api/v1/modelsでリアルタイム取得。
料金体系、無料モデル一覧、レート制限は更新される可能性があります。本記事の要約ではなく、以下の公式リンクを正としてください。
OpenRouter 公式 —— Provider Routingの仕組み
よくある質問 FAQ
OpenRouterは有料ですか?
25以上の無料モデルが利用可能です(レート制限あり)。有料モデルはベンダー原価のtoken課金で、OpenRouterはtoken単価に上乗せしません。Credits購入時のみ5.5%(最低$0.80)の手数料がかかります。
どのモデルが使えますか?
GPT-4o、Claude 3.5 Sonnet、Gemini 2.5 Pro、DeepSeek、Llama、Qwen、Mistralなど、70社以上・400以上のモデルに対応しています。完全なリストはGET /api/v1/modelsで確認してください。
OpenRouterとClaude直連、どちらが良いですか?
Claudeのみ利用し、最低レイテンシやPrompt Cachingなど専用機能が必要ならAnthropic直連が適します。多モデル切替、統一請求、内蔵Fallbackが必要ならOpenRouterが効率的です。
データは安全ですか?
リクエストはOpenRouterゲートウェイを経由して各ベンダーへルーティングされます。厳格なデータコンプライアンスやデータレジデンシー要件がある場合は、直連またはBYOKモードでKey権限を自社管理してください。
Pythonからどう呼び出しますか?
requestsでhttps://openrouter.ai/api/v1/chat/completionsへ直接POSTする方法と、OpenAI SDKのbase_urlをOpenRouterに差し替える方法の2通りがあります。後者なら既存コードの変更は最小限です。
無料枠の制限はどの程度ですか?
未チャージアカウントは無料モデル約50回/日。$10以上チャージ後は1000回/日・20回/分に引き上げられます。正確な上限は公式FAQを参照してください。
OpenRouterは「多モデルAPI統合」の問題を解決しますが、ローカル開発環境の摩擦までは面倒を見てくれません。Python仮想環境の競合、Node.jsバージョン不一致、Agentフレームワークの試行錯誤で主力機が汚れる——多モデル実験段階では特に起きやすい課題です。いつでも初期化でき、日単位で借り直せる実機のApple Silicon Mac miniなら、OpenRouter接続スクリプトやNext.jsプロトタイプ、常駐Agentプロセスを気兼ねなく走らせられます。Kimi K3モデルテストガイドやXcode CIランナー構築ガイドで紹介した「クリーンなマシン」の考え方は、OpenRouter多モデル連携にもそのまま当てはまります。
実機Apple Siliconで多モデル接続を試す
Mac mini M4を日単位で立ち上げ、OpenRouter実験スクリプトやAgentプロトタイプを走らせ、終わったら解約するだけ——主力機に依存関係を残しません。