Эндпоинты рассылок

Настройка триггерных дожимов по статусам кампании и создание и запуск ручных массовых рассылок. Концепции — в руководстве по рассылкам; эта страница — справочник по API.

Все эндпоинты рассылок требуют активной оплаченной сессии и функции рассылки на тарифе. Включение триггерного блока или запуск ручной рассылки на тарифе без этой функции вернёт error: broadcasts.


Конфигурация триггерных

Блоки сообщений по кампании и статусу. Пять статусов, по одному блоку: 0 wait · 1 hold · 2 approve · 3 cancel · 4 trash.

Получить блоки кампании

GET /api/camp/broadcast.json

Возвращает все пять блоков. Статусы без блока приходят как нулевой блок (on: 0).

ПараметрОписание
idID кампании
{
  "status": "ok",
  "data": [
    { "status": 0, "on": 1, "delay": 1800,
      "text": "Добро пожаловать! Жмите кнопку ниже 👇",
      "media": "", "media_type": 0,
      "button": "Открыть", "link": "https://example.com/l?click={click}" },
    { "status": 1, "on": 0, "delay": 0, "text": "", "media": "", "media_type": 0, "button": "", "link": "" },
    { "status": 2, "on": 0, "delay": 0, "text": "", "media": "", "media_type": 0, "button": "", "link": "" },
    { "status": 3, "on": 0, "delay": 0, "text": "", "media": "", "media_type": 0, "button": "", "link": "" },
    { "status": 4, "on": 0, "delay": 0, "text": "", "media": "", "media_type": 0, "button": "", "link": "" }
  ]
}

delay — в секундах после попадания лида в статус. media_type: 0 нет, 1 фото, 2 видео.

Сохранить один блок

POST /api/camp/broadcast.json

Создаёт/обновляет блок одного статуса.

ПараметрОбязателенОписание
idID кампании
statusСтатус лида 04
on1 включить, 0 выключить
delayСекунды после попадания в статус до отправки
textТекст сообщения (Telegram Markdown)
mediaСсылка на медиа из media/upload; "" если нет
media_type1 фото, 2 видео (из ответа загрузки)
buttonПодпись кнопки
linkURL кнопки (можно с макросами)
{ "status": "ok" }

Включение блока (on=1) требует функции рассылок → иначе error: broadcasts. Выключение или правка уже выключенного блока разрешены всегда (чтобы при понижении тарифа блок можно было выключить).

Отправить блок себе

POST /api/camp/btest.json

Доставляет превью одного сохранённого блока статуса в Telegram авторизованного пользователя через сервисного бота (только текст и кнопка — медиа не включается).

ПараметрОбязателенОписание
idID кампании
statusСтатус лида 04
{ "status": "ok" }

Ручные рассылки

Рассылка создаётся как черновик, редактируется, затем запускается. Статусы: 0 черновик · 1 идёт · 2 готово · 3 отменена · 4 пауза.

Список рассылок

GET /api/broadcast/list.json

Возвращает рассылки пользователя, новые сверху, с живыми счётчиками.

{
  "status": "ok",
  "data": [
    {
      "id": 5,
      "name": "Майский возврат",
      "status": 1,
      "statuses": 24,
      "campaigns": [],
      "total": 1240,
      "sent": 800,
      "queued": 440,
      "failed": 0,
      "started": 1717500000,
      "created": 1717490000
    }
  ]
}

statusesбитовая маска целевых статусов лида (бит 0 wait … бит 4 trash); 24 = биты 3+4 = cancel + trash. campaigns — список кампаний-области (пусто = все). Время — unix-секунды (0 = не задано).

Шкала дневного лимита

GET /api/broadcast/quota.json

{ "status": "ok", "data": { "cap": 500, "used": 120, "queued": 440 } }
ПолеЗначение
capДневной лимит ручных отправок из тарифа; 0 = без ограничений
usedРучных сообщений отправлено сегодня (день по UTC)
queuedСообщений (обоих видов), ждущих в очереди отправки

Получить одну рассылку

GET /api/broadcast/get.json

Возвращает рассылку целиком, включая область кампаний и фильтры. Для незапущенной рассылки также пересчитывает total (живая аудитория) и remaining (размер Доделать — лиды, ещё не охваченные).

ПараметрОписание
idID рассылки
{
  "status": "ok",
  "data": {
    "id": 5, "name": "Майский возврат", "status": 2, "statuses": 24,
    "campaigns": [12, 18],
    "created_from": 0, "created_to": 0,
    "status_from": 1714521600, "status_to": 1717113600,
    "text": "Мы скучаем — держите скидку 20% 🎁",
    "media": "", "media_type": 0,
    "button": "Забрать", "link": "https://example.com/back?click={click}",
    "total": 1300, "remaining": 60,
    "queued": 0, "sent": 1240, "failed": 0,
    "started": 1717500000, "created": 1717490000
  }
}

Создать черновик

POST /api/broadcast/add.json

ПараметрОписание
nameНеобязательное название
{ "status": "ok", "data": { "id": 5 } }

Изменить рассылку

POST /api/broadcast/edit.json

Заменяет поля рассылки и область кампаний. Разрешено в любом состоянии — тело берётся в момент отправки, поэтому правка идущей рассылки влияет на ещё не ушедшие сообщения.

ПараметрОписание
idID рассылки
nameНазвание
statusesБитовая маска целевых статусов (бит 0 wait … бит 4 trash)
campaignsID кампаний через запятую; пусто = все ваши кампании
created_from / created_toФильтр по времени появления лида (unix; 0 = без границы)
status_from / status_toФильтр по времени смены статуса лида (unix; 0 = без границы)
textТекст сообщения (Telegram Markdown)
media / media_typeСсылка на медиа из media/upload и её тип
button / linkПодпись кнопки + URL (можно с макросами)
{ "status": "ok" }

Запуск (всегда «доделать»)

POST /api/broadcast/start.json

Ставит аудиторию в очередь и переводит рассылку в идёт. Это всегда доделать: в очередь попадают только лиды, которых рассылка ещё не охватила, поэтому повторный запуск готово/отменена рассылки уйдёт только новым лидам. Разрешено из черновик/готово/отменена; рассылка в состоянии идёт/пауза вернёт error: state.

ПараметрОписание
idID рассылки
{ "status": "ok", "data": { "queued": 60 } }

queued — число поставленных в очередь сообщений. 0 означает, что охватывать было некого, и статус рассылки не меняется.

Пауза / Продолжить

POST /api/broadcast/pause.jsonидёт → пауза; неотправленные сообщения паркуются и сохраняются.

POST /api/broadcast/resume.jsonпауза → идёт; запаркованные сообщения снова становятся актуальными, и отправка продолжается ровно с места остановки.

ПараметрОписание
idID рассылки
{ "status": "ok" }

Пауза для не идущей рассылки вернёт error: state.

Остановить (отмена)

POST /api/broadcast/cancel.json

идёт/пауза → отменена; сбрасывает остаток сообщений в очереди. Множество уже охваченных лидов сохраняется, поэтому будущий запуск Доделать им не напишет повторно.

ПараметрОписание
idID рассылки
{ "status": "ok" }

Сбросить

POST /api/broadcast/reset.json

Очищает множество охваченных лидов и счётчики и возвращает готово/отменена рассылку в черновик, сохраняя название, фильтры и тело. Следующий запуск тогда переотправит всей аудитории.

ПараметрОписание
idID рассылки
{ "status": "ok" }

Удалить

POST /api/broadcast/del.json

Удаляет не идущую рассылку и её область, очередь и записи об охвате. Идущую рассылку нужно сначала остановить.

ПараметрОписание
idID рассылки
{ "status": "ok" }

Отправить себе

POST /api/broadcast/test.json

Доставляет превью тела рассылки авторизованному пользователю через сервисного бота (только текст и кнопка — медиа не включается).

ПараметрОписание
idID рассылки
{ "status": "ok" }

Ошибки

ОшибкаЗначение
broadcastsФункция рассылок не включена на тарифе — повысьте тариф
stateДействие недопустимо для текущего статуса рассылки (например, запуск идущей)
accessРассылка или кампания не ваша
funcОтсутствует или неверен обязательный параметр
unpaidПодписка неактивна