Limite de cereri

Fiecare plan stabilește o rată în cereri pe minut: 20, 40 sau 120. amodb numără cererile într-o fereastră glisantă de 60 de secunde. Fiecare răspuns poartă X-RateLimit-Limit, X-RateLimit-Remaining și X-RateLimit-Reset. Peste limită primești HTTP 429 cu status_code 25 și un antet Retry-After în secunde. Răspunsurile din cache se numără și ele.

Actualizat Vezi ca Markdown

Limite în funcție de plan

Cereri pe minutCereri pe zi la rata maximă
2028,800
4057,600
120172,800

Fiecare plan include aceleași endpoint-uri și aceleași date. Vezi prețurile pentru numele și prețurile planurilor.

Cum funcționează fereastra

amodb numără cererile fiecărei chei din ultimele 60 de secunde. Fereastra glisează: o cerere făcută la 12:00:30 nu mai este numărată la 12:01:30. Nu există resetare la începutul minutului, deci o rată constantă funcționează mai bine decât rafalele.

Verificarea cheii și limita de cereri rulează înainte de cache-ul de la margine. Un răspuns servit din cache se numără tot ca o cerere.

Antete de răspuns

Fiecare apel făcut cu o cheie întoarce aceste antete:

AntetSemnificație
X-RateLimit-LimitCereri permise pe 60 de secunde pentru această cheie.
X-RateLimit-RemainingCereri rămase în fereastra curentă.
X-RateLimit-ResetSecunde până când cea mai veche cerere numărată iese din fereastră.
Retry-AfterDoar la 429: secunde de așteptat până la următorul apel.

Când atingi limita

Răspunsul este HTTP 429, cu corpul de eroare TMDB:

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

Așteaptă Retry-After secunde, apoi reîncearcă. Nu reîncerca într-o buclă strânsă.

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

Rămâi sub limită

  • Stochează răspunsurile în cache la tine. Detaliile se schimbă rar; 6 ore este o valoare implicită sigură.
  • Folosește append_to_response ca să obții detalii, credite și imagini într-o singură cerere în loc de trei.
  • Distribuie joburile în lot: la 40 de cereri pe minut, trimite o cerere la fiecare 1,5 secunde.
  • Citește X-RateLimit-Remaining și încetinește înainte să ajungă la 0.

Întrebări și răspunsuri

Toate cheile mele au aceeași limită?

Fiecare cheie este numărată în propria fereastră, iar fiecare cheie primește rata planului tău. Folosește o cheie pentru fiecare aplicație, ca o aplicație aglomerată să nu o încetinească pe alta.

Există o limită zilnică?

Nu. Singura limită este rata pe minut. La 40 de cereri pe minut, o cheie poate face până la 57,600 de cereri pe zi.

Cererile de imagini se numără?

Nu. Imaginile de pe img.amodb.dev nu cer cheie și nu intră în rata ta.