# Limity požadavků

> Každý tarif určuje počet požadavků za minutu: 20, 40 nebo 120. amodb počítá požadavky v klouzavém okně 60 sekund. Každá odpověď nese X-RateLimit-Limit, X-RateLimit-Remaining a X-RateLimit-Reset. Po překročení limitu dostanete HTTP 429 se status_code 25 a hlavičku Retry-After v sekundách. Odpovědi z cache se také počítají.

## Limity podle tarifu

| Požadavků za minutu | Požadavků za den při plné rychlosti |
| ------------------- | ----------------------------------- |
| 20                  | 28 800                              |
| 40                  | 57 600                              |
| 120                 | 172 800                             |

Každý tarif zahrnuje stejné endpointy a data. Názvy a ceny tarifů najdete v [ceníku](https://amodb.dev/cs/pricing/).

## Jak funguje okno

amodb počítá požadavky každého klíče za posledních 60 sekund. Okno se posouvá: požadavek odeslaný ve 12:00:30 se přestane počítat ve 12:01:30. Na začátku minuty se nic neresetuje, proto lépe funguje stálá rychlost než nárazy.

Kontrola klíče a limitu proběhne před cache na edge. Odpověď z cache se přesto počítá jako jeden požadavek.

## Hlavičky odpovědi

Každé volání provedené s klíčem vrací tyto hlavičky:

| Hlavička                | Význam                                                              |
| ----------------------- | ------------------------------------------------------------------- |
| `X-RateLimit-Limit`     | Počet požadavků povolených za 60 sekund pro tento klíč.             |
| `X-RateLimit-Remaining` | Počet požadavků zbývajících v aktuálním okně.                       |
| `X-RateLimit-Reset`     | Počet sekund, než nejstarší započítaný požadavek opustí okno.       |
| `Retry-After`           | Jen u 429: počet sekund, které je třeba počkat před dalším voláním. |

## Když narazíte na limit

Odpověď je HTTP 429 s tělem chyby TMDB:

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

Počkejte `Retry-After` sekund a pak to zkuste znovu. Neopakujte v těsné smyčce.

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

## Zůstaňte pod limitem

- Cachujte odpovědi u sebe. Detaily se mění zřídka; 6 hodin je bezpečná výchozí hodnota.
- Pomocí `append_to_response` získejte detaily, obsazení a štáb i obrázky jedním požadavkem místo třemi.
- Rozložte dávkové úlohy: při 40 požadavcích za minutu posílejte jeden požadavek každých 1,5 sekundy.
- Čtěte `X-RateLimit-Remaining` a zpomalte dřív, než klesne na 0.

## Otázky a odpovědi

### Sdílejí všechny moje klíče jeden limit?

Každý klíč se počítá ve vlastním okně a každý klíč dostává limit vašeho tarifu. Používejte jeden klíč na aplikaci, aby vytížená aplikace nezpomalila jinou.

### Existuje denní strop?

Ne. Jediným limitem je počet požadavků za minutu. Při 40 požadavcích za minutu může klíč provést až 57 600 požadavků denně.

### Počítají se požadavky na obrázky?

Ne. Obrázky na img.amodb.dev nepotřebují klíč a nezapočítávají se do vašeho limitu.

## Související stránky

- [Ceník](https://amodb.dev/cs/pricing/): Tarify amodb se liší jen počtem požadavků za minutu: 20, 40 nebo 120. Každý zahrnuje všechna data kompatibilní s TMDB v3 a OMDb. Bez obnovení a zkušební verze.
- [Chyby](https://amodb.dev/cs/errors/): Každá chyba amodb se stavem HTTP, status_code a zprávou TMDB a také tvar chyby OMDb. Co která znamená a co má váš klient udělat v dalším kroku.
- [Autentizace](https://amodb.dev/cs/authentication/): Jak poslat klíč amodb: api_key v dotazu, hlavička Authorization Bearer nebo apikey pro volání OMDb. Formát klíče, uložení, rotace a chyby 401.
- [Rychlý start](https://amodb.dev/cs/quickstart/): První volání amodb: získejte klíč, vyžádejte detail filmu v curl, JavaScriptu, Pythonu, PHP nebo Go a načtěte plakát z img.amodb.dev. Za méně než 2 minuty.

Aktualizováno: 2026-10-18. Source: https://amodb.dev/cs/rate-limits/
