モデルとルーティング
UberLLMは、お客様が要求したモデルのために、各リクエストを利用可能なサードパーティプロバイダーに送信します。プロバイダーが応答を開始する前に失敗した場合、そのリクエストは再試行され、それでも失敗するリクエストは課金されません。各リクエストは、プロバイダーが請求した金額で課金され、UberLLMの手数料は追加されず、その費用はダッシュボード → アクティビティに表示されます。お客様はモデルを選択するのであり、プロバイダーを選択するのではありません。
モデルID
カタログからモデルIDを使用してください。例:deepseek/deepseek-v4-flash、anthropic/claude-sonnet-5、またはz-ai/glm-5.3。現在呼び出し可能なモデルのリストです。
GET https://api.uberllm.dev/v1/models: 現在リクエストを送信できるチャットモデルです。そのため、このリストからモデルメニューを埋めるツール(SillyTavern、LibreChat、n8n、Clineなど)は、チャット可能なモデルのみを表示します。他の種類のモデルには?type=video(または、両方の場合はimage、music、speech、transcription、audio、chat、カンマで区切られた複数)を追加してください。または、すべてのモデル(チャット、画像、ビデオ、音楽、音声、文字起こしの順)には?type=allを追加してください。各エントリには、type(chat、image、video、music、speech、transcription)、endpoints(それをサービスするパス)、およびpricingが含まれています。- 各チャットモデルは、できることも示しています。
context_length、max_output_tokens、input_modalities(image= 画像を読み取ります)、supports_tools、supports_reasoning、supports_vision、およびsupported_parameters(対応するリクエストフィールド)。同じ情報はOpenRouterの名前(architecture.input_modalities、top_provider.context_length、top_provider.max_completion_tokens、およびトークンあたりのドルでのpricing.prompt/pricing.completion)の下にもあります。そのため、OpenRouterのリスト用に構築されたツールは、私たちのリストをそのまま読み取ることができます。 GET https://api.uberllm.dev/v1/models/<model id>: 1つのモデルで、その価格、コンテキスト(チャット)、そしてメディアモデルの場合はparameters: リクエストボディのJSON Schema(ビデオまたは画像を作成を参照)が含まれます。- どちらの回答でも、すべてのエントリには以下も含まれます。
available: そのリクエストが現在処理可能であればtrue。falseは、現在誰もサービスを提供していないことを意味するため、リクエストはno_available_providerで拒否されます。別のモデルを選択するか、後でもう一度お試しください。input_modalities: モデルが受け取るもの。画像が必要なモデル(画像からビデオ、参照からビデオ、画像編集)は、"text"の隣に"image"をリストします。ビデオを受け取るモデル(アップスケーリング)は"video"をリストします。nsfw: 成人向けまたはフィルタリングされていないコンテンツ(Lustify、「uncensored」モデルなど)用に作られたモデルの場合はtrue。あなたの製品が職場での使用に適している必要がある場合は、これらをスキップしてください。
- 公開、キー不要:
GET https://api.uberllm.dev/api/v1/public/models(価格、および同じavailable、input_modalities、nsfwフィールドを含む) - ウェブ: uberllm.dev/#models]、および各モデルのページは
uberllm.dev/models/<model id>
各リクエストの処理
- UberLLMは、モデルが存在するか、プロンプトがコンテキストウィンドウに収まるか、そしてリクエストがツールを使用する場合にそれがツールをサポートしているかを確認します。
- 残高から見積もり費用を予約し、リクエストを転送します。
- リクエストは、そのモデルで利用可能なプロバイダーに送信されます。プロバイダーは、呼び出しごとに再度選択されます。プロンプトサイズに対して十分に速く応答を開始する最も安価なプロバイダーが選ばれます(測定された最速の2x以内、または1秒未満)。長いストリーミングプロンプトの場合、最初のプロバイダーの開始が遅いと、2番目の高速プロバイダーにも送信されます。応答は1つだけ受け取り、その分を支払います。
provider.only、ignore、またはorderでプロバイダーを指定するか、sortを設定すると、この選択が置き換えられます。 仕組み: スマートルーティング。 - 応答が完了すると、UberLLMはその呼び出しに対してマーケットプレイスが報告する価格で決済し、予約の残りを解放します。
自動リトライ
呼び出しがコンテンツが届く前に失敗した場合、UberLLMが自動的に再試行します。マーケットプレイスは、各試行で販売者を再マッチングし、ルーティングされる前に失敗した呼び出しには料金を請求しません。そのため、再試行にかかるのは時間だけです。
- 再試行されるケース: 現在そのモデルの販売者がいない場合 (
no_sellers_for_model,no_healthy_sellers)、マーケットプレイスがルーティングに時間切れになった場合 (route_deadline_exceeded)、5秒以下の待機を要求する429、あらゆる5xx、接続エラー、販売者自身のプロバイダーキーまたはアカウントが失敗した場合、または時間内に最初のバイトが届かない場合。 - 再試行されないケース: モデルが存在しない、リクエストが無効、または請求や認証の問題。これらはすぐにエラーとして返されます。
- スケジュール: 最大4回の試行。試行間に0.3秒、0.9秒、そして2.7秒待機します (またはマーケットプレイスが送信した
Retry-Afterが5秒以下の場合、その時間)。誰もそのモデルを販売していない場合、数秒以内に回答が返されます。 - 最初のバイトを待機する時間: ストリームは10秒 (長いプロンプトの場合や、通常遅いモデルの場合はさらに長くなります)。
"stream": trueがない応答は、完了するまで何も届かないため85秒です。全ての85秒を使い果たした試行は、二度目は待機されません。150秒経過後は再試行は開始されません。
ストリーミングが開始された後は、何も再試行されません。ストリーム途中の失敗はストリームを終了させ、生成された分のみが請求されます。
全ての試行が失敗した場合、応答の代わりにエラーが返され、予約は完全に解放されます。一般的なエラーは以下の通りです。
| HTTP | code |
発生状況 |
|---|---|---|
| 503 | no_available_provider |
再試行後も、現在そのモデルを提供できる販売者がいませんでした。販売者がいない、全ての販売者が失敗したか開始が遅すぎる、またはあなたのproviderオプションでルーティング先が残っていません。メッセージにはモデル名が含まれます。しばらくしてから再試行するか、別のモデルを選択してください。 |
| 503 | service_unavailable |
UberLLM側の一時的な問題です。数分後に再試行してください。 |
| 404 | model_not_found |
モデルIDが利用できません。 |
完全なリストについてはエラー]を参照してください。
代替モデル
最初のモデルが提供できない場合に、試す他のモデルIDのリストを順序通りに指定して、models を送信してください。
{ "model": "deepseek/deepseek-v4-flash",
"models": ["z-ai/glm-5.3", "qwen/qwen3.6-plus"],
"messages": [{ "role": "user", "content": "hi" }] }
次のモデルは、直前のモデルを現在誰も提供できない場合 (no_available_provider)、またはあなたの provider.max_price 内で誰もそれを販売していない場合にのみ試されます。
リクエストエラー(不正なボディ、いずれかのフィールドに不明なモデルID)や支払い拒否(残高不足、キーの制限)は直ちに回答され、リストの次のモデルには渡されません。model と models を合わせて最大 5 個のモデル。応答の model フィールドとアクティビティ行は、応答したモデルの名前を示します。models は /v1/chat/completions および画像、動画、音楽、音声のリクエストで機能します。
/v1/messages と /v1/audio/transcriptions はそれを読み取りません。
モデルエイリアス
モデルIDの代わりに、必要なものを指定できます。そうすると、UberLLMがリクエストごとにモデルを選択します。
best-price:<job>: 通常のリクエスト1回あたりの価格が最も低い、利用可能なモデル。チャットモデルは、出力が3倍にカウントされた100万トークンあたりの価格で比較されます。画像モデルは画像1枚(メガピクセルあたりの価格の場合、1024×1024画像1枚)で比較されます。ビデオモデルは最短のクリップで比較されます。音楽モデルは1トラックで比較されます。音声モデルは1K文字で比較されます。転写モデルは1分で比較されます。fastest:<job>: 過去7日間のUberLLMでの成功したリクエストにおける中央値時間が最も低いモデル(チャットの場合は最初のトークンまでの時間、メディアの場合は完了ファイルまでの時間)。そのようなリクエストが少なくとも5件あるモデルのみをカウントします。十分なモデルがない場合、リクエストは503 no_timing_dataで拒否され、best-price:は引き続き機能します。
どちらも、現在利用可能なモデルの中からのみ選択します。ライブマーケットで健全な販売者が表示され、過去10分間のUberLLMからの最後のそのモデルへのリクエストで、すべての販売者がビジーまたはダウンしていると判断されなかった場合です(/v1/modelsのavailableと同じルールです)。メディアルートでは、エイリアスが選択したモデルが、結局誰もリクエストを受け付けられないと回答した場合、同じリクエストは、そのエイリアスが表す次のモデルに移行し(最大3モデル)、返信のmodelが回答したモデルの名前を示します。そのジョブに利用可能なモデルがない場合、回答は503 no_available_providerとなり、料金は請求されません。
<job>は、chat、image、image-edit、text-to-video、image-to-video、music、speech、transcriptionのいずれかです。チャットエイリアスは/v1/chat/completionsまたは/v1/messagesに送信し、メディアエイリアスはそのメディアルートに送信します。返信のmodelフィールドには、解決されたモデルの名前が示されます。GET /v1/models/aliasesは、現在解決されるすべてのエイリアスとそのモデルを一覧表示します。GET /v1/models/best-price:chatは、それが表すモデルをaliasが設定された状態で説明します。
ルーティングオプション
providerオブジェクトは/v1/chat/completionsで読み込まれます。UberLLMが適用できないオプションは400 unsupported_routing_optionで拒否され、料金は一切請求されません。そのため、設定が黙って破棄された状態でリクエストが実行されることはありません。
| オプション | 機能 |
|---|---|
only / allow |
これらのルートまたはプロバイダーのみ。uberllm (UberLLMのマーケットプレイスルート) と seller (販売者自身のオファー) は、当社のルートから選択します。openaiやapi.venice.aiのようなその他の名前はマーケットプレイス上のプロバイダーです。その場合、リクエストはuberllmルートを介して実行され、これらのプロバイダーからのオファーのみを使用します。 |
ignore / deny |
これらは使用しません。ルート名は上記と同様です。プロバイダー名 (最大32) はマーケットプレイスで拒否され、リクエストはuberllmルートを介して実行されます。 |
order |
優先順位。ルート名は当社のルートの順序を決定し、プロバイダー名はマーケットプレイスの試行順序を設定します。これにより、プロバイダーが適格になったり、不適格になったりすることはありません。 |
sort |
price (デフォルト)、latency (価格帯内で最初に観測された最速のもの)、またはuptime (同じ価格帯内で最初に観測された最も信頼性の高いもの)。throughputは当社のルートのみを順序付けします。 |
max_price |
100万トークンあたりに支払う最大料金 (米ドル): { "prompt": 1.0, "completion": 3.0 }。これより高価なルートはスキップされます。マーケットプレイスルートは、モデルの定価からお客様の上限が必要とする分だけ低い価格で販売者に提供されます。何も残っていない場合、リクエストは400 max_price_exceededで拒否され、料金は一切請求されません。promptとcompletionの両方を設定した場合、使用したトークンに対してリクエストがそれらを超える金額で請求されることはありません。 |
allow_fallbacks |
falseは上記の自動再試行をオフにします。最初のエラーがお客様に返されます。 |
data_collection |
"allow" (デフォルト) のみが受け入れられます。 |
zdr, require_parameters |
falseのみが受け入れられます。 |
:floorおよび:nitroモデルのサフィックスは受け入れられ、モデルIDから削除されます。:floorは価格でソートし、:nitroはスループットでソートします。
画像、動画、音楽、音声の場合、各リクエストはモデルに対応する利用可能なサードパーティプロバイダーに送信されます。provider.max_priceは、1単位 (画像、秒、メガピクセル、分、1K文字、またはリクエスト) あたりにかかる最大費用を数値で示します: { "max_price": 0.05 }。これは請求額の上限も設定します。その他のproviderオプションはメディアでは拒否されます。
タグ
任意のリクエストで、最大16個のテキスト値(コロンなしで最大64文字のキー、最大512の値)を持つオブジェクトであるmetadataを送信してください:
{ "model": "deepseek/deepseek-v4-flash", "messages": [...],
"metadata": { "project": "spring-ads", "run": "42" } }
タグはリクエストとともに保存され、プロバイダーには送信されません。これらは、ダッシュボード → アクティビティのリクエスト、ビデオまたは音楽ジョブのステータス、およびCSVエクスポート(metadata列)に表示されます。GET /api/v1/usage/activity?tag=project:spring-adsを使用してタグでアクティビティをフィルタリングできます(複数必要な場合はtagを繰り返します)。CSVリンクも同じフィルターを適用します。/v1/messagesでは、Anthropic独自のmetadata({"user_id": "…"})も同じ方法で保存されます。