Errori

Ogni codice di errore con cui questa API può rispondere, lo stato HTTP che lo trasporta e cosa fare al riguardo. L'involucro è modellato su OpenAI con un'aggiunta namespaced.

L'involucro

error.message è scritto per una persona che legge un log, error.type indica la classe di errore, e error.code è l'identificatore stabile su cui diramare — il testo del messaggio non è un contratto. Dove l'API ha dettagli strutturati (quale policy, quale endpoint, quale modello) arrivano in error.llmeu e non sostituiscono mai i tre campi standard.

{
  "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" }
  }
}

Il tipo segue lo stato

La mappatura seguente è quella che l'API applica, generata dalla stessa tabella che costruisce le sue risposte.

HTTP tipo
400invalid_request_error
401authentication_error
402insufficient_quota
403permission_error
404not_found_error
409conflict_error
413invalid_request_error
422invalid_request_error
429rate_limit_error
500api_error
501api_error
502api_error
503api_error

Codici

Ogni codice che può raggiungere un client. Un test percorre il codice sorgente dell'API e fallisce quando questa tabella e il codice non concordano in nessuna delle due direzioni, quindi un codice non può essere inventato qui o aggiunto lì senza essere documentato.

HTTP code Cosa significa e cosa fare
400 invalid_request Il corpo della richiesta non ha superato la validazione.
400 invalid_json Il corpo non era JSON valido.
400 invalid_llmeu L'oggetto llmeu non era un oggetto o conteneva un campo sconosciuto.
400 invalid_residency La residenza richiesta non è una delle quattro classi di hosting.
400 invalid_data_class La data_class richiesta non è una delle quattro classi.
400 invalid_retention La retention richiesta non è zero, 24h, 7d o 30d.
400 invalid_max_tokens max_tokens non era un intero positivo.
400 invalid_stream stream non era un booleano.
400 invalid_stop stop non era né una stringa né un array di stringhe.
400 invalid_role Un messaggio conteneva un ruolo al di fuori di system, user, assistant e tool.
400 invalid_tools tools o tool_choice erano malformati.
400 missing_model Il campo model è obbligatorio.
400 missing_messages messages è obbligatorio e non deve essere vuoto.
400 missing_input input è obbligatorio per gli embeddings.
400 missing_name name è obbligatorio.
401 invalid_api_key La chiave è mancante, sconosciuta, revocata o scaduta.
402 budget_exceeded Il budget giornaliero dell'organizzazione è esaurito. Aumenta max_usd_per_day o attendi il rinnovo della finestra.
403 api_key_required La richiesta ha usato una sessione della console. Crea una chiave API e invia quella invece.
403 insufficient_scope La chiave è valida ma manca dello scope richiesto da questo endpoint.
403 no_organization La credenziale non è associata a un'organizzazione.
403 model_denied La policy dell'organizzazione nega questo modello o il suo provider.
403 policy_violation La richiesta viola una regola della policy dell'organizzazione.
403 retention_exceeds_policy La retention richiesta è più lunga di quanto consenta la policy. Questo viene verificato prima di qualsiasi altra cosa sulla richiesta.
403 data_class_not_allowed La data_class della richiesta non è una di quelle consentite dalla policy.
404 model_not_found Nessun modello di questo tipo per questa organizzazione.
404 hosted_unavailable Il modello è nel catalogo ma non è ospitato su LLM EU, quindi non può essere chiamato.
404 not_found La route esiste ma l'oggetto no.
404 unknown_route Nessuna route è montata su questo percorso. Ogni endpoint OpenAI non elencato in Endpoints risponde così.
404 policy_not_found Il policy_id in llmeu non appartiene a questa organizzazione.
409 no_endpoint_for_policy Nulla soddisfa insieme la policy e la residenza, e nessuna delle due viene allentata in modo silenzioso.
409 not_a_text_model Il modello indicato non può generare testo: è un modello di riconoscimento vocale, embedding o reranker.
409 conflict La richiesta è in conflitto con lo stato attuale dell'oggetto.
413 request_too_large Il corpo ha superato il limite di dimensione dell'endpoint.
429 rate_limit_exceeded È stato raggiunto un limite dalla tabella dei limiti di frequenza. Il messaggio indica l'ora di reimpostazione della finestra.
500 internal_error Un errore imprevisto da parte nostra.
501 not_implemented L'endpoint non viene offerto intenzionalmente, oppure la funzionalità richiesta non esiste su questa distribuzione.
501 retention_not_implemented La policy consente una conservazione diversa da zero e solo zero è implementata, quindi la richiesta viene rifiutata invece di essere memorizzata.
501 unsupported_n n maggiore di 1 non è supportato.
502 upstream_error Nessun endpoint ha potuto servire la richiesta dopo il failover. La traccia registra ogni tentativo.
502 stream_failed Lo stream è fallito dopo che era già iniziato.

no_endpoint_for_policy è il prodotto che funziona

Un 409 con questo codice significa che la policy e la richiesta insieme non ammettono alcun endpoint, e il router ha rifiutato di allentare l'una o l'altra in modo silenzioso. Non è transitorio: riprovare senza modificare la richiesta, la policy o la residenza fallisce allo stesso modo. L'errore riporta la residenza richiesta e la traccia registra perché ogni endpoint è stato rifiutato.

Errori all'interno di uno stream

Una richiesta in streaming che fallisce dopo l'invio degli header scrive l'errore come frame SSE finale e poi il terminatore, così un client che segue il formato vede un errore invece di un successo troncato.

data: {"error":{"message":"No endpoint could start the stream.","type":"api_error","code":"upstream_error"}}

data: [DONE]