エラー
UberLLMはOpenAIスタイルのエラー形式を返すため、既存のエラーハンドリングがそのまま機能します。
{
"error": {
"code": "insufficient_credits",
"message": "Your credit balance is too low to serve this request.",
"type": "insufficient_credits"
}
}
Inference surface (/v1/*)
| HTTP | code |
意味 | 対処法 |
|---|---|---|---|
| 402 | insufficient_credits |
あなたのプリペイド残高では、リクエストの予約をカバーできません。 | Dashboard → Creditsでチャージしてください。 |
| 402 | key_spend_cap_exceeded |
このキーは、設定された利用限度額(日次 / 月次 / ライフタイム)に達しました。 | キーの上限を引き上げるか削除するか、別のキーを使用してください。 |
| 400 | invalid_request |
リクエストボディをパースできませんでした。または、モデルがリクエストを拒否しました(メッセージに理由が記載されています)。 | リクエストを修正してください。再試行はされません。 |
| 413 | request_too_large |
リクエストボディが10 MBを超えています(多くの場合、base64として送信された画像)。 | 画像をhttps://リンクとして送信するか、会話を短くしてください。料金は発生していません。 |
| 404 | model_not_found |
model idが利用できません。先頭にuberllm/プレフィックスを付けても問題ありません: uberllm/deepseek/deepseek-v4.1-flashはdeepseek/deepseek-v4.1-flashに到達します。 |
GET /v1/modelsを確認し、idを修正してください。 |
| 400 | context_length_exceeded |
プロンプトが、販売元を問わずモデルが受け入れる長さよりも長いです。/v1/chat/completionsでmodelsリストがない場合、代わりに最も近いモデルが応答します(応答のmodelにそのモデル名が記載されます)。このエラーは、どのモデルも受け入れない場合、または/v1/messagesで発生します。メッセージには、両方のサイズと、それを受け入れるモデル名が記載されています。 |
送信する量を減らすか、メッセージに記載されているモデルを選択してください。料金は発生していません。 |
| 400 | tools_not_supported |
リクエストがtoolsを送信していますが、販売元を問わずモデルはそれらを呼び出すことができません。上記と同じ代替ルールが適用されます。メッセージには、呼び出し可能なモデル名が記載されています。 |
ツールなしで送信するか、メッセージに記載されているモデルを選択してください。料金は発生していません。 |
| 400 | max_price_exceeded |
現在、あなたのprovider.max_price内でこのモデルを販売している人はいません(また、modelsのどのモデルもそれを受け入れることができませんでした)。 |
max_priceを上げるか、後で試すか、他のモデル名を指定してください。料金は発生していません。 |
| 400 | unsupported_routing_option |
UberLLMが適用できないproviderオプションです(メッセージにその名前が記載されています)。 |
それを省略してください。Models & routingを参照。 |
| 400 | invalid_metadata |
metadataは、最大16個のテキスト値のオブジェクトではありません。 |
タグを修正してください。数値は引用符で囲みます。 |
| 400 | unknown_capability |
best-price: / fastest:エイリアスはジョブ名を指定していません。 |
chat, image, image-edit, text-to-video, image-to-video, music, speech, transcriptionのいずれかを使用してください。 |
| 400 | wrong_endpoint |
モデル(またはエイリアス)が、このルートでは実行できないジョブを実行しています。例えば、画像、動画、音楽、音声、または文字起こしモデルが/v1/chat/completionsまたは/v1/messagesに送信された場合、チャットモデルがメディアルートに送信された場合、または音声と文字起こしが入れ替わっている場合です。メッセージには正しいルートが記載されています。何も実行される前に拒否されます。料金は発生せず、Activityには拒否されたものとして表示されます。 |
メッセージに記載されているルートに送信してください(/v1/models/{id}のendpointsにも記載されています)。 |
| 503 | no_timing_data |
モデルを比較するために十分なリクエストが計測される前にfastest:が要求されました。 |
best-price:を使用するか、モデル名を指定してください。 |
| 429 | rate_limited |
このキーは1分あたりのリクエスト制限を超過しました。または、自動リトライ後もマーケットプレイスがレート制限を継続しました。 | バックオフしてjitterを加えて再試行してください。キーのレート制限を引き上げてください。 |
| 503 | no_available_provider |
自動リトライ後も、現在そのモデルを提供できる人はいません(販売者がいない、すべての販売者が失敗しているか起動が遅すぎる、またはあなたのproviderオプションでルーティング先が残っていない)、またはbest-price: / fastest:エイリアスが現在利用可能なジョブのモデルを見つけられませんでした。メッセージにはモデル名またはジョブ名が記載されています。これは、販売者自身のプロバイダーアカウントが失敗した場合もカバーします。UberLLMは他の販売者を試行し、あなたのキーが間違っているかのようにその販売者のエラーを渡すことはありません。 |
しばらくしてから再試行するか、別のモデルを選択してください。料金は発生していません。 |
| 503 | service_unavailable |
UberLLM側の一時的な問題です。 | 数分後に再試行してください。 |
画像、動画、音楽のリクエストには、独自のコードがいくつか追加されます(image_required、invalid_image_url(画像に繋がらないソース画像リンク)、max_cost_too_low、idempotency_key_reused、artifact_expired)。Make a video or imageを参照してください。
拒否または失敗したチャットリクエストは、送信されたメッセージとともにDashboard → Activityに表示されます。チャット、画像、動画、音楽、音声、文字起こしの応答には、エラーを含め、Activity行と同じidを持つX-Request-Idヘッダーが含まれています。
エラーが返される前に、あなたのためにリトライが行われます。最大4回試行され、最初のコンテンツバイトが送信される前のみです。Models & routingを参照してください。
Reservations and aborts
UberLLMはプロキシ処理の前に推定コストを予約し、その後実際の使用量に基づいて精算します。リクエストがエラーになったり、中断されたり、ストリーム中に接続が切断された場合、未使用の予約は解放されます。実際に生成されたコンテンツに対してのみ課金されます。中断されたストリームは、tokenizerの推定値から調整され、Dashboard → Activityでフラグが立てられます。
レート制限
キーごとのレート制限は、固定ウィンドウで適用されます。推論サービスでは、レート制限のチェックはフェイルクローズされます。つまり、UberLLMがお客様の制限を確認できない場合、リクエストは無制限に処理されるのではなく、拒否されます。キーごとの1分あたりのリクエスト制限は、ダッシュボード → API keysで設定(または引き上げ)してください。
認証されたすべての /v1/* 応答には、キーの現在のウィンドウ情報が含まれています。
| ヘッダー | 意味 |
|---|---|
X-RateLimit-Limit |
このキーが1分間に送信できるリクエスト数 |
X-RateLimit-Remaining |
現在の1分間に残っているリクエスト数 |
X-RateLimit-Reset |
ウィンドウがリセットされるタイミング(Unix秒) |
Retry-After |
この制限による 429 の場合:再試行するまでに待つ秒数 |
X-RateLimit-Remaining が 0 に近づいたら、速度を落としてください。ウィンドウを読み取れない場合、ヘッダーは省略されます。
出品者API (/api/v1/seller/*)
これらは標準的なRESTコードを使用します。
| HTTP | code |
意味 |
|---|---|---|
| 400 | invalid_request |
検証に失敗しました(例:非HTTPSのendpoint_url、absoluteの価格が不足、multiplierが0 < m ≤ 1.5の範囲外)。メッセージにはフィールド名が示されます。 |
| 400 | model_not_in_catalog |
model_idは既知のカタログモデルではありません。 |
| 401 | unauthorized |
ダッシュボードJWTが不足しているか無効です。 |
| 404 | seller_not_found |
あなたの組織に出品者がいません — まずPOST /api/v1/seller/registerを呼び出してください。 |
| 404 | offer_not_found |
あなたの出品者の下にそのIDのオファーはありません。 |
| 409 | invalid_status_transition |
不正なステータス変更 — 例:delistedのオファーを再開する(出品停止は最終状態です)。 |
注:検証プローブの失敗はエラー応答ではありません。オファーは正常に作成/更新され、status: "paused"と、その理由を説明するlast_probe_errorとともに返されます — エンドポイントを修正し、再プローブするためにactiveにPATCHしてください。Sellers]を参照してください。
認証エラー
| HTTP | 意味 |
|---|---|
| 401 | Authorizationヘッダーが不足しているか無効です。推論キーはBearer ull_...です。ダッシュボードエンドポイントはアカウントのJWTを使用します。 |
| 403 | キーは有効ですが、必要なスコープがありません (例: 推論専用キーがダッシュボードエンドポイントを呼び出す場合)。 |