РусскийПользовательский APIЛиды, журнал и статистика

Эндпоинты лидов, журнала и статистики

Экспорт конверсий, просмотр необработанного журнала активности в чате и получение агрегированной статистики.


Статусы лидов

Все поля фильтрации и ответов, связанные со статусом лида, используют числовые коды.

КодНазваниеЗначение
0waitПодписчик открыл ссылку бота, но ещё не вступил в чат
1holdОтправил заявку на вступление, ожидает одобрения администратора
2approveВступил в чат (или заявка была одобрена)
3cancelПокинул чат добровольно
4trashИсключён или забанен в чате

Полные правила переходов и условия отправки постбэков — в разделе Жизненный цикл лида.


Список лидов

GET /api/leads/list.json

Возвращает лиды, соответствующие фильтрам, от новых к старым.

ПараметрОписание
campaignФильтр по ID кампании
statusФильтр по коду статуса лида (0–4)
fromНачало диапазона дат (Unix timestamp)
toКонец диапазона дат (Unix timestamp)
limitРазмер страницы (по умолчанию 50, максимум 200)
offsetСмещение для пагинации
{
  "status": "ok",
  "data": [
    {
      "id": 1001,
      "campaign": 12,
      "subscriber": 9876543210,
      "username": "alice",
      "click": "abc456xyz",
      "status": 2,
      "start_time": "2026-05-20 10:00:00",
      "join_time": "2026-05-20 10:01:00",
      "updated": "2026-05-20 10:01:00"
    }
  ],
  "total": 1
}

username — пустая строка, если у подписчика нет username в Telegram. click — пустая строка, если подписчик пришёл без click-payload (например, открыл ссылку бота напрямую, а не через диплинк). join_time равен "0000-00-00 00:00:00", пока лид находится в статусе wait или hold.


Журнал активности в чате

GET /api/journal/list.json

Возвращает все события вступления и выхода, зафиксированные в чате, — включая органическую активность (пользователи, вступившие без запуска бота). Это необработанный источник динамики канала; органические события не создают лидов и не отправляют постбэки.

ПараметрОбязательныйОписание
botID бота
chatID чата (Telegram)
actionФильтр по типу действия (см. таблицу ниже)
fromНачало диапазона дат (Unix timestamp)
toКонец диапазона дат (Unix timestamp)
limitРазмер страницы (по умолчанию 50, максимум 200)
offsetСмещение для пагинации
{
  "status": "ok",
  "data": [
    {
      "id": 5001,
      "subscriber": 9876543210,
      "username": "alice",
      "action": "join",
      "paid": 1,
      "time": "2026-05-20 10:01:00"
    }
  ],
  "total": 1
}
actionЗначение
joinПодписчик вступил в чат
leaveПодписчик покинул чат добровольно
banПодписчик был исключён или забанен
requestПодписчик отправил заявку на вступление
approveЗаявка на вступление одобрена администратором

paid равен 1, когда событие соответствует отслеживаемому лиду (подписчик запустил бота), и 0 для органической активности.


Сводная статистика

GET /api/stats/summary.json

Агрегированные счётчики по всем кампаниям или одной кампании.

ПараметрОписание
campaignФильтр по одной кампании (не указывайте для статистики по всему аккаунту)
fromНачало диапазона дат (Unix timestamp)
toКонец диапазона дат (Unix timestamp)
{
  "status": "ok",
  "data": {
    "starts": 500,
    "holds": 12,
    "confirms": 420,
    "cancels": 35,
    "trashes": 8,
    "cr": 84.0,
    "organic_joins": 150,
    "organic_leaves": 42
  }
}

cr — конверсия: confirms / starts × 100, округлённая до одного знака после запятой. organic_joins и organic_leaves — активность, не связанная ни с одним лидом.


Временной ряд по дням

GET /api/stats/series.json

Счётчики по дням для построения графиков. Принимает те же фильтры, что и summary.

ПараметрОписание
campaignФильтр по одной кампании
fromНачало диапазона дат (Unix timestamp)
toКонец диапазона дат (Unix timestamp)
{
  "status": "ok",
  "data": [
    { "date": "2026-05-20", "starts": 22, "confirms": 19, "cancels": 2, "trashes": 0, "organic": 8 },
    { "date": "2026-05-21", "starts": 18, "confirms": 15, "cancels": 1, "trashes": 1, "organic": 5 }
  ]
}

Прошедшие дни берутся из предагрегированных дневных свёрток. Строка за сегодня вычисляется в реальном времени на основе сырых событий, поэтому её данные обновляются непрерывно в течение дня.