Lovely Routerドキュメント
キーを取得
API リファレンス

API リファレンス

Lovely Router のすべてのエンドポイントに共通する、ベース URL、認証、リクエストの規約、制限、再試行のガイドラインです。

Lovely Router は 1 つのホストから、1 つのキーと 1 つの残高で 2 種類の API を提供します。

  • モデル API:各ベンダー独自の形式(Anthropic Messages、OpenAI Chat Completions、Gemini)で提供します。リクエストとレスポンスはベンダーの API リファレンスに従うため、公式 SDK を変更なしで使えます。Lovely Router はいくつかのレスポンスヘッダーを追加します。
  • Lovely Router API:データツール(/v1/tools)とブラウザエージェント(/v1/browser)向けの JSON API で、以下で説明する規約に従います。

ベース URL#

すべてのエンドポイントは https://lovelyrouter.com から HTTPS で提供されます。

APISDK のベース URLエンドポイント
Anthropic Messageshttps://lovelyrouter.comPOST /v1/messages, POST /v1/messages/count_tokens
OpenAI Chat Completionshttps://lovelyrouter.com/v1POST /v1/chat/completions
Geminihttps://lovelyrouter.comPOST /v1beta/models/{model}:generateContent, :streamGenerateContent, :countTokens
モデル一覧—GET /v1/models, GET /v1beta/models
データツールhttps://lovelyrouter.com/v1/v1/tools/...
ブラウザエージェントhttps://lovelyrouter.com/v1/v1/browser/...
ミュージックビデオhttps://lovelyrouter.com/v1/v1/videos/music/...
MCP サーバー—POST /mcp

OpenAI の Responses、Embeddings、Images API など、ここに記載のないエンドポイントは 404 を返します。

認証#

API キーを Bearer トークンとして送ります。モデルのエンドポイントは各ベンダー独自のヘッダーも受け付けるため、どの SDK もデフォルト設定のまま動作します。

HTTP
Authorization: Bearer lr-...
ヘッダー主な用途
Authorization: Bearer lr-...OpenAI SDK、データツール、ブラウザエージェント、MCP
x-api-key: lr-...Anthropic SDK
x-goog-api-key: lr-...Google Gen AI SDK

モデル一覧とツールカタログにはキーが不要です。それ以外にはすべてキーが必要です。認証を参照してください。

リクエストとレスポンス#

  • JSON で送り、JSON で受け取る。 リクエストボディは content-type: application/json を付けて JSON で送ります。例外は、生のファイルまたは multipart/form-data を受け付けるブラウザエージェントへのファイルアップロードと、image/jpeg を返す実行のスクリーンショットです。
  • ストリーミング。 "stream": true を指定した Anthropic と OpenAI のリクエストは、Server-Sent Events(text/event-stream)を返します。Gemini の :streamGenerateContent は、Google の API と同じく JSON 配列をストリーミングし、?alt=sse を付けると Server-Sent Events で返します。ストリーミングを参照してください。
  • クロスオリジンリクエストはすべてのオリジンから許可されています。ただし、ブラウザから API を呼び出しても安全という意味ではありません。フロントエンドのコードに含めたキーは誰でも読み取れます。

Lovely Router 独自の API は次の規約に従います。

規約例
ID には種類を示すプレフィックスが付くツール実行は run_…、ブラウザ実行は brun_…
タイムスタンプは UTC の ISO 8601"created_at": "2026-10-11T09:30:00.000Z"
金額は米ドルの数値"charge_usd": 0.042, "reserved_usd": 0.3
リストはオブジェクトで包まれる{"object": "list", "data": [...]}
時間のかかる処理は 202 を返すボディに状態確認用の poll パスが含まれる
待機はクエリパラメータで指定するGET /v1/tools/runs/{id}?wait=60 は、実行が終わるか時間切れになるまでリクエストを保持する

レスポンスヘッダー#

モデルのレスポンスには、ベンダーのヘッダーに加えて次のヘッダーが付きます。

ヘッダー意味
x-lovely-request-idリクエストの一意の ID。ログにも表示されます。サポートに問い合わせる際に添えてください。
x-lovely-groupリクエストを処理したチャネルグループ
x-lovely-channelそのチャネルグループの短い説明(URL エンコード済み)
x-lovely-queued-msリクエストが容量の空きを待った時間(ミリ秒)。待機が発生した場合のみ
retry-after429 レスポンスの場合:再試行までに待つべき秒数

バージョニング#

モデル API はベンダーのバージョニングに従います。 SDK が送るヘッダーをそのまま送ってください。Anthropic では anthropic-version と anthropic-beta、OpenAI では openai-beta です。Gemini のリクエストは、Google の API と同じく /v1beta パスを使います。Lovely Router はこれらのヘッダーだけを転送し、それ以外は転送しません。そのため、別のベンダーヘッダーに依存する機能は利用できません。

Lovely Router API はパスでバージョン管理され、/v1 以下にあります。レスポンスには新しいフィールドが追加されることがあるため、認識できないフィールドは無視するようにクライアントを実装してください。

レート制限#

リクエストには次の制限が適用されます。

制限適用対象超過時
キーに設定した 1 分あたりのリクエスト数と同時実行数そのキーからのモデルのリクエストretry-after 付きの 429
モデルの容量モデルのリクエスト。短いバーストはまず数秒間キューで待機します。429(通常は retry-after 付き)
アカウントあたり進行中の実行 10 件データツールとブラウザの実行429
キーごとに 1 分あたり 100 リクエスト、キーなしの呼び出し元は全体で共有して 1 分あたり 100 リクエストPOST /v1/tools/suggestretry-after 付きの 429

レート制限とフェイルオーバーと API キーを参照してください。

再試行と冪等性#

Lovely Router は、失敗したモデルのリクエストをエラーとして返す前に別のチャネルで再試行します。そのため、受け取った 5xx はすでに再試行済みです。それでも、429 と 5xx のレスポンスは retry-after に従いつつ、指数バックオフで自分でも再試行する価値があります。その他の 4xx エラーは、リクエストを変更せずに再試行しないでください。OpenAI と Anthropic の公式 SDK はデフォルトで 2 回再試行します。バッチジョブでは max_retries(Node.js では maxRetries)を増やしてください。

この API は冪等性キーを受け付けません。次のケースに備えてください。

  • クライアント側でタイムアウトしたモデルのリクエストも、実際には完了して課金されている場合があります。 再試行すると二重に支払う可能性があります。長い生成では余裕のあるクライアントタイムアウトを設定するか、ストリーミングを使ってください。
  • ツールやブラウザの実行の開始は冪等ではありません。 POST /v1/tools/{id}/run や POST /v1/browser/runs がタイムアウトした場合は、別の実行を開始する前に GET /v1/tools/runs または GET /v1/browser/runs で最近の実行を確認してください。
  • 読み取りは何度繰り返しても安全です。 実行のポーリング、実行の一覧取得、結果の取得で課金されることはありません。

Python と Node.js の再試行のコードは失敗したリクエストを再試行するにあります。

エラー#

モデルのエンドポイントはベンダーの形式でエラーを返すため、SDK はいつもの例外を送出します。Lovely Router 独自の API は次の形式で返します。

JSON
{"error": {"type": "invalid_request_error", "message": "\"goal\" is required (max 4,000 characters)"}}

すべてのステータスコードと、形式ごとのボディの例はエラーにあります。