Usiamo i cookie. Cookie e memoria del browser ti mantengono connesso e ricordano le tue preferenze. Con il tuo consenso misuriamo anche come viene usato il sito. Puoi in qualsiasi momento. Consulta la nostra cookie policy.

Limiti di frequenza

Account

Limiti di frequenza

Richieste al minuto per piano, limiti RPM per chiave e limiti giornalieri in USD, e come gestire correttamente l'errore 429 con i retry.

I limiti di frequenza proteggono il tuo saldo e il servizio. I limiti si misurano in richieste al minuto (RPM) per chiave API, e le chiavi possono avere anche un limite di spesa giornaliero in USD.

Limiti per piano

PianoRichieste al minuto
Free5
Pro100
Team3,000
Enterprise3,000+

Passa a un piano superiore nella pagina dei prezzi per aumentare il tuo limite.

Limiti per chiave

Quando crei o modifichi una chiave in Chiavi API puoi impostare:

LimiteEffetto
Limite RPMLimita le richieste al minuto per questa chiave. Il limite effettivo è il minore tra il limite della chiave e quello del tuo piano.
Limite giornaliero in USDQuando la chiave ha speso questo importo nella giornata (UTC), le richieste successive restituiscono 429 daily_limit_reached fino al giorno dopo.
Lista di modelli consentitiCon questa chiave si possono usare solo gli id dei modelli elencati; gli altri restituiscono 403 model_not_allowed.

La finestra RPM è di un minuto ed è calcolata per chiave, quindi chiavi separate per app separate non condividono lo stesso limite, ma ogni chiave resta comunque vincolata al limite del tuo piano.

Header dei limiti

Ogni risposta di generazione (riuscita o con errore) indica a che punto sei, così puoi rallentare prima di raggiungere il limite:

HeaderSignificato
X-RateLimit-LimitRichieste consentite nella finestra di un minuto corrente per questa chiave.
X-RateLimit-RemainingRichieste rimanenti nella finestra.
X-RateLimit-ResetSecondi al ripristino della finestra.

Anche i client browser possono leggerli (sono in Access-Control-Expose-Headers).

Picchi e concorrenza

Le richieste oltre il limite non vengono rifiutate subito: attendono in coda e partono appena la finestra di un minuto si libera. Per account girano fino a 10 richieste contemporaneamente; le altre aspettano che una finisca. Prima di partire, il costo massimo stimato della richiesta viene riservato dal saldo insieme a quello delle richieste in corso, quindi le richieste parallele non spendono mai più di quanto hai. Una richiesta che non riesce a partire entro 60 secondi restituisce 429 (rate_limited o concurrency_limit) con Retry-After; se il suo costo non rientra più nel saldo, restituisce 402 insufficient_balance.

Ritentativi sicuri con Idempotency-Key

Dopo un errore di rete potresti non sapere se la richiesta è arrivata. Invia un header Idempotency-Key (una stringa univoca fino a 120 caratteri, per esempio un UUID) e riprova con la stessa chiave: se la prima richiesta è già stata inviata al modello, il nuovo tentativo restituisce 409 idempotency_conflict invece di eseguire e addebitare il lavoro due volte. Se la prima è fallita prima di raggiungere il modello, la chiave viene liberata e il nuovo tentativo funziona normalmente. Una chiave è utilizzabile una volta per account per 24 ore.

curl https://api14.com/api/v1/images/generations \
  -H "Authorization: Bearer $API14_KEY" \
  -H "Idempotency-Key: 6f1c2a3e-order-1842" \
  -H "Content-Type: application/json" \
  -d '{"model": "black-forest-labs/flux-3-image", "prompt": "a red bicycle"}'

Quando raggiungi un limite

Troppe richieste

HTTP/1.1 429 Too Many Requests
Retry-After: 60
{
  "error": {
    "message": "Rate limit of 5 requests per minute exceeded.",
    "type": "rate_limit_error",
    "code": "rate_limited"
  }
}

Attendi il numero di secondi indicato in Retry-After, poi riprova. Gli SDK ufficiali di OpenAI ripetono automaticamente le risposte 429 con backoff (due tentativi per impostazione predefinita; configurabile con maxRetries / max_retries).

Limite di spesa giornaliero

{
  "error": {
    "message": "This API key reached its daily spend limit.",
    "type": "rate_limit_error",
    "code": "daily_limit_reached"
  }
}

Riprovare non serve fino al giorno UTC successivo. Aumenta o rimuovi il limite giornaliero della chiave in Chiavi API se si tratta di traffico previsto.

Limiti dell'upstream

I provider hanno i propri limiti, più restrittivi per le varianti di modello :free. Quando un provider limita una richiesta, il suo 429 ti viene inoltrato. Usa i fallback di modello o l'instradamento dei provider per distribuire il carico tra più provider.

Gestire i limiti nel codice

  • Rispetta il Retry-After e riprova con backoff esponenziale e jitter.
  • Distingui rate_limited (riprova più tardi) da daily_limit_reached e insufficient_balance (riprovare non serve).
  • Metti in coda i job in background invece di lanciarli tutti insieme.
  • Usa lo streaming per le risposte lunghe: una richiesta in streaming conta come una sola richiesta.
import time
from openai import OpenAI, RateLimitError

client = OpenAI(base_url="https://api14.com/api/v1", api_key="sk-api14-...", max_retries=0)

for attempt in range(5):
    try:
        r = client.chat.completions.create(model="openai/gpt-5-mini", messages=[{"role": "user", "content": "Hi"}])
        break
    except RateLimitError as e:
        if e.code == "daily_limit_reached":
            raise
        time.sleep(int(e.response.headers.get("retry-after", 2 ** attempt)))

Vedi Errori per tutti i codici di stato.