Перейти к содержимому
WbizTool

API v2 (бета)

Напоминания

Напоминание снова и снова отправляет одно и то же сообщение одному получателю по расписанию: аренда каждый месяц, занятие каждый понедельник, отчёт каждый вечер. Расписание — это выражение cron из 5 частей в выбранном вами часовом поясе. Напоминания, созданные через API, — те же самые, что на странице Напоминания в панели.

ОперацияEndpointОбласть доступа
Создание напоминанияPOST /api/v2/remindersreminders
Список напоминанийGET /api/v2/remindersreminders
Получение напоминанияGET /api/v2/reminders/{id}reminders
Изменение, пауза и возобновлениеPATCH /api/v2/reminders/{id}reminders
Удаление напоминанияDELETE /api/v2/reminders/{id}reminders

Для создания и изменения напоминаний нужен тариф, включающий напоминания; иначе ответ — 403 plan_required. Просмотр, чтение, пауза и удаление работают на любом тарифе. Для сообщения, которое уходит один раз в заданное время, используйте send_at в Отправке сообщения.

Создание напоминания#

POSThttps://wbiztool.com/api/v2/reminders

Тело запроса: JSON (application/json)

curl -X POST https://wbiztool.com/api/v2/reminders \
  -H "Authorization: Bearer $WBIZTOOL_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: rent-flat-4b" \
  -d '{
    "name": "Weekly rent",
    "from": 101,
    "to": { "phone": "+919876543210" },
    "text": "Hi, a reminder that the rent is due on Friday.",
    "schedule": { "cron": "0 9 * * 1", "timezone": "Asia/Kolkata" }
  }'

Ответ (201):

{
  "id": 812,
  "name": "Weekly rent",
  "active": true,
  "to": { "phone": "+919876543210" },
  "from": 101,
  "text": "Hi, a reminder that the rent is due on Friday.",
  "media": null,
  "schedule": { "cron": "0 9 * * 1", "timezone": "Asia/Kolkata" },
  "next_run_at": "2026-10-19T09:00:00+05:30",
  "created_at": "2026-10-18T10:20:11.004Z"
}

Тело запроса

namestringобязательно

Название напоминания, до 100 символов, как оно показывается на странице «Напоминания».

toobjectобязательно

Ровно одно из полей: phone (международный формат с +), group (точное название группы WhatsApp), contact_id или username (Telegram), как в Сообщения → Получатели.

frominteger or nullОбязателен для ключа, ограниченного некоторыми номерами

id номера, который его отправляет. На момент указания номер должен быть подключён. Если не указан или null, отправляет любой подключённый номер рабочего пространства.

textstringобязательно

Текст сообщения, до 3000 символов. Если отправляется media, это ещё и подпись.

mediaobject or nullнеобязательно

Изображение или файл, которые отправляются каждый раз: url или media_id и при необходимости type, как в Сообщения → Медиафайлы.

scheduleobjectобязательно

cron (обязательно) и timezone. См. Расписание.

activebooleanнеобязательно

true (по умолчанию) — напоминание работает; false — создаётся на паузе.

Расписание#

schedule.cron состоит из пяти частей через пробел: минута, час, день месяца, месяц, день недели. * означает «каждый». Расписание должно когда-нибудь срабатывать (не 31 февраля).

cronСрабатывает
0 9 * * 1По понедельникам в 09:00
30 18 * * *Каждый день в 18:30
0 10 1 * *1-го числа каждого месяца в 10:00
0 9 * * 1-5По будням в 09:00
0 8,20 * * *Каждый день в 08:00 и 20:00
0 9 15 1 *15 января в 09:00, каждый год

schedule.timezone — название часового пояса IANA, например Asia/Kolkata, Europe/London или America/New_York (по умолчанию UTC). Время в cron указывается в этом поясе, и next_run_at тоже приводится в нём, со смещением. См. справочник часовых поясов.

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

Ошибки при создании#

HTTPКодКогда
400validation_failedОбязательное поле отсутствует или пусто, поле неизвестно или слишком длинное (name, to.group), или media недействителен
400text_requiredtext пуст
400text_too_longtext длиннее 3000 символов
400invalid_cronschedule.cron состоит не из 5 частей или никогда не срабатывает
400invalid_timezoneschedule.timezone — не часовой пояс IANA
403plan_requiredТариф не включает напоминания
403number_not_allowedКлюч ограничен некоторыми номерами, а from не из их числа или не указан
422invalid_phoneto.phone — не действительный номер в международном формате с +
422invalid_usernameto.username — не имя пользователя Telegram, не ссылка и не ID tg:
422username_needs_telegramУказано имя пользователя Telegram, но from — не аккаунт Telegram (или, без from, не подключён ни один аккаунт Telegram)
422contact_not_foundНет контакта с таким to.contact_id
422media_not_foundНет файла с таким media.media_id
422invalid_media_urlmedia.url — не публичная ссылка http(s)
422number_not_connectedfrom — не подключённый номер этого рабочего пространства

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

GEThttps://wbiztool.com/api/v2/reminders

Напоминания рабочего пространства, сначала самые новые, страницами (limit от 1 до 100, по умолчанию 25, и cursor). Приостановленные тоже входят в список, с "active": false. Ключ, ограниченный некоторыми номерами, видит только напоминания, которые отправляются с этих номеров.

curl "https://wbiztool.com/api/v2/reminders?limit=50" \
  -H "Authorization: Bearer $WBIZTOOL_API_KEY"

Ответ — {"data": [Reminder, …], "next_cursor": "…" or null}.

Получение напоминания#

GEThttps://wbiztool.com/api/v2/reminders/{id}
curl https://wbiztool.com/api/v2/reminders/812 \
  -H "Authorization: Bearer $WBIZTOOL_API_KEY"

Напоминание, которого не существует, которое удалено или отправляется с номера, недоступного ключу, возвращает 404 reminder_not_found.

Изменение, пауза и возобновление напоминания#

PATCHhttps://wbiztool.com/api/v2/reminders/{id}

Тело запроса: JSON (application/json)

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

  • Пауза: {"active": false}. Напоминание перестаёт срабатывать, а next_run_at становится null. Пауза работает на любом тарифе.
  • Возобновление: {"active": true}. Напоминание снова срабатывает со следующего времени по расписанию. Для возобновления нужен тариф с напоминаниями.
  • schedule заменяется целиком: передавайте вместе с ним cron. Без timezone напоминание сохраняет текущий часовой пояс.
# Pause
curl -X PATCH https://wbiztool.com/api/v2/reminders/812 \
  -H "Authorization: Bearer $WBIZTOOL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"active": false}'

# Move it to Fridays at 10:00 and change the text
curl -X PATCH https://wbiztool.com/api/v2/reminders/812 \
  -H "Authorization: Bearer $WBIZTOOL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"schedule": {"cron": "0 10 * * 5"}, "text": "Hi, the rent is due today."}'

Изменение возвращает те же ошибки, что и создание, а также 404 reminder_not_found. Если хотя бы одно поле неверно, ничего не меняется.

Удаление напоминания#

DELETEhttps://wbiztool.com/api/v2/reminders/{id}

Удаляет напоминание: оно больше никогда не сработает. Уже отправленные им сообщения остаются в истории. Чтобы остановить его на время, поставьте его на паузу.

curl -X DELETE https://wbiztool.com/api/v2/reminders/812 \
  -H "Authorization: Bearer $WBIZTOOL_API_KEY"
{ "id": 812, "deleted": true }

Объект Reminder#

ПолеТипОписание
idintegerID напоминания.
namestringЕго название.
activebooleantrue, пока оно работает, false, пока оно на паузе.
toobjectПолучатель: phone (с +), group или username. Напоминание, созданное с contact_id, показывает номер или группу контакта.
frominteger or nullid номера-отправителя или null для любого подключённого номера.
textstringТекст сообщения.
mediaobject or nulltype (image или file), url и file_name.
scheduleobjectcron и timezone.
next_run_atstring or nullКогда оно сработает в следующий раз, в его часовом поясе со смещением, например 2026-10-19T09:00:00+05:30. null, пока оно на паузе.
created_atstringКогда оно создано (UTC).

Связанные материалы#