> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.beatapi.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.beatapi.io/_mcp/server.

# API-ключи и безопасность

> Как создавать, ограничивать, заменять и отзывать ключи BeatAPI и где их нельзя хранить.

# API-ключи и безопасность

## Где создать ключ?

В [Dashboard → API Keys](https://beatapi.io/dashboard/apikeys). Скопируйте ключ при создании: повторно он не отображается.

## Сколько ключей нужно?

По одному на каждый компонент, который вызывает BeatAPI: приложение, инструмент или окружение.

Это бесплатно и сразу упрощает управление. Поле `by_api_key` в `GET /v1/usage` показывает расходы без дополнительного учёта, а скомпрометированный или проблемный ключ можно отозвать, не останавливая остальные компоненты.

Разработка, тестовое окружение и рабочая среда не должны использовать один ключ.

## Куда ключ не должен попадать?

Туда, где его может прочитать пользователь или посторонний:

* JavaScript браузера и любые клиентские сборки. Всё отправленное в браузер следует считать открытым.
* Мобильные приложения: их декомпиляция не представляет большой сложности.
* Публичный репозиторий или закрытый репозиторий, который впоследствии могут открыть.
* Логи, отчёты об ошибках, скриншоты и обращения в поддержку.
* Параметры URL: они попадают в журналы прокси, историю браузера и серверные логи.

Передавайте ключ в заголовке: `Authorization: Bearer <key>`.

## Как не допустить попадания ключа в репозиторий?

Используйте переменную окружения и исключите файл с её значением из системы контроля версий:

```bash
read -rsp "BeatAPI API key: " BEATAPI_API_KEY && echo
export BEATAPI_API_KEY
```

Такой способ ввода также не оставляет ключ в истории команд. Добавьте `.env`, `~/.codex/auth.json` и конфигурационные файлы инструментов с ключами в `.gitignore`.

Если интеграция поддерживает переменную окружения, предпочитайте её вставке ключа в файл. В [Codex CLI](/integrations/codex-cli) для этого предусмотрен `env_key`.

## Что делать при утечке ключа?

Сначала отзовите его в [Dashboard → API Keys](https://beatapi.io/dashboard/apikeys), затем создайте новый и обновите использовавшие его компоненты. Отзыв действует немедленно.

Порядок важен. Если сначала создать новый ключ, а старый отозвать позже, некоторое время утёкший ключ всё ещё сможет расходовать баланс.

Затем проверьте `by_api_key` в `GET /v1/usage` на незнакомые вызовы.

## Как часто менять ключи?

По расписанию, которого вы сможете придерживаться, и немедленно, если сотрудник с доступом ушёл или возникло подозрение на утечку. Отдельный ключ для каждого компонента упрощает замену: обновлять нужно только одно развёртывание.

## Может ли браузер напрямую вызывать BeatAPI?

Не с постоянным API-ключом. Для Realtime API сервер создаёт сессию и передаёт браузеру краткоживущий `client_secret`, ограниченный этой сессией. См. [Realtime API](/realtime-api). Остальные методы вызываются только с сервера.

Исключение — чтение сгенерированных медиа. URL результата задачи содержит собственные подписанные данные доступа в параметрах запроса и разрешает чтение только этого объекта. Поэтому браузер может загрузить его через `<img>` или `<video>` без заголовка авторизации.

## Используются ли мои данные для обучения?

BeatAPI не обучается на ваших запросах. Перед отправкой лиц, голосов и других персональных данных либо обработкой материалов от имени другого человека прочитайте [политику конфиденциальности](https://beatapi.io/privacy-policy) и [условия использования](https://beatapi.io/terms-of-service).

## Как убедиться, что вебхук отправлен BeatAPI?

Проверяйте подпись по **исходным байтам запроса** до разбора JSON. Повторная сериализация меняет тело, и подпись перестаёт совпадать. Проверяйте также время, чтобы защититься от повторной отправки старого события. См. [вебхуки](/webhooks).

Непроверенный обработчик вебхука позволяет постороннему записывать данные в вашу систему. Неуспешную проверку подписи рассматривайте как возможную атаку, а не просто ошибку.

## Что попадает в журналы?

Запросы записываются с `request_id` для поддержки и учёта расходов. Сообщая о проблеме, передавайте этот ID, но никогда не сам ключ.