Limiti di chiamata e quota
Due cifre, e una sola rifiuta
Un volume mensile è quello che il tuo piano include, e un limite di picco limita le richieste al secondo perché un client non soffochi gli altri.
Solo il limite di picco rifiuta una richiesta. Superare il volume incluso non ti taglia fuori: la tua integrazione continua a funzionare, e un traffico che si assesta ben oltre quello che paghi è una conversazione sul passaggio a un piano superiore al rinnovo successivo, non un 429 alle tre di notte. Scrivi il tuo client rispetto al limite di picco; la cifra mensile è la dimensione del piano che hai comprato.
Entrambi sono fissati dal tuo piano. Il consumo attuale è nella
pagina delle chiavi e in GET /v1/api/me; le cifre dei piani sono nella
pagina per le aziende.
Intestazioni
Ogni risposta porta la tua situazione attuale, così un client ben educato può rallentare prima di essere rifiutato invece che dopo.
RateLimit-Limit: 100000
RateLimit-Remaining: 58796
RateLimit-Reset: 1725148800
RateLimit-Policy: 100000;w=2592000, 20;w=1| Intestazione | Significato |
|---|---|
RateLimit-Limit | Richieste consentite nella finestra attuale. |
RateLimit-Remaining | Richieste rimaste. Guarda questa invece di contare le tue chiamate. |
RateLimit-Reset | Marca temporale Unix in cui la finestra si rinnova. |
Retry-After | Inviata solo con un 429. Secondi da aspettare, e fa fede: preferiscila a qualsiasi attesa tu possa calcolare. |
Attendere correttamente fra i tentativi
async function call(request, attempts = 5) {
for (let attempt = 0; attempt < attempts; attempt++) {
const response = await fetch(request);
if (response.status !== 429 && response.status < 500) {
return response;
}
// Il server sa quando ti lascerà rientrare. Credigli.
const retryAfter = Number(response.headers.get("Retry-After") ?? 0);
const backoff = retryAfter > 0
? retryAfter * 1000
: Math.min(2 ** attempt * 250, 30_000);
// Senza uno scarto casuale, una flotta di worker riprova all'unisono e
// ricrea il picco che ha causato il 429 in primo luogo.
await sleep(backoff + Math.random() * 500);
}
throw new Error("Exhausted retry budget");
}Consumare meno quota
- Usa i webhook. Una consegna non costa quota. Interrogare un mercato ogni cinque minuti per cogliere una variazione che avviene due volte al giorno è la fonte più comune di richieste sprecate.
- Chiedi solo ciò che è cambiato.
updated_sincetrasforma una rilettura completa in una manciata di schede. - Invia If-None-Match. Un 304 non conta sulla tua quota.
- Pagina più grande. Una richiesta da 200 schede costa una richiesta; quattro da 50 ne costano quattro.
- Espandi invece di seguire i collegamenti.
expand=imagesevita una richiesta in più per ogni immobile. - Prova con chiavi di test. Una chiave
sk_test_non attinge alla tua quota di produzione, quindi una suite di CI rumorosa non costa nulla.
Se te ne serve di più
Raccontaci cosa stai costruendo invece di aggirare il limite. Un volume elevato e costante di solito si serve meglio con un'esportazione che con una scansione più rapida, e preferiamo alzarti una quota piuttosto che vederti riscoprire il limite di picco in produzione.