Аудиторные данные в реальном времени
WebSocket стриминг и REST API для интеграции с programmatic-платформами, DSP, SSP и аналитическими системами
От «сколько показали» к «кто смотрит прямо сейчас»
Programmatic DOOH требует данных в реальном времени: кто стоит у экрана, сколько людей, какая демография. Кубик Метрика передаёт эти данные через WebSocket и REST API — готовые для интеграции с DSP, SSP и любыми аналитическими платформами.
Programmatic DOOH
Real-time аудиторные данные для динамической закупки рекламы. SSP получает verified impressions в момент показа.
Интеграция с DSP
Подключение к demand-side платформам: аудиторные сегменты, демография, attention time — для таргетированной закупки.
Post-campaign отчёты
REST API для построения отчётов: OTS по каждому ролику, демография аудитории, эффективность кампании.
Мониторинг сети
Дашборды реального времени для управления сетью экранов. Мгновенные алерты при падении аудитории.
Audience Triggers
Запуск контента по условию: показать рекламу когда у экрана мужчины 25-34 или когда аудитория больше 5 человек.
Верификация
Proof of play + proof of audience. Независимая верификация для рекламодателей: ролик показан, аудитория подтверждена.
Стриминг данных в реальном времени
Подключитесь к WebSocket и получайте данные об аудитории каждые 500 мс: количество людей у экрана, демография, трекинг-события. Задержка от камеры до API — менее 100 мс.
const ws = new WebSocket("ws://edge-device:80/api/rknn-ots/ws");
ws.onopen = () => {
// Подписка на камеру
ws.send(JSON.stringify({
type: "subscribe",
camera_id: "cam_001"
}));
};
ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
if (msg.type === "tracking") {
console.log("Аудитория:", msg.data.active_tracks);
console.log("События:", msg.data.recent_events);
}
};{
"type": "tracking",
"data": {
"active_tracks": {
"total_active": 5,
"by_class": { "person": 4, "car": 1 },
"by_camera": { "cam_001": 5 },
"by_gender": { "male": 3, "female": 1 },
"by_age_group": { "young": 1, "adult": 3 }
},
"recent_events": [
{
"tracker_id": 42,
"class_name": "person",
"camera_id": "cam_001",
"zone_id": "zone_entrance",
"timestamp_in": "2026-02-06T14:30:00",
"timestamp_out": "2026-02-06T14:30:08",
"duration_sec": 8.2,
"gender": "male",
"age_group": "adult",
"age_estimate": 32
}
]
}
}Модель данных: Active Tracks
| Поле | Тип | Описание |
|---|---|---|
| total_active | int | Количество объектов у экрана прямо сейчас |
| by_class | object | Разбивка по типу: person, car, bus, truck |
| by_gender | object | Разбивка по полу: male, female |
| by_age_group | object | Разбивка по возрасту: child, young, adult, senior |
| by_camera | object | Разбивка по камерам |
OTS и аудиторная статистика
REST API для получения агрегированных метрик: OTS за любой период, почасовая статистика, демография, экспорт в CSV. Все данные с настраиваемыми OTS-коэффициентами.
GET /statistics/ots?start_date=2026-02-06T08:00:00
&end_date=2026-02-06T20:00:00
&interval_min=15
&person=1.0&car=2.0&bus=25.0&truck=1.2{
"ots_series": [
{
"time": "2026-02-06T08:00:00",
"ots": 45.5,
"by_class": { "person": 38, "car": 3, "bus": 0, "truck": 1 }
},
{
"time": "2026-02-06T08:15:00",
"ots": 62.8,
"by_class": { "person": 51, "car": 4, "bus": 0, "truck": 2 }
}
],
"total_ots": 1847.3,
"total_events": 420,
"coefficients": {
"person": 1.0,
"car": 2.0,
"bus": 25.0,
"truck": 1.2
},
"period": {
"start": "2026-02-06T08:00:00",
"end": "2026-02-06T20:00:00",
"interval_min": 15
}
}{
"summary": {
"unique_objects": 1250,
"class_distribution": {
"person": 980, "car": 210, "bus": 35, "truck": 25
},
"avg_duration_sec": 4.8,
"gender_distribution": { "male": 540, "female": 440 },
"age_distribution": {
"child": 85, "young": 320, "adult": 480, "senior": 95
}
},
"total_records": 1250,
"period": { "hours": 24 }
}Доступные эндпоинты статистики
| Метод | Эндпоинт | Описание |
|---|---|---|
| GET | /statistics/ots | OTS за произвольный период с коэффициентами |
| GET | /statistics/ots/adblocks | OTS по рекламным блокам (5-60 сек) |
| GET | /statistics/summary | Сводка за последние 24 часа |
| GET | /statistics/hourly | Почасовая агрегация с демографией |
| GET | /statistics/events | Пагинированный список трекинг-событий |
| GET | /statistics/export/csv | Экспорт событий в CSV |
Привязка аудитории к каждому ролику
CMS плеера сообщает, какой ролик воспроизводится. Кубик Метрика автоматически матчит аудиторные данные с каждым показом: сколько людей видели ролик, кто они, сколько секунд смотрели.
POST /api/player/event
Content-Type: application/json
{
"event_type": "media_start",
"media_id": "coca_cola_summer_2026",
"media_name": "Coca-Cola — Лето 2026",
"creative_id": "CC-RU-30s-v2",
"player_id": "player_store_42",
"duration_sec": 30
}{
"media_playbacks": [
{
"playback_id": "a1b2c3d4-e5f6-7890",
"media_id": "coca_cola_summer_2026",
"media_name": "Coca-Cola — Лето 2026",
"creative_id": "CC-RU-30s-v2",
"started_at": "2026-02-06T14:30:00",
"ended_at": "2026-02-06T14:30:30",
"duration_sec": 30.0,
"total_ots": 12.0,
"total_objects": 12,
"by_class": { "person": 12 },
"by_gender": { "male": 7, "female": 5 },
"by_age_group": {
"young": 3, "adult": 8, "senior": 1
}
}
],
"summary": {
"total_playbacks": 48,
"total_ots": 576.0,
"avg_ots_per_playback": 12.0,
"unique_media": 8
}
}GET /statistics/media/detail/coca_cola_summer_2026?period=24h
{
"media_id": "coca_cola_summer_2026",
"media_name": "Coca-Cola — Лето 2026",
"playbacks": [
{
"playback_id": "a1b2c3d4",
"started_at": "2026-02-06T14:30:00",
"duration_sec": 30.0,
"total_ots": 12.0,
"by_gender": { "male": 7, "female": 5 },
"by_age_group": { "young": 3, "adult": 8, "senior": 1 }
}
],
"summary": {
"total_playbacks": 48,
"total_ots": 576.0,
"avg_ots_per_playback": 12.0,
"min_ots": 3.0,
"max_ots": 22.0
}
}Эндпоинты Media Matching
| Метод | Эндпоинт | Описание |
|---|---|---|
| POST | /api/player/event | Push-событие от CMS (начало/конец ролика) |
| POST | /api/player/playback | Полный playback пост-фактум |
| GET | /api/player/now-playing | Что воспроизводится прямо сейчас |
| GET | /api/player/history | История воспроизведений с пагинацией |
| GET | /statistics/media | OTS и демография по каждому показу |
| GET | /statistics/media/detail/{id} | Детальная статистика по ролику |
| GET | /statistics/media/export/csv | Экспорт медиа-статистики в CSV |
Интеграция с programmatic-экосистемой
Данные Кубик Метрика готовы для programmatic закупки рекламы — от SSP до отчётов для рекламодателей
Supply Side (SSP)
- Real-time аудиторные данные для bid requests: сколько людей у экрана, демография
- Verified impressions — подтверждённые показы вместо оценочных
- Audience segments: пол, возрастная группа, время суток
- Автоматические audience triggers: запуск контента при совпадении аудитории с таргетом
- Hourly reach и frequency — охват и частота контактов по часам
Demand Side (DSP)
- Post-campaign отчёты с verified OTS по каждому креативу
- Демографический профиль аудитории: кто видел рекламу (пол, возраст)
- Attention time — среднее время контакта с рекламой
- Сравнение эффективности креативов по OTS и демографии
- CSV и JSON экспорт для загрузки в аналитические платформы
Поток данных для programmatic
Камера + AI
Edge-устройство детектирует аудиторию и определяет демографию в реальном времени
WebSocket / API
Данные передаются через WebSocket (real-time) или REST API (по запросу)
SSP / Ad Server
Платформа использует аудиторные данные для формирования bid request или выбора контента
Отчёт
Post-campaign: verified OTS, демография, attention time по каждому креативу
Модели данных
Tracking Event
Каждый объект, зафиксированный в зоне детекции. Создаётся при выходе объекта из зоны.
| Поле | Тип | Описание |
|---|---|---|
| tracker_id | int | Уникальный ID трека в рамках сессии |
| class_name | string | person | car | bus | truck |
| camera_id | string | ID камеры |
| zone_id | string | ID зоны детекции |
| timestamp_in | ISO 8601 | Время появления объекта |
| timestamp_out | ISO 8601 | Время ухода объекта |
| duration_sec | float | Длительность контакта в секундах |
| gender | string? | male | female (только для person) |
| age_group | string? | child | young | adult | senior |
| age_estimate | int? | Оценка возраста (18-80) |
OTS-коэффициенты
Коэффициенты учитывают среднее количество пассажиров в транспорте. Настраиваются через API.
Узнайте больше:
Интегрируйте Real-Time API
Оставьте заявку — предоставим доступ к API и поможем с интеграцией