Zapnoty — Расписание и автоматизации

Документация API

REST API для уведомлений через Telegram и Max. Подписчики, OTP, рассылки, формы, helpdesk.

Расписание

Отложенные сообщения, цепочки и повторяющиеся рассылки

Три типа отложенных сообщений

  • type: "once" — одноразовое сообщение в конкретное время (напоминание за 24 часа до события)
  • drip-chains — последовательность сообщений с задержками от триггера (онбординг, серия уроков)
  • recurring — повторяющееся по интервалу (ежедневный дайджест, еженедельный отчёт)

Отложенная отправка

Отправка сообщения в заданное время. Поддерживает форматирование (html/markdown), медиа-вложения и inline-кнопки.

subscriber_id string (UUID) обязательный

UUID подписчика

text string обязательный

Текст сообщения

scheduled_at string (ISO 8601) обязательный

Дата и время. Три формата: с offset (2026-06-01T09:00:00+03:00), UTC (...Z) или naive + поле timezone.

timezone string

IANA timezone (напр. Europe/Moscow). Обязателен для naive scheduled_at и для cron.

name string

Название (для кабинета)

POST /v1/scheduled
 
{
"subscriber_id": "550e8400-...",
"text": "Напоминание о встрече",
"format": "html",
"scheduled_at": "2026-03-25T10:00:00Z",
"buttons": [[{"text": "Подробнее", "url": "https://..."}]]
}

Цепочки (Drip)

Автоматическая последовательность сообщений при подписке или событии. Каждый шаг поддерживает форматирование, медиа и кнопки.

name string обязательный

Название (для кабинета)

trigger string обязательный

Триггер: subscription, segment, permission

trigger_value string

Значение триггера (тег или ключ разрешения)

catch_up_mode string

catch_up_mode для drip: from_start (по умолчанию) или skip_past — пропускать шаги, чьё время уже прошло.

steps[].text string обязательный

Текст сообщения

steps[].delay_minutes number обязательный

Задержка от момента триггера (минуты)

POST /v1/drip-chains
 
{
"name": "Онбординг",
"trigger": "subscription",
"steps": [
{"text": "Добро пожаловать!", "format": "html", "delay_minutes": 0},
{"text": "Совет дня", "delay_minutes": 1440}
]
}

Повторяющиеся

Регулярная рассылка с заданным интервалом. Поддерживает форматирование, медиа, кнопки и фильтры (channel, segment, permission).

Каданс recurring: interval_hours / interval_days / cron

Укажите ровно один из трёх. cron подходит для «каждое воскресенье в 9:00» — выражение вычисляется в указанной timezone с учётом перехода на летнее время.

name string обязательный

Название (для кабинета)

text string обязательный

Текст сообщения

interval_hours number

Интервал повторения (часы)

interval_days number

Интервал повторения в днях (альтернатива interval_hours).

cron string

Cron-выражение (5 полей: минута час день месяц день_недели). Не чаще 1 раза в час, требует timezone.

timezone string

IANA timezone (напр. Europe/Moscow). Обязателен для naive scheduled_at и для cron.

POST /v1/recurring
 
{
"name": "Еженедельный дайджест",
"text": "<b>Итоги недели</b>",
"format": "html",
"interval_hours": 168
}

cron

POST /v1/recurring
 
{
"name": "Воскресный дайджест",
"text": "Итоги недели",
"cron": "0 9 * * 0",
"timezone": "Europe/Moscow"
}

Пропуск неактивных подписчиков (6.3.4)

Если на момент отправки подписчик неактивен или заблокировал бота — сообщение получает статус skipped, а проект — webhook scheduled.skipped (вместо failed).

Кастомные события и drip-триггеры (6.3.3)

Трекайте действия подписчиков (начал урок, добавил товар в корзину) и запускайте по ним drip-цепочки — аналог Customer.io для Telegram/Max.

POST /v1/events/track — записать событие подписчика. После записи: webhook event.tracked, запуск drip-цепочек с trigger=event, отмена цепочек по cancel_on_events.

subscriber_id string (UUID) обязательный

UUID подписчика

event string обязательный

Имя события: 1-64 символа, [a-zA-Z0-9._-]

properties object

Произвольный JSON-объект свойств (до 8 КБ). Доступен в шаблоне как {{event.ключ}}.

POST /v1/events/track
 
{
"subscriber_id": "550e8400-...",
"event": "lesson_started",
"properties": {"lesson": "Урок 1"}
}

Drip-триггер по событию

Цепочка с trigger=event и trigger_value=имя_события запускается при трекинге. properties_match — фильтр: цепочка стартует только если свойства события совпадают. cancel_on_events — список событий, отменяющих pending-шаги цепочки для подписчика (напр. покупка отменяет abandoned cart).

POST /v1/drip-chains
 
{
"name": "Abandoned cart",
"trigger": "event",
"trigger_value": "cart_updated",
"cancel_on_events": ["order_completed"],
"steps": [{"text": "{{event.item}} ждёт в корзине", "delay_minutes": 60}]
}

Связанные разделы