# Ліміти запитів

> Кожен тариф задає ліміт у запитах на хвилину: 20, 40 або 120. amodb рахує запити в ковзному вікні 60 секунд. Кожна відповідь містить X-RateLimit-Limit, X-RateLimit-Remaining і X-RateLimit-Reset. Після перевищення ліміту ви отримуєте HTTP 429 зі status_code 25 і заголовок Retry-After у секундах. Відповіді з кешу теж враховуються.

## Ліміти за тарифами

| Запитів на хвилину | Запитів на день на повній швидкості |
| ------------------ | ----------------------------------- |
| 20                 | 28,800                              |
| 40                 | 57,600                              |
| 120                | 172,800                             |

Кожен тариф містить ті самі ендпоінти й дані. Назви тарифів і ціни дивіться на сторінці [ціни](https://amodb.dev/uk/pricing/).

## Як працює вікно

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` секунд, потім повторіть запит. Не повторюйте у щільному циклі.

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

## Як не перевищувати ліміт

- Кешуйте відповіді на своєму боці. Деталі змінюються рідко; 6 годин це безпечне значення за замовчуванням.
- Використовуйте `append_to_response`, щоб отримати деталі, акторський склад і зображення одним запитом замість трьох.
- Розподіляйте пакетні завдання: при 40 запитах на хвилину надсилайте один запит кожні 1.5 секунди.
- Читайте `X-RateLimit-Remaining` і сповільнюйтеся, поки він не досяг 0.

## Запитання й відповіді

### Чи мають усі мої ключі один спільний ліміт?

Кожен ключ рахується у власному вікні, і кожен ключ отримує ліміт вашого тарифу. Використовуйте один ключ на застосунок, щоб завантажений застосунок не сповільнював інший.

### Чи є денна межа?

Ні. Єдине обмеження це ліміт на хвилину. При 40 запитах на хвилину ключ може зробити до 57,600 запитів на день.

### Чи враховуються запити зображень?

Ні. Зображення на img.amodb.dev не потребують ключа й не входять у ваш ліміт.

## Пов'язані сторінки

- [Ціни](https://amodb.dev/uk/pricing/): Тарифи amodb різняться лише запитами на хвилину: 20, 40 або 120. Кожен дає всі дані, сумісні з TMDB v3 та OMDb. Передплата, без поновлення й пробного періоду.
- [Помилки](https://amodb.dev/uk/errors/): Усі помилки amodb зі статусом HTTP, status_code і повідомленням TMDB, а також форма помилки OMDb. Що означає кожна й що має робити ваш клієнт далі.
- [Автентифікація](https://amodb.dev/uk/authentication/): Як надсилати ключ amodb: api_key у запиті, заголовок Authorization Bearer або apikey для викликів OMDb. Формат ключа, зберігання, заміна та помилки 401.
- [Швидкий старт](https://amodb.dev/uk/quickstart/): Перший виклик amodb: отримайте ключ, запросіть деталі фільму в curl, JavaScript, Python, PHP чи Go і завантажте постер з img.amodb.dev. Менш ніж за 2 хвилини.

Оновлено: 2026-10-18. Source: https://amodb.dev/uk/rate-limits/
