Fouten
Elke foutcode die deze API kan teruggeven, de HTTP-status die daarbij hoort, en wat u eraan kunt doen. De envelope heeft de vorm van OpenAI met één toegevoegde namespaced uitbreiding.
De envelope
error.message is geschreven voor iemand die een log leest, error.type benoemt de klasse van de fout, en error.code is de stabiele identifier om op te vertakken — berichttekst is geen contract. Waar de API gestructureerde details heeft (welk beleid, welk endpoint, welk model), komen die in error.llmeu en vervangen ze nooit de drie standaardvelden.
{
"error": {
"message": "No endpoint satisfies residency eu-owned. Residency is never relaxed silently.",
"type": "conflict_error",
"code": "no_endpoint_for_policy",
"llmeu": { "requested": "llmeu-auto" }
}
}
type volgt status
De onderstaande mapping is degene die de API toepast, weergegeven vanuit dezelfde tabel die zijn responses opbouwt.
| HTTP | type |
|---|---|
| 400 | invalid_request_error |
| 401 | authentication_error |
| 402 | insufficient_quota |
| 403 | permission_error |
| 404 | not_found_error |
| 409 | conflict_error |
| 413 | invalid_request_error |
| 422 | invalid_request_error |
| 429 | rate_limit_error |
| 500 | api_error |
| 501 | api_error |
| 502 | api_error |
| 503 | api_error |
Codes
Elke code die een client kan bereiken. Een test doorloopt de API-broncode en faalt wanneer deze tabel en de code het in beide richtingen oneens zijn, dus een code kan hier niet worden verzonnen of daar worden toegevoegd zonder gedocumenteerd te zijn.
| HTTP | code | Wat het betekent, en wat u moet doen |
|---|---|---|
| 400 | invalid_request | De requestbody heeft de validatie niet doorstaan. |
| 400 | invalid_json | De body was geen geldige JSON. |
| 400 | invalid_llmeu | Het llmeu-object was geen object, of bevatte een onbekend veld. |
| 400 | invalid_residency | De gevraagde residentie is niet een van de vier hostingklassen. |
| 400 | invalid_data_class | De gevraagde data_class is niet een van de vier klassen. |
| 400 | invalid_retention | De gevraagde retentie is niet zero, 24h, 7d of 30d. |
| 400 | invalid_max_tokens | max_tokens was geen positief geheel getal. |
| 400 | invalid_stream | stream was geen boolean. |
| 400 | invalid_stop | stop was geen string en ook geen array van strings. |
| 400 | invalid_role | Een bericht had een rol buiten system, user, assistant en tool. |
| 400 | invalid_tools | tools of tool_choice was misvormd. |
| 400 | missing_model | Het veld model is verplicht. |
| 400 | missing_messages | messages is verplicht en mag niet leeg zijn. |
| 400 | missing_input | input is verplicht voor embeddings. |
| 400 | missing_name | name is verplicht. |
| 401 | invalid_api_key | De sleutel ontbreekt, is onbekend, ingetrokken of verlopen. |
| 402 | budget_exceeded | Het dagbudget van de organisatie is verbruikt. Verhoog max_usd_per_day of wacht tot het venster opnieuw begint. |
| 403 | api_key_required | Het verzoek gebruikte een consolesessie. Maak een API-sleutel aan en stuur die in plaats daarvan mee. |
| 403 | insufficient_scope | De sleutel is geldig, maar mist de scope die dit endpoint vereist. |
| 403 | no_organization | De referentie is niet aan een organisatie gekoppeld. |
| 403 | model_denied | Het beleid van de organisatie weigert dit model of de aanbieder ervan. |
| 403 | policy_violation | Het verzoek schendt een regel van het organisatiebeleid. |
| 403 | retention_exceeds_policy | De gevraagde retentie is langer dan het beleid toestaat. Dit wordt gecontroleerd vóór al het andere aan het verzoek. |
| 403 | data_class_not_allowed | De data_class van het verzoek is niet een die het beleid toestaat. |
| 404 | model_not_found | Geen dergelijk model voor deze organisatie. |
| 404 | hosted_unavailable | Het model staat in de catalogus, maar wordt niet gehost op LLM EU en kan dus niet worden aangeroepen. |
| 404 | not_found | De route bestaat, maar het object niet. |
| 404 | unknown_route | Op dit pad is geen route gekoppeld. Elk OpenAI-endpoint dat niet onder Endpoints staat, antwoordt hiermee. |
| 404 | policy_not_found | De policy_id in llmeu hoort niet bij deze organisatie. |
| 409 | no_endpoint_for_policy | Niets voldoet tegelijk aan het beleid en de residentie, en geen van beide wordt stilzwijgend versoepeld. |
| 409 | not_a_text_model | Het genoemde model kan geen tekst genereren: het is een spraakherkennings-, embedding- of rerankermodel. |
| 409 | conflict | Het verzoek conflicteert met de huidige staat van het object. |
| 413 | request_too_large | De body overschreed de groottelimiet van het endpoint. |
| 429 | rate_limit_exceeded | Een limiet uit de limiettabel is bereikt. Het bericht noemt het tijdstip waarop het venster opnieuw begint. |
| 500 | internal_error | Een onverwachte fout aan onze kant. |
| 501 | not_implemented | Het endpoint wordt bewust niet aangeboden, of de gevraagde mogelijkheid bestaat niet op deze deployment. |
| 501 | retention_not_implemented | Het beleid staat een retentie anders dan nul toe en alleen nul is geïmplementeerd, dus het verzoek wordt geweigerd in plaats van opgeslagen. |
| 501 | unsupported_n | n groter dan 1 wordt niet ondersteund. |
| 502 | upstream_error | Na failover kon geen endpoint het verzoek bedienen. De trace legt elke poging vast. |
| 502 | stream_failed | De stream is mislukt nadat deze al was begonnen. |
no_endpoint_for_policy is het product dat werkt
Een 409 met deze code betekent dat het beleid en het verzoek samen geen enkel endpoint toelaten, en dat de router weigerde een van beide stilzwijgend te versoepelen. Het is niet tijdelijk: opnieuw proberen zonder het verzoek, het beleid of de residentie te wijzigen, mislukt op dezelfde manier. De fout bevat de gevraagde residentie, en de trace registreert waarom elk endpoint is afgewezen.
Fouten in een stream
Een streamingverzoek dat mislukt nadat de headers zijn verzonden, schrijft de fout als een laatste SSE-frame en dan de terminator, zodat een client die het formaat volgt een fout ziet in plaats van een afgekapt succes.
data: {"error":{"message":"No endpoint could start the stream.","type":"api_error","code":"upstream_error"}}
data: [DONE]