Envelope di errore
La maggior parte delle risposte di errore usa questa forma JSON compatibile con OpenAI:type è una categoria ampia, code è un identificatore specifico. Alcuni
fallimenti fast-path (in particolare i 429 a livello di workspace) restituiscono
solo uno status code HTTP con gli header rilevanti e nessun corpo JSON.
Codici di stato HTTP
| Status | Significato | Causa tipica |
|---|---|---|
400 | Bad request | Parametri non validi, campi obbligatori mancanti, violazione dello schema |
401 | Unauthorized | Chiave API mancante o non valida |
403 | Forbidden | Quota insufficiente, oppure la chiave non può chiamare questo modello |
404 | Not found | Modello o endpoint inesistente |
429 | Too many requests | Limite di velocità raggiunto — vedi Limiti di velocità. La risposta include sempre un header Retry-After. |
500 | Internal error | Bug lato OrcaRouter |
502 | Upstream error | Tutti i provider upstream hanno fallito (inclusa qualunque catena di fallback) |
503 | Service unavailable | Il modello richiesto è temporaneamente non disponibile upstream |
Tipi di errore che puoi vedere in error.type
error.type | Da dove proviene |
|---|---|
orcarouter_api_error | Fallimenti lato gateway (auth, quota, rate-limit, interni) |
upstream_error | Il provider upstream ha restituito un errore o è andato in timeout |
openai_error | Errore upstream OpenAI-compat preservato testualmente |
claude_error | Errore upstream Anthropic preservato testualmente |
gemini_error | Errore upstream Gemini preservato testualmente |
Codici di errore che puoi vedere in error.code
Questi sono codici emessi dal gateway per fallimenti che originano in
OrcaRouter (non dall’upstream):
error.code | HTTP | Significato |
|---|---|---|
insufficient_user_quota | 403 | Credito dell’account esaurito. Ricarica. |
model_not_found | 503 | Questo modello non è disponibile per il tuo account. |
model_price_error | 400 | Il prezzo per questo modello non è configurato. Contatta il supporto. |
api_not_implemented | 400 | Endpoint od operazione non supportata per il modello scelto. |
bad_request_body | 400 | Il corpo della richiesta non è stato analizzato. |
prompt_blocked | 400 | La policy di sicurezza del provider ha bloccato il prompt prima della generazione. |
sensitive_words_detected | 400 | Il filtro di contenuti sensibili ha rifiutato il prompt. |
error.code
(specifico) e fai fallback su error.type (categoria ampia).
Errori in streaming
Gli errori durante una risposta in streaming non possono usare status code HTTP (lo status è stato inviato all’apertura dello stream). Il formato dipende dall’endpoint:/v1/chat/completions e /v1/responses (compatibile OpenAI)
L’errore arriva come chunk data: {...} in-band:
data: come JSON; se ha un campo error, tratta
lo stream come fallito.
/v1/messages (compatibile Anthropic)
Anthropic usa eventi SSE con nome. Un fallimento dello stream arriva come:
event: message_stop (o viene troncato) dopo
l’evento di errore.
Errori di fallback
Quandoextra_body.models è impostato e tutti i modelli nella catena
falliscono, ricevi un 502 con dettagli sull’ultimo errore upstream.
Gli header di risposta X-Orca-Fallback-Level e X-Orca-Fallback-Model
indicano quale fallback era in tentativo quando la catena si è esaurita.
Vedi Header di risposta.