# Лимити на заявките

> Всеки план определя скорост в заявки в минута: 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/bg/pricing/).

## Как работи прозорецът

amodb брои заявките на всеки ключ за последните 60 секунди. Прозорецът се плъзга: заявка, направена в 12:00:30, спира да се брои в 12:01:30. Няма нулиране в началото на минутата, затова равномерното темпо работи по-добре от пиковете.

Проверката на ключа и лимитът на заявките се изпълняват преди кеша в edge. Отговор от кеша пак се брои като една заявка.

## Заглавки на отговора

Всяко извикване с ключ връща тези заглавки:

| Заглавка                | Значение                                                       |
| ----------------------- | -------------------------------------------------------------- |
| `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/bg/pricing/): Планове на amodb, различни само по заявките в минута: 20, 40 или 120. Всеки включва всички данни, съвместими с TMDB v3 и OMDb. Предплатено, без подновяване.
- [Грешки](https://amodb.dev/bg/errors/): Всяка грешка на amodb с HTTP статус, status_code на TMDB и съобщение, плюс формата на грешките на OMDb. Какво означава всяка и какво да направи клиентът ви.
- [Удостоверяване](https://amodb.dev/bg/authentication/): Как да изпратите ключа си за amodb: api_key в заявката, заглавка Authorization с Bearer или apikey за OMDb. Формат, съхранение, смяна на ключ и грешките 401.
- [Бърз старт](https://amodb.dev/bg/quickstart/): Първата ви заявка към amodb: вземете ключ, поискайте детайли за филм с curl, JavaScript, Python, PHP или Go и заредете постера от img.amodb.dev. До 2 минути.

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