Аутентификация
Все эндпоинты /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