מגבלות קצב

כל מסלול קובע קצב בבקשות לדקה: 20, 40 או 120. amodb סופר בקשות בחלון נע של 60 שניות. כל תגובה נושאת את X-RateLimit-Limit, את X-RateLimit-Remaining ואת X-RateLimit-Reset. מעבר למגבלה מקבלים HTTP 429 עם status_code 25 וכותרת Retry-After בשניות. גם תגובות מהמטמון נספרות.

עודכן צפייה כ-Markdown

מגבלות לפי מסלול

בקשות לדקהבקשות ביום בקצב מלא
2028,800
4057,600
120172,800

כל מסלול כולל את אותן נקודות קצה ואת אותם נתונים. ראו תמחור לשמות המסלולים ולמחירים.

איך החלון עובד

amodb סופר את הבקשות של כל מפתח ב-60 השניות האחרונות. החלון נע: בקשה שנשלחה ב-12:00:30 מפסיקה להיספר ב-12:01:30. אין איפוס בתחילת הדקה, ולכן קצב יציב עובד טוב יותר מפרצי בקשות.

בדיקת המפתח ומגבלת הקצב רצות לפני מטמון הקצה. תגובה שמוגשת מהמטמון עדיין נספרת כבקשה אחת.

כותרות תגובה

כל קריאה שנעשית עם מפתח מחזירה את הכותרות האלה:

כותרתמשמעות
X-RateLimit-Limitמספר הבקשות המותר ל-60 שניות עבור המפתח הזה.
X-RateLimit-Remainingמספר הבקשות שנשארו בחלון הנוכחי.
X-RateLimit-Resetשניות עד שהבקשה הישנה ביותר שנספרה יוצאת מהחלון.
Retry-Afterב-429 בלבד: שניות להמתנה לפני הקריאה הבאה.

כשמגיעים למגבלה

התגובה היא HTTP 429 עם גוף השגיאה של TMDB:

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

המתינו Retry-After שניות ואז נסו שוב. אל תנסו שוב בלולאה צפופה.

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

איך להישאר מתחת למגבלה

  • שמרו תגובות במטמון אצלכם. פרטים משתנים לעתים רחוקות; 6 שעות הן ברירת מחדל בטוחה.
  • השתמשו ב-append_to_response כדי לקבל פרטים, קרדיטים ותמונות בבקשה אחת במקום בשלוש.
  • פזרו עבודות אצווה: ב-40 בקשות לדקה, שלחו בקשה אחת כל 1.5 שניות.
  • קראו את X-RateLimit-Remaining והאטו לפני שהוא מגיע ל-0.

שאלות ותשובות

האם כל המפתחות שלי חולקים מגבלה אחת?

כל מפתח נספר בחלון משלו, וכל מפתח מקבל את הקצב של המסלול שלכם. השתמשו במפתח אחד לכל אפליקציה, כדי שאפליקציה עמוסה לא תאט אחרת.

יש תקרה יומית?

לא. המגבלה היחידה היא הקצב לדקה. ב-40 בקשות לדקה מפתח יכול לבצע עד 57,600 בקשות ביום.

האם בקשות תמונות נספרות?

לא. תמונות ב-img.amodb.dev לא צריכות מפתח ולא נספרות בקצב שלכם.