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

Все эндпоинты /v1 принимают API-ключ проекта в заголовке Authorization:

Authorization: Bearer cb_live_a1b2c3d4_0123456789abcdef0123456789abcdef

Формат и хранение

  • Ключ выглядит как cb_live_<префикс>_<секрет>. Префикс (8 символов) виден в кабинете и помогает отличать ключи; секрет показывается один раз при выпуске.
  • У нас хранится только хеш секрета и префикс. Потеряли ключ — выпустите новый, старый отзовите.
  • Ключ принадлежит проекту: он видит каналы, медиа, посты и события только своего проекта. Данные другого проекта недоступны ни по какому id (в ответ придёт 404).
  • Ключи выпускаются и отзываются в кабинете (раздел «API-ключи»). Через REST проект создать нельзя: проекты и ключи заводит человек в кабинете.

Что вернётся при ошибке доступа

Ситуация Ответ
Нет заголовка, ключ неверный или отозван 401, code: unauthorized, заголовок WWW-Authenticate: Bearer
Ресурс чужого проекта 404, code: not_found
Слишком много запросов 429, code: rate_limited, Retry-After — см. Лимиты
{
  "type": "https://castbase.ru/docs/errors#unauthorized",
  "title": "Требуется аутентификация",
  "status": 401,
  "detail": "Передайте действующий API-ключ проекта: Authorization: Bearer cb_live_…",
  "code": "unauthorized"
}

Безопасность

  • Не храните ключ в репозитории и клиентском коде (браузер, мобильное приложение): только на сервере или в переменных окружения. Примеры читают его из CASTBASE_API_KEY.
  • Для разных систем выпускайте отдельные ключи (например, seo-factory, ci): отозвать один не затронет остальных.
  • Ключ, который мог утечь, отзовите сразу: отозванный ключ перестаёт работать немедленно.
  • Токены площадок (Instagram) через API не читаются: после ввода они хранятся только в зашифрованном виде.

Проверить, что ключ работает, можно запросом GET /v1/project:

curl -H "Authorization: Bearer $CASTBASE_API_KEY" https://castbase.ru/v1/project