Rate limiting
La maggior parte degli endpoint dell'API è soggetta a rate limiting. Con il rate limiting, i client possono effettuare solo un certo numero di richieste entro un limite di tempo specifico.
Quando il rate limiting è attivo su un endpoint, ogni risposta include un insieme di header che consentono al client di conoscere lo stato attuale del limite. Gli header seguono la convenzione standard draft-ietf-httpapi-ratelimit-headers.
Header di rate limiting
Presenti su ogni risposta:
RateLimit-Limit: numero massimo di richieste consentite al client nella finestra corrente.RateLimit-Remaining: numero di richieste ancora disponibili per il client nella finestra corrente.RateLimit-Reset: secondi mancanti al rinnovo dei permessi del client.RateLimit-Policy: la policy applicata, nel formato<limite>;w=<finestra in secondi>(ad esempio30;w=1significa 30 richieste ogni secondo).
Quando il limite è stato raggiunto, le richieste successive all'interno della
finestra ottengono una risposta 429 Too Many Requests. In questo caso la risposta
include anche l'header standard:
Retry-After: secondi da attendere prima di inviare una nuova richiesta.
Note
Il limite per singolo client è attualmente di 30 richieste al secondo (il limite globale aggregato su tutta l'API è di 100 richieste al secondo). Questi valori sono soggetti a modifiche in qualsiasi momento; i client dovrebbero quindi considerare e sfruttare le informazioni di rate limiting presenti in ogni risposta anziché basarsi su valori fissi.
Esempio
In una risposta andata a buon fine, il client ha effettuato 3 richieste delle 30 disponibili nel secondo corrente, e ne restano quindi 27:
Quando il limite viene superato, la risposta è 429 Too Many Requests e indica con
Retry-After (e RateLimit-Reset) i secondi da attendere prima di riprovare: