Errori e limiti di frequenza
Cosa significa ogni codice di stato e cosa fare al riguardo.
Il formato degli errori
Gli errori tornano come JSON nel formato di errore di OpenAI. Il messaggio indica cosa è successo, code è un identificatore stabile leggibile dalla macchina, e a ogni messaggio viene aggiunto un id di richiesta:
{
"error": {
"message": "Model \"gpt-5.5-typo\" is not offered here. Check the model name for typos, or switch to a model from our supported list. (request id: 20260705...)",
"type": "new_api_error",
"code": "model_not_found"
}
}Includi sempre l'id di richiesta quando contatti il supporto o apri un ticket su Discord. Ci consente di trovare la tua richiesta esatta nei log.
Codici di stato a colpo d'occhio
I codici di stato che incontrerai davvero:
| Codice | Significato | Cosa fare |
|---|---|---|
400 | Richiesta non valida: valori di parametro errati (per esempio max_tokens sotto il minimo del modello) o un prompt bloccato dalla moderazione dei contenuti. | Correggi la richiesta. Ritentarla invariata fallirà di nuovo. |
401 | Problema con la chiave: chiave API mancante, non valida, scaduta o disabilitata. | Controlla l'header Authorization e la tua chiave nella pagina Token. |
402 | Il limite di spesa proprio di questa chiave è esaurito. | Aumenta il limite della chiave o crea una nuova chiave. |
403 | Accesso negato: saldo dell'account vuoto, modello non consentito per questa chiave, o il tuo IP non è nella lista consentiti della chiave. | Ricarica, o controlla le restrizioni di modello e IP della chiave. |
413 | Richiesta troppo grande per il limite della prova gratuita di questo modello. | Accorcia il prompt o passa al modello a pagamento. |
429 | È scattato un limite di frequenza (vedi i tipi qui sotto). | Attendi i secondi di Retry-After, poi ritenta o cambia modello. |
500 | Qualcosa è andato storto da parte nostra o presso il fornitore upstream. | Ritenta dopo una breve attesa; i 500 persistenti meritano una segnalazione. |
503 | Tutti i fornitori del modello sono occupati, oppure il nome del modello non esiste. | Leggi il messaggio: l'occupazione si risolve in pochi minuti, un errore di battitura no. |
503: occupato o modello sconosciuto
Due situazioni molto diverse condividono lo stato 503. La prima è una congestione temporanea:
HTTP/1.1 503 Service Unavailable
{
"error": {
"message": "All providers for model \"kimi-k2.6:free\" are busy right now (they hit their rate limit). This is not a spelling error. Please try again in a little while, or switch to another model. (request id: 20260705...)",
"type": "new_api_error",
"code": "get_channel_failed"
}
}Il codice get_channel_failed (tutti i fornitori occupati) significa che ogni fornitore gratuito di quel modello è momentaneamente limitato in frequenza. Si ripristina da solo in pochi minuti: ritenta o cambia modello. Il codice model_not_found (non offerto qui) significa che il nome del modello stesso non si risolve, e ritentare non aiuterà mai. Controlla gli errori di battitura o cerca il nome attuale nel catalogo.
Tratta il 503 con get_channel_failed come ritentativo o fallback e il 503 con model_not_found come un errore irreversibile nel tuo client.
I tipi di limiti di frequenza
Un 429 può provenire da diversi livelli:
- Il nostro limite per i modelli gratuiti: 1 richiesta al minuto per modello gratuito per utente. Un limite di equità affinché i pool condivisi sopravvivano alle ore di punta.
- Limiti del fornitore upstream: il fornitore dietro un modello gratuito ha raggiunto il proprio limite ("temporarily rate-limited upstream", cioè temporaneamente limitato a monte).
- Budget giornalieri di token su alcuni pool gratuiti; si azzerano a mezzanotte UTC.
- Limiti di token al minuto che scattano su prompt molto grandi.
- Un limite di concorrenza per utente quando troppe richieste vengono eseguite in parallelo.
I modelli a pagamento non hanno limiti di frequenza imposti da UnoRouter.
Il limite dei modelli gratuiti nel dettaglio
Quando scatta il nostro limite di 1 al minuto ottieni header standard di limite di frequenza, così i client possono rallentare con precisione:
HTTP/1.1 429 Too Many Requests
Retry-After: 38
X-RateLimit-Limit: 1
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1783198478Retry-After è dinamico: i secondi effettivamente rimasti nella tua finestra, non un 60 fisso. Il messaggio di errore indica anche il gemello a pagamento del modello, che non ha limiti.
Limiti di dimensione della prova
Alcuni modelli normalmente a pagamento sono offerti gratuitamente con un limite alla dimensione della richiesta. I prompt troppo grandi ricevono 413 con un messaggio come: Request body too large for gpt-4.1 model. Max size: 8000 tokens.
Il limite si applica solo alla rotta della prova gratuita; il modello a pagamento accetta prompt di lunghezza piena.
Indicazioni sui ritentativi
Rispetta Retry-After sui 429. Ritenta il 503 get_channel_failed dopo una breve attesa, o ripiega su un altro modello. Non ritentare gli errori di classe 400, sono deterministici.
Le richieste fallite e rifiutate non vengono addebitate: qualsiasi blocco preventivo sul tuo saldo viene rimborsato quando la richiesta va in errore.