HTTP API
REST · JSON · Bearer-токен · лимит 600 запросов/мин
⌘
Аутентификация
Передавайте токен узла в заголовке Authorization: Bearer <key>. Ключи выдаются в консоли камеры.
⇄
Базовый адрес
https://<host>/api/v4 — все методы возвращают JSON, кроме потоковых эндпоинтов.
⌁
Поток
Эндпоинт /api/stream отдаёт бесконечный бинарный поток телеметрии без сохранения на узле.
Эндпоинты
GET/api/cameras
{
"items": [
{ "id": "CAM-01", "name": "Парковка A", "state": "online", "fps": 25, "bitrate_kbps": 4200 },
{ "id": "CAM-02", "name": "Лобби", "state": "online", "fps": 25, "bitrate_kbps": 3800 },
{ "id": "CAM-04", "name": "Северные ворота", "state": "no_signal" }
],
"total": 20
}
GET/api/cameras/{id}
POST/api/cameras/{id}/recordings
{
"camera": "CAM-04",
"from": "2026-11-10T00:00:00Z",
"to": "2026-11-10T06:00:00Z",
"profile": "h265_2k",
"retention_days": 14
}
GET/api/events?from=…&type=motion
GET/api/stream
HTTP/1.1 200 OK Content-Type: application/octet-stream Transfer-Encoding: chunked Cache-Control: no-store Content-Encoding: identity <binary stream — ~10 MB/s, generated in memory, never written to disk>
Коды ошибок
| Код | Значение | Что делать |
|---|---|---|
| 401 | Неверный или истёкший токен | Обновите ключ в консоли |
| 404 | Камера или запись не найдены | Проверьте ID устройства |
| 409 | Конфликт профиля записи | Дождитесь завершения текущей задачи |
| 429 | Превышен лимит запросов | Экспоненциальный backoff |
| 503 | Узел недоступен | Повторите через 5–30 с |
Потоковые эндпоинты не поддерживают
Content-Length: соединение живёт до отключения клиента.
Для мобильных сетей используйте «облегчённый» профиль с меньшим битрейтом.