Эндпоинты кампаний и медиа
Создание, редактирование и управление кампаниями, получение диплинка для подписчиков и загрузка приветственного медиа.
Список кампаний
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
Возвращает полную запись кампании, включая шаблоны постбэков и окно отписки.
| Параметр | Описание |
|---|---|
id | ID кампании |
{
"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 — это должен быть чат, где выбранный
бот является администратором и который ещё не отслеживается другой кампанией.
| Параметр | Обязательный | Описание |
|---|---|---|
bot | ✓ | ID бота |
chat | ✓ | ID чата (из bots/chats) |
welcome | ✓ | Текст приветственного сообщения (Telegram Markdown) |
media | Ссылка на медиа из media/upload; не указывается для текстового сообщения | |
button_text | Подпись CPA-кнопки в приветственном сообщении | |
button_url | URL 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
Обновляет приветственный креатив, шаблоны постбэков или окно отписки. Бот и чат после создания изменить нельзя.
| Параметр | Обязательный | Описание |
|---|---|---|
id | ✓ | ID кампании |
welcome | Новый текст приветственного сообщения | |
media | Новая ссылка на медиа (передайте "", чтобы удалить текущее медиа) | |
button_text | Новая подпись CPA-кнопки | |
button_url | Новый URL CPA-кнопки | |
pb_wait — pb_trash | Новые шаблоны URL постбэков (все пять перезаписываются одновременно) | |
unsub_window | Новое окно отписки в секундах | |
notify_level | Новый уровень уведомлений о лидах (0–3) |
{ "status": "ok" }Получить диплинк
GET /api/camp/link.json
Возвращает диплинк для подписчиков данной кампании. Распространяйте эту ссылку через источники трафика — когда подписчик открывает её, бот приветствует его и конверсия фиксируется.
| Параметр | Описание |
|---|---|
id | ID кампании |
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
| Параметр | Описание |
|---|---|
id | ID кампании |
pause | 1 — поставить на паузу, 0 — возобновить |
{ "status": "ok" }Удалить кампанию
POST /api/camp/del.json
Мягко удаляет кампанию. Существующие лиды, записи журнала и статистика сохраняются и продолжают ссылаться на кампанию.
| Параметр | Описание |
|---|---|
id | ID кампании |
{ "status": "ok" }Загрузить медиа
POST /api/media/upload.json
Загружает изображение или видео для использования в качестве приветственного медиа кампании. Возвращает ссылку на медиа для передачи при создании или редактировании кампании.
Отправляйте как multipart/form-data, файл — в поле file.
{ "status": "ok", "data": { "media": "img_abc123xyz" } }Передайте возвращённое значение media как параметр media в camp/add или camp/edit.