Broadcast (массовая рассылка)
Отправка сообщения всем подписчикам или сегменту.
POST /v1/broadcast
Создаёт задачу рассылки. Сообщения отправляются через очередь.
text string обязательныйТекст сообщения
format string Формат текста: plain (по умолчанию), markdown или html
media object Объект медиа: {type, url}. Типы: photo, video, document
buttons array Массив рядов кнопок: [[{text, url}]] или [[{text, callback_data}]]
permission string Фильтр по permission
tags array Фильтр по тегам: ["vip", "beta"]
tags_all array AND-фильтр: подписчик должен иметь ВСЕ перечисленные теги
tags_any array OR-фильтр: подписчик должен иметь хотя бы один из тегов
exclude_tags array Исключить подписчиков с любым из этих тегов
exclude_permissions array Исключить подписчиков с любым из этих разрешений
messages_per_minute number Ограничение скорости (сообщений/мин). По умолчанию — максимально по квоте бота
dry_run boolean true — предпросмотр без отправки: вернёт аудиторию, кредиты и пример сообщения
Ответ
Предпросмотр (dry-run)
С dry_run: true рассылка не создаётся — возвращается оценка аудитории, кредитов и пример отрендеренного сообщения. Удобно проверить фильтры перед отправкой.
Ответ
GET /v1/broadcast/:job_id
Получение статуса рассылки.
Поля ответа: status (pending/processing/completed/failed/cancelled), total, sent, failed, skipped.
DELETE /v1/broadcast/:job_id
Останавливает рассылку. Уже отправленные сообщения остаются, новые не идут. Воркер замечает отмену на следующей итерации; по завершении шлёт webhook broadcast.cancelled.
GET /v1/broadcast/:job_id/deliveries
Детальный отчёт о доставке по подписчикам. Параметры: status (success/failed), limit (до 500), cursor (для пагинации — значение next_cursor из предыдущего ответа).
Frequency cap
Project-level лимит маркетинговых сообщений на подписчика (в день / в неделю). Настраивается в кабинете на вкладке «Рассылки». По умолчанию выключен. При рассылке подписчики с превышением лимита пропускаются (поле skipped в статусе).