Errori

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

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), questi 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" }
  }
}

type segue lo status

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

HTTP type
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 Il data_class richiesto 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 console. Crea una API key e invia quella invece.
403 insufficient_scope La chiave è valida ma non ha lo 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 la policy consenta. Questo viene verificato prima di qualsiasi altra cosa sulla richiesta.
403 data_class_not_allowed Il data_class della richiesta non è tra quelli consentiti 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 Niente soddisfa contemporaneamente la policy e la residenza, e nessuna delle due viene allentata silenziosamente.
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 della tabella dei limiti di frequenza. Il messaggio indica l'orario di reset della finestra.
500 internal_error Un errore imprevisto da parte nostra.
501 not_implemented L'endpoint non è offerto intenzionalmente, oppure la funzionalità richiesta non esiste in questa distribuzione.
501 retention_not_implemented La policy consente una retention 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 silenziosamente l'una o l'altra. Non è transitorio: riprovare senza modificare la richiesta, la policy o la residenza fallisce allo stesso modo. L'errore porta 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, quindi un client che segue il formato vede un fallimento invece di un successo troncato.

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

data: [DONE]