Home → Assistenza

Leggere correttamente un 429: retry-after e gli header dei limiti

Un 429 normalmente contiene un header Retry-After, in secondi, e spesso una serie di header che indicano quale limite è esaurito e quando si azzera. Aspettare quel tempo lo sblocca; ritentare subito lo prolunga.

Cosa vedi

Perché succede

I provider misurano più dimensioni contemporaneamente: richieste al minuto, token al minuto e a volte richieste simultanee. Raggiungere il limite di token restando ben sotto quello di richieste è il motivo per cui falliscono «solo alcune richieste».

I limiti di token contano ciò che invii più ciò che riservi. Poche richieste con un max_tokens elevato possono esaurire il budget di token al minuto mentre il numero di richieste sembra irrisorio.

Contano anche i retry immediati. Un ciclo di retry serrato trasforma una pausa di un secondo in un blocco prolungato, ed è di solito così che un 429 passeggero diventa permanente.

Verifica se la causa è questa

Quando ricevi un 429, stampa gli header invece del corpo:

curl -s -D- -o /dev/null -X POST 'YOUR_BASE_URL/chat/completions' \
  -H 'Authorization: Bearer YOUR_KEY' -H 'Content-Type: application/json' \
  -d '{"model":"MODEL","messages":[{"role":"user","content":"hi"}]}' \
  | grep -i 'retry-after\|ratelimit\|^HTTP'

Rispetta Retry-After quando è presente. Quando manca, un backoff esponenziale con jitter che parte da circa un secondo è il valore predefinito sicuro.

Come risolvere

  1. Rispetta Retry-After prima del tuo backoffSe l'header dice 12 secondi, aspettare 12 secondi funziona. Il tuo backoff di un secondo no, e in più ti costa anche il tentativo successivo.
  2. Aggiungi jitterSenza uno scarto casuale, tutti i client della tua flotta ritentano all'unisono e ricreano il picco da cui ti stai ritirando.
  3. Verifica se in realtà è un problema di saldoAlcuni gateway restituiscono 429 per un account vuoto. Quello non si sblocca mai ritentando: leggi il corpo dell'errore prima di dare per scontato che sia un limite di frequenza.
Su APICLAN un 429 per saldo vuoto e un 429 per congestione dell'upstream dicono cose diverse nel corpo. Il primo richiede una ricarica e non riuscirà mai ritentando; il secondo di solito si sblocca in pochi secondi.

Articoli correlati

Unexpected token '<' quando chiami un'API compatibile con OpenAI401 invalid API key: quando la chiave sembra giusta ma continua a fallire

Ultima verifica: 2026-10-01. Scritto a partire da problemi diagnosticati su un gateway compatibile con OpenAI in produzione, non raccolto da altri siti.