Real-Time API

Аудиторные данные в реальном времени

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

Стриминг данных в реальном времени

Подключитесь к WebSocket и получайте данные об аудитории каждые 500 мс: количество людей у экрана, демография, трекинг-события. Задержка от камеры до API — менее 100 мс.

Подключение — JavaScript
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);
  }
};
Ответ сервера — tracking (каждые 500 мс)
{
  "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_activeintКоличество объектов у экрана прямо сейчас
by_classobjectРазбивка по типу: person, car, bus, truck
by_genderobjectРазбивка по полу: male, female
by_age_groupobjectРазбивка по возрасту: child, young, adult, senior
by_cameraobjectРазбивка по камерам
REST API

OTS и аудиторная статистика

REST API для получения агрегированных метрик: OTS за любой период, почасовая статистика, демография, экспорт в CSV. Все данные с настраиваемыми OTS-коэффициентами.

GET /statistics/ots — 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 по интервалам
{
  "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
  }
}
GET /statistics/summary — Сводка за 24 часа
{
  "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/otsOTS за произвольный период с коэффициентами
GET/statistics/ots/adblocksOTS по рекламным блокам (5-60 сек)
GET/statistics/summaryСводка за последние 24 часа
GET/statistics/hourlyПочасовая агрегация с демографией
GET/statistics/eventsПагинированный список трекинг-событий
GET/statistics/export/csvЭкспорт событий в CSV
Media Matching

Привязка аудитории к каждому ролику

CMS плеера сообщает, какой ролик воспроизводится. Кубик Метрика автоматически матчит аудиторные данные с каждым показом: сколько людей видели ролик, кто они, сколько секунд смотрели.

POST /api/player/event — 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
}
GET /statistics/media — OTS по каждому показу
{
  "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/{media_id} — Детальная статистика ролика
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/eventPush-событие от CMS (начало/конец ролика)
POST/api/player/playbackПолный playback пост-фактум
GET/api/player/now-playingЧто воспроизводится прямо сейчас
GET/api/player/historyИстория воспроизведений с пагинацией
GET/statistics/mediaOTS и демография по каждому показу
GET/statistics/media/detail/{id}Детальная статистика по ролику
GET/statistics/media/export/csvЭкспорт медиа-статистики в CSV
Programmatic

Интеграция с 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

01

Камера + AI

Edge-устройство детектирует аудиторию и определяет демографию в реальном времени

02

WebSocket / API

Данные передаются через WebSocket (real-time) или REST API (по запросу)

03

SSP / Ad Server

Платформа использует аудиторные данные для формирования bid request или выбора контента

04

Отчёт

Post-campaign: verified OTS, демография, attention time по каждому креативу

Справочник

Модели данных

Tracking Event

Каждый объект, зафиксированный в зоне детекции. Создаётся при выходе объекта из зоны.

ПолеТипОписание
tracker_idintУникальный ID трека в рамках сессии
class_namestringperson | car | bus | truck
camera_idstringID камеры
zone_idstringID зоны детекции
timestamp_inISO 8601Время появления объекта
timestamp_outISO 8601Время ухода объекта
duration_secfloatДлительность контакта в секундах
genderstring?male | female (только для person)
age_groupstring?child | young | adult | senior
age_estimateint?Оценка возраста (18-80)

OTS-коэффициенты

Коэффициенты учитывают среднее количество пассажиров в транспорте. Настраиваются через API.

1.0
Person
1 человек = 1 контакт
2.0
Car
В среднем 2 пассажира
25.0
Bus
В среднем 25 пассажиров
1.2
Truck
Водитель + пассажир
Начать

Интегрируйте Real-Time API

Оставьте заявку — предоставим доступ к API и поможем с интеграцией