Аутентификация
Runnev аутентифицирует каждый запрос bearer-токеном. Нет подписей запросов и нет OAuth-плясок; всё, что нужно, — один заголовок.
Заголовок Authorization
Отправляйте свой ключ как bearer-токен в каждом запросе:
curl https://runnev.dev/v1/streams \
-H "Authorization: Bearer rnv_live_00112233445566778899aabbccddeeff"
Три эндпоинта публичны и не требуют ключа: GET /v1/health,
GET /v1/version и доступ только для чтения к публичному демо-потоку. Всё остальное
без валидного ключа возвращает 401.
Формат ключа
Ключ — это префикс, за которым следуют ровно 32 строчных шестнадцатеричных символа:
| Префикс | Значение | Пример |
|---|---|---|
rnv_live_ | Боевой ключ, полный доступ к своему проекту | rnv_live_00112233445566778899aabbccddeeff |
rnv_test_ | Тестовый ключ, более низкие лимиты частоты | rnv_test_2f8c41a6d90b47e3ba15c7e08d3f6a24 |
Полный шаблон — rnv_(live|test)_[0-9a-f]{32}. Всё, что не соответствует этой форме,
отклоняется как invalid_api_key ещё до поиска, так что обрезанный или неверно
набранный ключ падает быстро.
Публичный демо-ключ
Этот ключ намеренно публичен. Он может только читать демо-поток, не может публиковать и ограничен 60 запросами в минуту с одного IP. Его безопасно помещать в клиентский код, и именно он питает живую демонстрацию на главной странице.
rnv_test_2f8c41a6d90b47e3ba15c7e08d3f6a24
Как выглядят отказы
Проблемы аутентификации возвращают структурированную ошибку. Три, с которыми вы столкнётесь:
Отсутствующий ключ
{
"error": {
"type": "authentication_error",
"code": "missing_api_key",
"message": "No API key was provided. Send it as: Authorization: Bearer rnv_live_...",
"request_id": "req_0Kj2wq8ULn4mAe1s",
"doc_url": "https://runnev.dev/docs/errors#missing_api_key"
}
}
Некорректный или неизвестный ключ
{
"error": {
"type": "authentication_error",
"code": "invalid_api_key",
"message": "The API key is malformed or does not exist.",
"request_id": "req_7Za1popL2mn4Ae0s",
"doc_url": "https://runnev.dev/docs/errors#invalid_api_key"
}
}
Валидный ключ, чужой проект
Ключ принадлежит одному проекту. Его использование против потока в другом проекте возвращает
403 с project_forbidden. Это отличается от 404: поток
существует, просто вашему ключу нельзя его трогать.
{
"error": {
"type": "authentication_error",
"code": "project_forbidden",
"message": "This key cannot access streams in another project.",
"request_id": "req_Q3ee1l0Pmn4bAe2s",
"doc_url": "https://runnev.dev/docs/errors#project_forbidden"
}
}
Ротация и отзыв
Создавайте ключи в панели управления и отзывайте их там же. Отозванный ключ при следующем
использовании возвращает 401 с key_revoked. Ротируйте без простоя,
выпустив новый ключ, задеплоив его и отозвав старый, когда трафик переключится. Ключи не несут
собственного срока действия; ключ валиден, пока вы его не отзовёте.
Ключ rnv_live_ может публиковать и удалять. Никогда не помещайте его в
браузерный бандл, мобильное приложение или публичный репозиторий. Для всего, что может прочитать
клиентское устройство, используйте демо-ключ только для чтения или выпустите узко ограниченный
ключ и относитесь к нему как к публичному. Если ключ утёк — отзовите его; это всё лечение.