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

Aktualizováno Zobrazit jako Markdown

Limity podle tarifu

Požadavků za minutuPožadavků za den při plné rychlosti
2028 800
4057 600
120172 800

Každý tarif zahrnuje stejné endpointy a data. Názvy a ceny tarifů najdete v ceníku.

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čkaVýznam
X-RateLimit-LimitPočet požadavků povolených za 60 sekund pro tento klíč.
X-RateLimit-RemainingPočet požadavků zbývajících v aktuálním okně.
X-RateLimit-ResetPočet sekund, než nejstarší započítaný požadavek opustí okno.
Retry-AfterJen 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.

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

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.