Эндпоинты кампаний и медиа

Создание, редактирование и управление кампаниями, получение диплинка для подписчиков и загрузка приветственного медиа.


Список кампаний

GET /api/camp/list.json

Возвращает все неудалённые кампании с агрегированными счётчиками.

{
  "status": "ok",
  "data": [
    {
      "id": 12,
      "code": "abc123",
      "bot": 7,
      "bot_username": "mytrackbot",
      "chat": -1001234567890,
      "chat_title": "My Channel",
      "status": 0,
      "starts": 120,
      "confirms": 98,
      "unsubs": 12,
      "created": "2026-05-10 09:00:00"
    }
  ]
}
statusЗначение
0Активна
1На паузе
2Удалена (мягко — лиды и статистика сохраняются)

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

GET /api/camp/get.json

Возвращает полную запись кампании, включая шаблоны постбэков и окно отписки.

ПараметрОписание
idID кампании
{
  "status": "ok",
  "data": {
    "id": 12,
    "code": "abc123",
    "bot": 7,
    "bot_username": "mytrackbot",
    "chat": -1001234567890,
    "chat_title": "My Channel",
    "status": 0,
    "welcome": "Join *{title}* — exclusive content inside!",
    "media": "",
    "button_text": "Get access",
    "button_url": "https://example.com/lander?click={click}",
    "pb_wait": "",
    "pb_hold": "",
    "pb_approve": "",
    "pb_cancel": "",
    "pb_trash": "",
    "unsub_window": 2592000,
    "starts": 120,
    "confirms": 98,
    "unsubs": 12,
    "created": "2026-05-10 09:00:00"
  }
}

Пустые поля pb_* означают, что кампания наследует глобальные шаблоны постбэков. unsub_window — в секундах; 0 означает, что окно никогда не закрывается (постбэки cancel/trash отправляются всегда, независимо от времени отписки).


Создать кампанию

POST /api/camp/add.json

Создаёт новую кампанию. chat должен быть получен из bots/chats — это должен быть чат, где выбранный бот является администратором и который ещё не отслеживается другой кампанией.

ПараметрОбязательныйОписание
botID бота
chatID чата (из bots/chats)
welcomeТекст приветственного сообщения (Telegram Markdown)
mediaСсылка на медиа из media/upload; не указывается для текстового сообщения
button_textПодпись CPA-кнопки в приветственном сообщении
button_urlURL CPA-кнопки — может содержать {click} и другие макросы
pb_waitШаблон URL постбэка для события wait
pb_holdШаблон URL постбэка для события hold
pb_approveШаблон URL постбэка для события approve
pb_cancelШаблон URL постбэка для события cancel
pb_trashШаблон URL постбэка для события trash
unsub_windowСекунд после вступления, в течение которых отправляются постбэки cancel/trash; 0 = всегда
notify_levelУровень уведомлений о лидах: 0 выключено (по умолчанию), 1 только approve, 2 approve + wait, 3 все статусы
{ "status": "ok", "data": { "id": 12, "code": "abc123" } }

Правило переопределения постбэков: если задан хотя бы один pb_*, кампания использует собственные шаблоны для всех пяти событий (пустой шаблон отключает соответствующее событие). Если все пять pb_* оставлены пустыми, кампания наследует глобальные шаблоны.

ОшибкаЗначение
existsЭтот чат уже отслеживается другой кампанией
nochatНет свободных слотов для чата у выбранного бота
limitДостигнут лимит кампаний по тарифу — повысьте тариф в разделе Оплата

Изменить кампанию

POST /api/camp/edit.json

Обновляет приветственный креатив, шаблоны постбэков или окно отписки. Бот и чат после создания изменить нельзя.

ПараметрОбязательныйОписание
idID кампании
welcomeНовый текст приветственного сообщения
mediaНовая ссылка на медиа (передайте "", чтобы удалить текущее медиа)
button_textНовая подпись CPA-кнопки
button_urlНовый URL CPA-кнопки
pb_waitpb_trashНовые шаблоны URL постбэков (все пять перезаписываются одновременно)
unsub_windowНовое окно отписки в секундах
notify_levelНовый уровень уведомлений о лидах (0–3)
{ "status": "ok" }

Получить диплинк

GET /api/camp/link.json

Возвращает диплинк для подписчиков данной кампании. Распространяйте эту ссылку через источники трафика — когда подписчик открывает её, бот приветствует его и конверсия фиксируется.

ПараметрОписание
idID кампании
clickНеобязательный click ID для вставки в ссылку
{
  "status": "ok",
  "data": {
    "link": "https://t.me/mytrackbot?start=abc123-{click}"
  }
}

Если передать click, этот ID будет вставлен в возвращаемую ссылку напрямую: https://t.me/mytrackbot?start=abc123-xyz789. Если click не передан, плейсхолдер {click} остаётся в ссылке — для последующей подстановки перед распространением.


Поставить на паузу или возобновить

POST /api/camp/pause.json

ПараметрОписание
idID кампании
pause1 — поставить на паузу, 0 — возобновить
{ "status": "ok" }

Удалить кампанию

POST /api/camp/del.json

Мягко удаляет кампанию. Существующие лиды, записи журнала и статистика сохраняются и продолжают ссылаться на кампанию.

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

Загрузить медиа

POST /api/media/upload.json

Загружает изображение или видео для использования в качестве приветственного медиа кампании. Возвращает ссылку на медиа для передачи при создании или редактировании кампании.

Отправляйте как multipart/form-data, файл — в поле file.

{ "status": "ok", "data": { "media": "img_abc123xyz" } }

Передайте возвращённое значение media как параметр media в camp/add или camp/edit.