Lovely Routerドキュメント
キーを取得
モデル API

ゲートウェイの仕組み

Lovely Router は、送られてきた API 形式のまま各リクエストをモデルに渡します。このページでは、エンドポイント、モデル ID、認証ヘッダー、そしてゲートウェイが変更するわずかな点について説明します。

Lovely Router は、Anthropic・OpenAI・Gemini の API を 1 つのホストで提供します。形式間の変換は行いません。Anthropic 形式のリクエストは Anthropic 形式を受け付けるチャネルに送られ、リクエスト本文は2 つの小さな変更を除き、書いたとおりの内容でチャネルに届きます。モデルをそのベンダー自身の API で呼び出せば、モデルはベンダーのドキュメントどおりにリクエストを受け取ります。thinking、cache_control、tools、generationConfig などのパラメータも変更されずにモデルに届くため、各ベンダー自身のドキュメントがそのまま当てはまります。

エンドポイントとベース URL#

SDK の接続先を、その API 用のベース URL に向けます。パスは SDK が付け足します。

APIエンドポイントSDK のベース URLガイド
Anthropic MessagesPOST /v1/messages、POST /v1/messages/count_tokenshttps://lovelyrouter.comAnthropic Messages
OpenAI Chat CompletionsPOST /v1/chat/completionshttps://lovelyrouter.com/v1OpenAI Chat Completions
OpenAI Responses(GPT のモデル)POST /v1/responseshttps://lovelyrouter.com/v1Responses API
GeminiPOST /v1beta/models/{model}:generateContent、:streamGenerateContent、:countTokenshttps://lovelyrouter.comGemini
OpenAI Images(画像モデル)POST /v1/images/generations、POST /v1/images/editshttps://lovelyrouter.com/v1画像
動画(キャラクター置き換え)POST /v1/videoshttps://lovelyrouter.com/v1動画
ライブ動画POST /v1/videos/livehttps://lovelyrouter.com/v1ライブ動画
ミュージックビデオPOST /v1/videos/musichttps://lovelyrouter.com/v1ミュージックビデオ
モデル一覧GET /v1/models、GET /v1beta/modelsモデルと料金

その他のモデル関連のエンドポイントは 404 を返します。利用できないものを参照してください。データツールとブラウザエージェントの API も、同じホストとキーを使います。

各モデルが対応する API#

どのモデルにもネイティブ API があります。ベンダーがそのモデル向けに設計した形式です。できるだけネイティブ API を使ってください。

モデルファミリーネイティブ API現在受け付けているその他の形式
Claude(claude-*)Anthropic MessagesOpenAI Chat Completions、Gemini
GPT(gpt-*)OpenAI Chat Completions、OpenAI ResponsesAnthropic Messages、Gemini
Gemini(gemini-*)GeminiOpenAI Chat Completions、Anthropic Messages
GPT Image(gpt-image-*)OpenAI Imagesなし
ホスト型モデル(dongfangshuo-*)OpenAI Chat CompletionsAnthropic Messages
ホスト型画像モデル(z-image-*)OpenAI Imagesなし

モデルを別の形式で呼び出すと、チャネルがリクエストをそのモデル向けに変換するため、ベンダーの機能の一部が引き継がれない場合があります。ベンダー固有のパラメータは、そのベンダー自身の API 向けに定義されています。Anthropic の cache_control と thinking、OpenAI の reasoning_effort、Gemini の thinkingConfig が確実に機能するのは、モデルのネイティブ形式で送った場合だけです。別の形式では無視されるか、拒否される場合があります。

モデルが受け付ける形式は、そのモデルを提供するチャネルによって決まるため、変わることがあります。モデルごとの対応形式はマーケットプレイスで確認できます。送った形式を受け付けるチャネルがない場合、リクエストは 404 で失敗し、Model 'gpt-6.1-sol' is not served in gemini format in any group. のようなメッセージが返ります。

モデル ID#

GET /v1/models の ID を使います(例:claude-sonnet-5.5、gpt-6.1-sol、gemini-3.1-pro)。ゲートウェイは他のツールで使われている表記も受け付け、同じモデルとして解決します。

送信した ID解決後の ID
claude-sonnet-5-5claude-sonnet-5.5
anthropic/claude-sonnet-5.5claude-sonnet-5.5
claude-haiku-4-5-20251001claude-haiku-4.5
gemini-3.1-pro-previewgemini-3.1-pro
models/gemini-3-flashgemini-3-flash

ルールは次のとおりです。大文字と小文字は区別しません。先頭の vendor/ または models/ プレフィックスは除去します。. と - は同じものとして扱います。末尾の日付(-20251001)、-preview、-latest は除去します。ログ、キーの許可リスト、請求では、常に正規の ID が使われます。

どのモデルにも一致しない ID には、404 と Model '<id>' is not available. See GET /v1/models. が返ります。

ゲートウェイが変更する点#

リクエスト本文は送られたとおりに転送されます。例外は次の 2 つです。

  1. モデル ID。 処理するチャネルが想定する ID に置き換えられます。そのため、レスポンスの model フィールドはベンダー側の表記(例:claude-sonnet-5-5)になる場合があります。
  2. OpenAI ストリームの使用量。 ストリーミングの Chat Completions リクエストには、ゲートウェイが呼び出しを課金できるよう stream_options.include_usage: true が付与されます。ストリームの最後に、空の choices 配列と usage オブジェクトを持つチャンクが 1 つ追加されます。チャンクを読むときは、choices が空の場合に備えてください。

リクエストヘッダーは、anthropic-version、anthropic-beta、openai-beta を除いて転送されません。anthropic-version がない場合は 2023-06-01 が送られます。Gemini のエンドポイントでは、alt=sse などのクエリパラメータは転送され、key は除去されます。

レスポンスは 1 バイトも変えずに返されます。ゲートウェイは content-type と cache-control ヘッダーを保持し、独自のヘッダーを追加します(レスポンスヘッダーを参照)。ベンダーのリクエスト ID やレート制限ヘッダーは透過しません。

モデルがリクエストを無効として拒否した場合(400、404、413、422)は、同じステータスと理由が、お使いの API のエラー形式で返ります。それ以外の失敗は、まず別のチャネルで再試行されます。レート制限とフェイルオーバーとエラーを参照してください。

認証#

どのエンドポイントも、次のいずれの場所でもキーを受け付けます。そのため、各 SDK は既定の認証方法のまま使えます。

送り方使用している SDK・ツール
Authorization: Bearer lr-...OpenAI SDK、ANTHROPIC_AUTH_TOKEN を使う Claude Code、ほとんどの HTTP クライアント
x-api-key: lr-...Anthropic SDK
x-goog-api-key: lr-...Google Gen AI SDK、Gemini CLI
?key=lr-... クエリパラメータGemini の REST の例

GET /v1/models と GET /v1beta/models にはキーは不要です。キーの扱いについては認証を参照してください。

レスポンスヘッダー#

ヘッダー値
x-lovely-request-idこの呼び出しの ID(例:req_6f1c...)。ログの項目と一致します。サポートに問い合わせる際に添えてください。
x-lovely-group呼び出しを処理したチャネルグループ(例:claude-value)。
x-lovely-channelグループのチャネルラベルを URL エンコードしたもの(例:Pooled%20capacity)。
x-lovely-queued-ms呼び出しが容量の空きを待った場合のみ付与。待機時間(ミリ秒)。

最初の 3 つは access-control-expose-headers に含まれているため、ブラウザからも読み取れます。

リクエストのライフサイクル#

  1. 認証。 キーが有効で、有効期限内である必要があります。そうでなければ 401 が返ります。
  2. モデルの解決。 上記のとおり ID を解決し、キーのモデル許可リストと照合します(許可されていなければ 403)。
  3. 残高の確認。 残高が 0 以下の場合、またはキーが利用上限を超えている場合は 402 が返ります。
  4. キーの制限の適用。 キーの 1 分あたりのリクエスト数と同時実行数の制限が適用されます(429)。レート制限とフェイルオーバーを参照してください。
  5. チャネルの選択。 進行中の会話は、そのプロンプトキャッシュを持つチャネルに戻ります。新しい会話は、チャネルグループ内で最適な利用可能チャネルに送られます。プロンプトキャッシュを参照してください。
  6. モデルの呼び出し。 チャネルが出力を返す前に失敗した場合、リクエストは別のチャネルに移ります(最大 3 回まで試行)。ストリームは最初のトークンまで保留されるため、この切り替えは外から見えません。ストリーミングを参照してください。
  7. 計量と記録。 レスポンスのトークン数から請求額が決まり、数秒以内に残高から差し引かれます。モデルと料金を参照してください。

利用できないもの#

存在するのは上記のエンドポイントだけです。以下は 404 を返します。

  • 保存された OpenAI のレスポンス(/v1/responses/{id})、旧来の Completions、embeddings、画像のバリエーション(image variations)、audio、files、batches。
  • Anthropic の Message Batches、Files、Models-by-id の各エンドポイント。
  • Gemini の cachedContents(明示的なコンテキストキャッシュ)、ファイルのアップロード、embedContent、Live API。

OpenAI Responses API は GPT のモデルにのみ提供されます。主なクライアントの設定はお使いのツールで使うにあります。