# 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.

## Limiti per piano

| Richieste al minuto | Richieste al giorno alla frequenza massima |
| ------------------- | ------------------------------------------ |
| 20                  | 28.800                                     |
| 40                  | 57.600                                     |
| 120                 | 172.800                                    |

Ogni piano include gli stessi endpoint e gli stessi dati. Vedi i [prezzi](https://amodb.dev/it/pricing/) 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:

| Header                  | Significato                                                             |
| ----------------------- | ----------------------------------------------------------------------- |
| `X-RateLimit-Limit`     | Richieste consentite ogni 60 secondi per questa chiave.                 |
| `X-RateLimit-Remaining` | Richieste rimaste nella finestra corrente.                              |
| `X-RateLimit-Reset`     | Secondi prima che la richiesta contata più vecchia esca dalla finestra. |
| `Retry-After`           | Solo 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.

```js
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");
}
```

```python
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.

## Pagine correlate

- [Prezzi](https://amodb.dev/it/pricing/): I piani amodb differiscono solo per le richieste al minuto: 20, 40 o 120. Ogni piano include tutti i dati TMDB v3 e OMDb. Prepagato, senza rinnovo né prova.
- [Errori](https://amodb.dev/it/errors/): Ogni errore di amodb con stato HTTP, status_code e messaggio TMDB, più la forma dell'errore OMDb. Cosa significa ciascuno e cosa deve fare il tuo client.
- [Autenticazione](https://amodb.dev/it/authentication/): Come inviare la chiave amodb: api_key nella query, un header Authorization Bearer o apikey per le chiamate OMDb. Formato, conservazione, rotazione, errori 401.
- [Avvio rapido](https://amodb.dev/it/quickstart/): Fai la prima chiamata ad amodb: ottieni una chiave, richiedi i dettagli di un film in curl, JavaScript, Python, PHP o Go, carica la locandina. Meno di 2 minuti.

Aggiornato: 2026-10-18. Source: https://amodb.dev/it/rate-limits/
