# Аутентификация

> Каждый запрос к amodb содержит один ключ: 32 hex-символа в нижнем регистре. Передавайте его как api_key в запросе или заголовком Authorization: Bearer для вызовов в стиле TMDB и как apikey для вызовов в стиле OMDb. Изображениям ключ не нужен. Неверный ключ дает 401 со status_code 7, приостановленный ключ дает 401 со status_code 10.

## Формат ключа

Ключ состоит из 32 hex-символов в нижнем регистре, например `0123456789abcdef0123456789abcdef`. Он имеет ту же форму, что и ключ TMDB v3, поэтому поля и валидаторы, написанные для ключей TMDB, его принимают.

amodb хранит только хеш SHA-256 каждого ключа. Полный ключ показывается один раз, при создании. Если вы его потеряли, удалите его и создайте новый.

## Вызовы в стиле TMDB

Передавайте ключ одним из двух способов. Оба работают на каждом эндпоинте под `https://api.amodb.dev/3`.

| Способ           | Пример                           |
| ---------------- | -------------------------------- |
| Параметр запроса | `?api_key=YOUR_KEY`              |
| Заголовок        | `Authorization: Bearer YOUR_KEY` |

```bash
curl "https://api.amodb.dev/3/configuration" \
  -H "Authorization: Bearer $AMODB_KEY"
```

```js
const res = await fetch("https://api.amodb.dev/3/configuration", {
  headers: { Authorization: `Bearer ${process.env.AMODB_KEY}` },
});
```

```python
import os
import requests

res = requests.get(
    "https://api.amodb.dev/3/configuration",
    headers={"Authorization": f"Bearer {os.environ['AMODB_KEY']}"},
    timeout=10,
)
```

```php
<?php
$url = "https://api.amodb.dev/3/configuration?api_key=" . urlencode(getenv("AMODB_KEY"));
$config = json_decode(file_get_contents($url), true);
```

```go
req, _ := http.NewRequest("GET", "https://api.amodb.dev/3/configuration", nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("AMODB_KEY"))
res, err := http.DefaultClient.Do(req)
```

## Вызовы в стиле OMDb

Эндпоинт, совместимый с OMDb, принимает ключ как `apikey`, так же как и сам OMDb. Это тот же ключ, который вы используете для вызовов в стиле TMDB.

```bash
curl "https://api.amodb.dev/omdb/?t=Inception&y=2010&apikey=$AMODB_KEY"
```

## Изображениям ключ не нужен

URL изображений на `img.amodb.dev` публичны. Не добавляйте к ним свой ключ: тег `<img>` раскроет его каждому посетителю.

## Храните ключи на сервере

Ключ в браузерном бандле, мобильном приложении или публичном репозитории становится публичным. Любой, кто его скопирует, расходует ваш лимит запросов. Вызывайте amodb со своего сервера, из serverless-функции или на этапе сборки, а клиентам передавайте только данные.

- Храните ключ в переменной окружения или в менеджере секретов.
- Используйте один ключ на приложение или окружение, с названием вроде `production` или `staging`.
- Удаляйте ключ в тот же момент, когда он утек. Вызовы с ним сразу перестают работать.

## Ошибки

| HTTP | status_code | Значение                                                         |
| ---- | ----------- | ---------------------------------------------------------------- |
| 401  | 7           | Ключ отсутствует, имеет неверный формат или неизвестен.          |
| 401  | 10          | Ключ приостановлен. Напишите на <support@amodb.dev>.             |
| 402  | 36          | Срок вашего тарифа истек. Оплатите новый период на странице цен. |

Все коды описаны на странице [ошибки](https://amodb.dev/ru/errors/).

## Вопросы и ответы

### Безопаснее ли заголовок Bearer, чем api_key в запросе?

Да, немного. Строки запроса попадают в логи сервера и историю браузера чаще, чем заголовки. Оба способа проходят одну и ту же проверку, поэтому используйте заголовок там, где это позволяет ваш клиент.

### Сколько ключей можно создать?

До 10 активных ключей на аккаунт. Все они делят лимит запросов вашего тарифа, поэтому второй ключ не добавляет пропускной способности.

### Что будет с моими ключами при смене тарифа?

Делать ничего не нужно. Каждый активный ключ получает новый лимит в течение минуты после платежа.

## Связанные страницы

- [Быстрый старт](https://amodb.dev/ru/quickstart/): Первый вызов amodb: получите ключ, запросите детали фильма через curl, JavaScript, Python, PHP или Go и загрузите постер с img.amodb.dev. Меньше 2 минут.
- [Лимиты запросов](https://amodb.dev/ru/rate-limits/): amodb ограничивает ключ запросами в минуту в скользящем окне 60 секунд: 20, 40 или 120 по тарифу. Читайте заголовки лимита и обрабатывайте 429 с Retry-After.
- [Ошибки](https://amodb.dev/ru/errors/): Все ошибки amodb: HTTP-статус, status_code и сообщение TMDB, а также формат ошибки OMDb. Что означает каждая и что должен делать ваш клиент дальше.
- [Правила допустимого использования](https://amodb.dev/ru/acceptable-use/): Что можно с amodb: приложения, сайты, боты и исследования на данных. Что нельзя: делиться ключами, перепродавать доступ, обходить лимиты и атаковать сервис.

Обновлено: 2026-10-18. Source: https://amodb.dev/ru/authentication/
