Fouten
UberLLM retourneert foutenveloppen in OpenAI-stijl, zodat bestaande foutafhandeling ongewijzigd werkt:
{
"error": {
"code": "insufficient_credits",
"message": "Your credit balance is too low to serve this request.",
"type": "insufficient_credits"
}
}
Inferentie-interface (/v1/*)
| HTTP | code |
Betekenis | Wat te doen |
|---|---|---|---|
| 402 | insufficient_credits |
Je prepaid saldo is onvoldoende om de reservering voor het verzoek te dekken. | Waardeer op via Dashboard → Credits. |
| 402 | key_spend_cap_exceeded |
Deze sleutel heeft de geconfigureerde bestedingslimiet bereikt (dagelijks / maandelijks / levenslang). | Verhoog of verwijder de limiet van de sleutel, of gebruik een andere sleutel. |
| 400 | invalid_request |
De body van het verzoek kon niet worden geparset, of het model heeft het verzoek afgewezen (het bericht vermeldt de reden). | Corrigeer het verzoek; het wordt niet opnieuw geprobeerd. |
| 413 | request_too_large |
De body van het verzoek is groter dan 10 MB (meestal afbeeldingen verzonden als base64). | Verzend afbeeldingen als https:// links, of verkort het gesprek. Er zijn geen kosten in rekening gebracht. |
| 404 | model_not_found |
De model id is niet beschikbaar. Een uberllm/ voorvoegsel ervoor is prima: uberllm/deepseek/deepseek-v4.1-flash bereikt deepseek/deepseek-v4.1-flash. |
Controleer GET /v1/models; corrigeer de id. |
| 400 | context_length_exceeded |
De prompt is langer dan het model aankan, ongeacht de verkoper. Op /v1/chat/completions zonder een models lijst antwoordt het dichtstbijzijnde model dat het aankan (de model van het antwoord noemt het); deze fout treedt op wanneer geen enkel model dit doet, of op /v1/messages. Het bericht geeft beide groottes en noemt modellen die het aankunnen. |
Verzend minder, of kies een model dat in het bericht wordt genoemd. Er zijn geen kosten in rekening gebracht. |
| 400 | tools_not_supported |
Het verzoek verzendt tools en het model kan deze niet aanroepen, ongeacht de verkoper. Dezelfde vervangingsregel als hierboven. Het bericht noemt modellen die dit wel kunnen. |
Verzend het zonder tools, of kies een model dat in het bericht wordt genoemd. Er zijn geen kosten in rekening gebracht. |
| 400 | max_price_exceeded |
Niemand verkoopt het model binnen jouw provider.max_price op dit moment (en geen enkel model in models kon het aan). |
Verhoog max_price, probeer later, of noem andere modellen. Er zijn geen kosten in rekening gebracht. |
| 400 | unsupported_routing_option |
Een provider optie die UberLLM niet kan toepassen (het bericht noemt deze). |
Laat het weg; zie Modellen & routering. |
| 400 | invalid_metadata |
metadata is geen object van maximaal 16 tekstwaarden. |
Corrigeer de tags; getallen moeten tussen aanhalingstekens staan. |
| 400 | unknown_capability |
Een best-price: / fastest: alias verwijst naar geen taak. |
Gebruik een van chat, image, image-edit, text-to-video, image-to-video, music, speech, transcription. |
| 400 | wrong_endpoint |
Het model (of alias) voert een taak uit die deze route niet ondersteunt: een afbeelding-, video-, muziek-, spraak- of transcriptiemodel verzonden naar /v1/chat/completions of /v1/messages, een chatmodel verzonden naar een media-route, of spraak en transcriptie omgewisseld. Het bericht noemt de juiste route. Geweigerd voordat iets wordt uitgevoerd; er worden geen kosten in rekening gebracht, en Activiteit vermeldt het als geweigerd. |
Verzend het naar de route die het bericht noemt (ook in endpoints op /v1/models/{id}). |
| 503 | no_timing_data |
fastest: werd gevraagd voordat voldoende verzoeken waren getimed om modellen te vergelijken. |
Gebruik best-price: of noem een model. |
| 429 | rate_limited |
Deze sleutel heeft de per-minuut verzoeklimiet overschreden, of de marketplace bleef rate-limiten na automatische herpogingen. | Wacht af en probeer opnieuw met jitter; verhoog de rate limit van de sleutel. |
| 503 | no_available_provider |
Niemand kan dat model op dit moment bedienen, zelfs niet na automatische herpogingen (geen verkoper, elke verkoper faalt of is te traag om te starten, of jouw provider opties lieten niets over om naar te routeren), of een best-price: / fastest: alias vond geen model voor de taak dat nu beschikbaar is. Het bericht noemt het model of de taak. Dit omvat ook een verkoper wiens eigen provideraccount is mislukt: UberLLM probeert andere verkopers, en geeft de fout van die verkoper nooit door alsof jouw sleutel verkeerd was. |
Probeer het binnenkort opnieuw of kies een ander model. Er zijn geen kosten in rekening gebracht. |
| 503 | service_unavailable |
Een tijdelijk probleem aan de kant van UberLLM. | Probeer het over een paar minuten opnieuw. |
Afbeelding-, video- en muziekverzoeken voegen enkele eigen codes toe (image_required,
invalid_image_url (een link naar een bronafbeelding die niet naar een afbeelding leidt),
max_cost_too_low, idempotency_key_reused, artifact_expired); zie
Maak een video of afbeelding.
Een geweigerd of mislukt chatverzoek verschijnt in Dashboard → Activiteit met het
bericht dat je hebt ontvangen. Chat-, afbeelding-, video-, muziek-, spraak- en transcriptie-antwoorden
bevatten een X-Request-Id header met dezelfde id als de bijbehorende Activiteit-rij,
inclusief fouten.
Herpogingen vinden voor jou plaats voordat een fout wordt geretourneerd: tot 4 pogingen, alleen vóór de eerste contentbyte. Zie Modellen & routering.
Reserveringen en annuleringen
UberLLM reserveert een geschatte kostprijs voordat het proxy't en verrekent achteraf op basis van het daadwerkelijke gebruik. Als een verzoek fouten bevat, wordt geannuleerd, of als je de verbinding midden in de stream verbreekt, wordt de ongebruikte reservering vrijgegeven — je betaalt alleen voor daadwerkelijk geproduceerde content. Geannuleerde streams worden verrekend op basis van een tokenizer-schatting en gemarkeerd in Dashboard → Activiteit.
Rate limiting
Rate limits per sleutel worden afgedwongen met een vast venster. Voor inferentie-aanvragen fail closed rate-limit controles — als UberLLM uw limiet niet kan verifiëren, wordt de aanvraag geweigerd in plaats van ongemeten te worden verwerkt. Stel de aanvraaglimiet per minuut van een sleutel in (of verhoog deze) in Dashboard → API keys.
Elk geauthenticeerd /v1/* antwoord bevat het huidige venster van de sleutel:
| Header | Betekenis |
|---|---|
X-RateLimit-Limit |
Aanvragen die deze sleutel per minuut mag versturen |
X-RateLimit-Remaining |
Aanvragen over in de huidige minuut |
X-RateLimit-Reset |
Wanneer het venster opnieuw begint (Unix seconds) |
Retry-After |
Bij een 429 van deze limiet: seconden wachten voordat u het opnieuw probeert |
Vertraag wanneer X-RateLimit-Remaining 0 nadert. De headers worden weggelaten wanneer
het venster niet kan worden gelezen.
Seller API (/api/v1/seller/*)
Deze gebruiken standaard REST-codes:
| HTTP | code |
Betekenis |
|---|---|---|
| 400 | invalid_request |
Validatie mislukt (bijv. niet-https endpoint_url, ontbrekende prijzen voor absolute, multiplier buiten 0 < m ≤ 1.5). Het bericht benoemt het veld. |
| 400 | model_not_in_catalog |
model_id is geen bekend catalogusmodel. |
| 401 | unauthorized |
Ontbrekende of ongeldige dashboard JWT. |
| 404 | seller_not_found |
Geen verkoper voor uw organisatie — bel eerst POST /api/v1/seller/register. |
| 404 | offer_not_found |
Geen aanbod met die id onder uw verkoper. |
| 409 | invalid_status_transition |
Illegale statuswijziging — bijv. het hervatten van een delisted aanbod (verwijderd is definitief). |
Opmerking: een mislukte validatiecontrole is geen foutreactie. Het aanbod wordt succesvol aangemaakt/bijgewerkt en geretourneerd met status: "paused" en een last_probe_error die uitlegt waarom — repareer het endpoint en PATCH het terug naar active om opnieuw te controleren. Zie Sellers.
Authenticatiefouten
| HTTP | Betekenis |
|---|---|
| 401 | Ontbrekende/ongeldige Authorization header. Inference keys zijn Bearer ull_...; dashboard endpoints gebruiken je account JWT. |
| 403 | De sleutel is geldig, maar mist de vereiste scope (bijv. een inference-only key die een dashboard endpoint aanroept). |