# Limites de débit

> Chaque offre fixe un débit en requêtes par minute : 20, 40 ou 120. amodb compte les requêtes sur une fenêtre glissante de 60 secondes. Chaque réponse porte X-RateLimit-Limit, X-RateLimit-Remaining et X-RateLimit-Reset. Au-delà de la limite, vous recevez HTTP 429 avec status_code 25 et un en-tête Retry-After en secondes. Les réponses en cache comptent aussi.

## Limites par offre

| Requêtes par minute | Requêtes par jour au débit maximal |
| ------------------- | ---------------------------------- |
| 20                  | 28 800                             |
| 40                  | 57 600                             |
| 120                 | 172 800                            |

Chaque offre inclut les mêmes points de terminaison et les mêmes données. Voir [les tarifs](https://amodb.dev/fr/pricing/) pour les noms et les prix des offres.

## Fonctionnement de la fenêtre

amodb compte les requêtes de chaque clé sur les 60 dernières secondes. La fenêtre glisse : une requête faite à 12:00:30 cesse de compter à 12:01:30. Il n'y a pas de remise à zéro au début de la minute, donc un rythme régulier fonctionne mieux que des rafales.

La vérification de la clé et la limite de débit passent avant le cache de périphérie. Une réponse servie depuis le cache compte quand même pour une requête.

## En-têtes de réponse

Chaque appel fait avec une clé renvoie ces en-têtes :

| En-tête                 | Signification                                                            |
| ----------------------- | ------------------------------------------------------------------------ |
| `X-RateLimit-Limit`     | Requêtes autorisées par 60 secondes pour cette clé.                      |
| `X-RateLimit-Remaining` | Requêtes restantes dans la fenêtre en cours.                             |
| `X-RateLimit-Reset`     | Secondes avant que la plus ancienne requête comptée sorte de la fenêtre. |
| `Retry-After`           | Sur 429 uniquement : secondes à attendre avant l'appel suivant.          |

## Quand vous atteignez la limite

La réponse est HTTP 429 avec le corps d'erreur TMDB :

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

Attendez les secondes de `Retry-After`, puis réessayez. Ne réessayez pas en boucle serrée.

```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")
```

## Rester sous la limite

- Mettez les réponses en cache de votre côté. Les détails changent rarement : 6 heures est une valeur par défaut sûre.
- Utilisez `append_to_response` pour obtenir les détails, les crédits et les images en une requête au lieu de trois.
- Étalez les traitements par lots : à 40 requêtes par minute, envoyez une requête toutes les 1,5 secondes.
- Lisez `X-RateLimit-Remaining` et ralentissez avant qu'il n'atteigne 0.

## Questions et réponses

### Toutes mes clés partagent-elles une même limite ?

Chaque clé est comptée sur sa propre fenêtre, et chaque clé reçoit le débit de votre offre. Utilisez une clé par application pour qu'une application très sollicitée n'en ralentisse pas une autre.

### Y a-t-il un plafond quotidien ?

Non. La seule limite est le débit par minute. À 40 requêtes par minute, une clé peut faire jusqu'à 57 600 requêtes par jour.

### Les requêtes d'images comptent-elles ?

Non. Les images sur img.amodb.dev n'exigent aucune clé et ne comptent pas dans votre débit.

## Pages liées

- [Tarifs](https://amodb.dev/fr/pricing/): Les offres amodb ne diffèrent que par les requêtes par minute : 20, 40 ou 120. Toutes incluent les données TMDB v3 et OMDb. Prépayé, sans renouvellement.
- [Erreurs](https://amodb.dev/fr/errors/): Chaque erreur amodb : statut HTTP, status_code et message TMDB, plus la forme d'erreur OMDb. Ce que chacune signifie et ce que votre client doit faire.
- [Authentification](https://amodb.dev/fr/authentication/): Comment envoyer votre clé amodb : api_key dans la requête, en-tête Authorization Bearer, ou apikey pour OMDb. Format, stockage, rotation et erreurs 401.
- [Démarrage rapide](https://amodb.dev/fr/quickstart/): Faites votre premier appel amodb : obtenez une clé, demandez un film en curl, JavaScript, Python, PHP ou Go, puis chargez l'affiche. En moins de 2 minutes.

Mis à jour: 2026-10-18. Source: https://amodb.dev/fr/rate-limits/
