Platform

Cos'è la limitazione delle richieste di API e come gestisco un 429?

La limitazione delle richieste di API limita le chiamate in una finestra temporale; dopo un 429, attendi il valore di Retry-After prima di riprovare.

Un mittente intensivo può esaurire il proprio budget di richieste prima che tutti i messaggi siano in coda. Leggere la quota rimanente permette di rallentare prima che altre chiamate vengano rifiutate.

Come decide Bird il mio limite?

Bird applica un tasso base, un eventuale incremento del piano e poi un eventuale override per il gruppo pertinente. Un override sostituisce gli altri valori.

Endpoint correlati condividono un gruppo. Esaurire un gruppo di invio non esaurisce di per sé i gruppi separati usati per leggere lo stato o gestire i webhook.

L'ambito di ogni budget dipende dall'operazione:

GruppoChi condivide il budget?
Invii di prodottoTutte le credenziali nell'organizzazione per quel prodotto.
Letture, elenchi e scritture gestionaliRichieste dalla stessa credenziale operante nell'organizzazione.
Login o reset password non autenticatiRichieste dallo stesso IP client.

I limiti non autenticati usano soglie fisse. Consulta la guida ai limiti delle richieste per i gruppi assegnati ai singoli endpoint.

I limiti di invio contano le richieste, non i destinatari. Una richiesta batch può accodare più messaggi. Il suo gruppo può avere una quota diversa.

Confronta le quote attive e il numero di destinatari raggruppabili prima di cambiare endpoint. Un batch con un solo destinatario potrebbe non offrire alcun vantaggio di throughput.

Come leggo gli header di risposta?

Leggi RateLimit-Policy per la quota e la finestra, poi RateLimit per le richieste rimanenti e il tempo al reset.

Per esempio:

RateLimit-Policy: "email_send";q=1000;w=60
RateLimit: "email_send";r=842;t=35

Questo esempio consente 1.000 richieste per finestra di 60 secondi. Ha 842 richieste rimanenti, con 35 secondi al reset.

I numeri illustrano gli header. Non rappresentano una quota garantita. Leggi i valori restituiti al tuo client.

CampoSignificato
Nome citatoIl gruppo a cui si applica la policy.
qRichieste consentite per finestra.
wDurata della finestra in secondi.
rRichieste rimanenti.
tSecondi al reset, non un timestamp.

Una risposta può contenere più di una policy. Tieni conto di ogni policy applicabile quando pianifichi la richiesta successiva.

Cosa restituisce un errore di limitazione delle richieste?

Un limite API esaurito restituisce 429 Too Many Requests con Retry-After in secondi. Gli header di limitazione identificano il gruppo esaurito. La sua quota rimanente è r=0.

La risposta di errore include questi campi:

{
  "error": {
    "type": "rate_limit_error",
    "code": "E01003",
    "name": "RateLimited"
  }
}

Confronta il type o il code nel tuo handler. Il messaggio leggibile può cambiare senza modificare l'azione di recupero.

Come dovrebbe gestire un 429 il mio client?

Attendi Retry-After, poi riprova con una policy di backoff limitata. Mantieni la stessa chiave di idempotenza quando ripeti la stessa scrittura.

Coordina i worker che usano lo stesso budget di gruppo. L'ultima risposta di un worker non può tenere conto delle richieste inviate nel frattempo da altri worker.

Rallenta man mano che la quota rimanente diminuisce. Conserva il percorso di retry per il traffico concorrente. Il dosaggio riduce gli errori ma non può garantire che nessuna chiamata riceva un 429.

Gli SDK Bird gestiscono i retry dei 429 e Retry-After. Non coordinano una coda condivisa tra tutti i tuoi processi.

Se la quota resta troppo bassa per il carico di lavoro, contatta Bird per un override. Creare più chiavi non aumenta il limite di invio a livello di organizzazione.

Una richiesta limitata ha eseguito qualche operazione?

Bird rifiuta una richiesta limitata prima di eseguire il lavoro richiesto. Quel rifiuto non consuma la chiave di idempotenza. Riprova con la stessa chiave dopo aver atteso.

Il limitatore lascia passare le richieste se non riesce a valutare il limite. Un problema nella valutazione delle quote quindi non produce di per sé un 429.

Mantieni la gestione dell'idempotenza anche per altri errori. Un errore del server o una risposta persa possono verificarsi dopo che una scrittura è iniziata.

In breve

  1. Leggi la quota dalle risposte.

    Il limite applicabile dipende dal gruppo, dal piano e da eventuali override. Un numero fisso può diventare errato.

  2. Coordina i mittenti che condividono una quota.

    I limiti di invio si applicano a livello di organizzazione, quindi chiavi separate non creano budget di invio separati.

  3. Attendi prima di riprovare un 429.

    Retry-After indica il ritardo in secondi. Limita i tuoi tentativi. Mantieni la chiave di idempotenza per la stessa scrittura.

  4. Tratta gli header come stato condiviso.

    Le richieste rimanenti possono essere consumate da altri worker, quindi il dosaggio riduce gli errori di limitazione senza eliminarli.

Mettilo in pratica.

Prosegui con la documentazione, le guide e gli esempi per questo argomento. Le risorse sono in inglese.

Ottieni un brief di implementazione

Costruisci sulla stessa rete.

Una chiave API di test è subito tua. L'accesso alla produzione si sblocca quando aggiungi un metodo di pagamento e verifichi un mittente.

La tua prossima idea.
Pronta a partire.