Limiti di richieste

Ogni piano stabilisce una frequenza in richieste al minuto: 20, 40 o 120. amodb conta le richieste in una finestra scorrevole di 60 secondi. Ogni risposta porta X-RateLimit-Limit, X-RateLimit-Remaining e X-RateLimit-Reset. Oltre il limite ricevi HTTP 429 con status_code 25 e un header Retry-After in secondi. Anche le risposte dalla cache contano.

Aggiornato il Vedi in Markdown

Limiti per piano

Richieste al minutoRichieste al giorno alla frequenza massima
2028.800
4057.600
120172.800

Ogni piano include gli stessi endpoint e gli stessi dati. Vedi i prezzi per i nomi e i prezzi dei piani.

Come funziona la finestra

amodb conta le richieste di ogni chiave negli ultimi 60 secondi. La finestra scorre: una richiesta fatta alle 12:00:30 smette di contare alle 12:01:30. Non c'è alcun azzeramento allo scoccare del minuto, quindi una frequenza costante funziona meglio delle raffiche.

Il controllo della chiave e il limite di richieste vengono eseguiti prima della cache edge. Una risposta servita dalla cache conta comunque come una richiesta.

Header della risposta

Ogni chiamata fatta con una chiave restituisce questi header:

HeaderSignificato
X-RateLimit-LimitRichieste consentite ogni 60 secondi per questa chiave.
X-RateLimit-RemainingRichieste rimaste nella finestra corrente.
X-RateLimit-ResetSecondi prima che la richiesta contata più vecchia esca dalla finestra.
Retry-AfterSolo su 429: secondi da attendere prima della chiamata successiva.

Quando raggiungi il limite

La risposta è HTTP 429 con il corpo di errore TMDB:

JSON
{
  "success": false,
  "status_code": 25,
  "status_message": "Your request count (41) is over the allowed limit of (40)."
}

Attendi i secondi di Retry-After, poi riprova. Non riprovare in un ciclo stretto.

jspy
async function amodb(path) {
  for (let attempt = 0; attempt < 3; attempt++) {
    const res = await fetch(`https://api.amodb.dev${path}`, {
      headers: { Authorization: `Bearer ${process.env.AMODB_KEY}` },
    });
    if (res.status !== 429) return res.json();
    const wait = Number(res.headers.get("Retry-After") ?? 1);
    await new Promise((r) => setTimeout(r, wait * 1000));
  }
  throw new Error("amodb: still rate limited after 3 attempts");
}
import os
import time
import requests

def amodb(path):
    for _ in range(3):
        res = requests.get(
            f"https://api.amodb.dev{path}",
            headers={"Authorization": f"Bearer {os.environ['AMODB_KEY']}"},
            timeout=10,
        )
        if res.status_code != 429:
            return res.json()
        time.sleep(int(res.headers.get("Retry-After", "1")))
    raise RuntimeError("amodb: still rate limited after 3 attempts")

Restare sotto il limite

  • Metti in cache le risposte dal tuo lato. I dettagli cambiano di rado; 6 ore è un valore predefinito sicuro.
  • Usa append_to_response per ottenere dettagli, crediti e immagini in una sola richiesta invece di tre.
  • Distribuisci i lavori in batch: a 40 richieste al minuto, invia una richiesta ogni 1,5 secondi.
  • Leggi X-RateLimit-Remaining e rallenta prima che arrivi a 0.

Domande e risposte

Tutte le mie chiavi condividono un unico limite?

Ogni chiave è conteggiata nella propria finestra, e ogni chiave ha la frequenza del tuo piano. Usa una chiave per app, così un'app molto attiva non rallenta le altre.

C'è un tetto giornaliero?

No. L'unico limite è la frequenza al minuto. A 40 richieste al minuto una chiave può fare fino a 57.600 richieste al giorno.

Le richieste di immagini contano?

No. Le immagini su img.amodb.dev non richiedono chiave e non contano nella tua frequenza.