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

API напоминаний

API создания напоминаний

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

POSThttps://wbiztool.com/api/v1/reminder/create/

Тело запроса: JSON или поля формы

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

Быстрый пример#

curl -X POST https://wbiztool.com/api/v1/reminder/create/ \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": 12345,
    "api_key": "YOUR_API_KEY",
    "whatsapp_client": 678,
    "reminder_name": "Monthly rent reminder",
    "phone": "919876543210",
    "message": "Hi Aman, a reminder that your rent is due on {current_date_formatted}.",
    "cron_expression": "0 10 1 * *",
    "timezone": "Asia/Kolkata"
  }'

Это напоминание отправляется в 10:00 по индийскому времени 1-го числа каждого месяца. Замените 12345, YOUR_API_KEY и 678 своими значениями. Где их найти, описано в разделе Аутентификация.

Параметры запроса#

Передавайте параметры в теле JSON или в виде полей формы. В JSON передавайте каждое текстовое значение (api_key, reminder_name, phone, message, cron_expression, timezone, img_url, file_name) строкой.

Аутентификация

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

Ваш API Client ID из раздела Настройки → API ключи.

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

Ваш API-ключ с той же страницы.

Отправитель

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

ID номера WhatsApp или аккаунта Telegram, с которого отправляется сообщение, со страницы настроек WhatsApp. Если параметр не передан или ID нет в вашем рабочем пространстве, каждое напоминание отправляется с номера, подключённого на момент запуска, причём WhatsApp в приоритете: с первого подключённого номера WhatsApp, а с аккаунта Telegram — только если он единственный подключённый. Напоминание на @username, ссылку t.me или tg:<id> отправляется с подключённого аккаунта Telegram.

Напоминание

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

Название напоминания. Отображается на странице Напоминания и доступно в сообщении как {reminder_name}.

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

Номер WhatsApp получателя с кодом страны, например 919876543210. Отдельного параметра country_code нет. Пробелы, +, -, . и скобки удаляются, как и ведущие 00 и 0, поэтому номер сохраняется только цифрами: и +91 98765-43210, и 0091 98765 43210 сохраняются как 919876543210. Номер без кода страны, например 9876543210 или 09876543210, сохраняется без 0 и дополняется при запуске напоминания страной номера whatsapp_client, а иначе — страной для номеров без кода страны рабочего пространства. Если страна неизвестна, номер отправляется так, как написан. Значения из таблиц, например 919876543210.0 и 9.19876543210E+11, читаются как их цифры. Округлённое значение из таблицы, например 9.19877E+11, отклоняется, потому что в нём не хватает цифр. Значение с буквами или другими символами считается названием группы WhatsApp и сохраняется так, как вы его написали. Исключение: @username, ссылка t.me/username или tg:<id> — это пользователь Telegram, которому сообщение отправляется с аккаунта Telegram. Передайте ID этого аккаунта как whatsapp_client.

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

Текст сообщения. Может содержать переменные шаблона, которые заполняются при каждом запуске напоминания. Форматирование WhatsApp работает: *bold*, _italic_, ~strikethrough~.

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

Когда отправлять — выражение cron из пяти полей, например 0 9 * * 1-5. См. раздел Выражения cron.

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

Часовой пояс, в котором выполняется выражение cron, в виде названия IANA, например Asia/Kolkata, America/New_York или Europe/London. Если параметр не передан, используется UTC. Пустая строка возвращает Invalid timezone. Полный список — в справочнике часовых поясов.

Изображения и файлы

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

0 — текст (по умолчанию), 1 — изображение или 2 — файл, с message в качестве подписи. Любое другое значение считается 0.

img_urlstringОбязателен, если msg_type равен 1 или 2

Публичный URL изображения (http или https) или, для msg_type 2, файла, до 1000 символов. Он скачивается при каждом запуске напоминания, поэтому ссылка должна оставаться рабочей. Разместить файлы можно с помощью API загрузки медиафайлов.

file_namestringОбязателен, если msg_type равен 2

Для msg_type 2 — имя файла с расширением, до 100 символов, например invoice.pdf. Для других типов сообщений игнорируется.

Выражения cron#

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

┌───────── minute        (0-59)
│ ┌─────── hour          (0-23)
│ │ ┌───── day of month  (1-31)
│ │ │ ┌─── month         (1-12)
│ │ │ │ ┌─ day of week   (0-7, where 0 and 7 are Sunday)
│ │ │ │ │
0 9 * * 1-5
СимволЗначениеПример
*Любое значение* в поле часа означает каждый час.
,Список значений9,18 в поле часа означает 9:00 и 18:00.
-Диапазон1-5 в поле дня недели означает с понедельника по пятницу.
/Шаг*/6 в поле часа означает каждые 6 часов.

Типичные примеры#

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

Время указывается в часовом поясе напоминания (timezone). Используйте ровно пять полей: не добавляйте поле секунд и сокращения вроде @daily.

Переменные шаблона#

Эти подстановки в message заменяются при каждом запуске напоминания. Дата и время указываются в часовом поясе напоминания (timezone).

ПеременнаяЗаменяется наПример
{current_date}Дата2026-10-01
{current_date_formatted}Дата словамиOctober 1, 2026
{current_time}Время в 24-часовом формате09:00:00
{current_time_12h}Время в 12-часовом формате9:00 AM
{current_datetime}Дата и время2026-10-01 09:00:00
{timezone}Значение timezoneAsia/Kolkata
{timezone_short}Сокращение часового поясаIST
{reminder_name}Значение reminder_nameMonthly rent reminder
{to_number}Сохранённое значение phone919876543210
{client_name}Название вашего рабочего пространства, как {organisation_name}
{organisation_name}Название вашего рабочего пространства

Напоминание с изображением#

Еженедельное напоминание с изображением
curl -X POST https://wbiztool.com/api/v1/reminder/create/ \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": 12345,
    "api_key": "YOUR_API_KEY",
    "whatsapp_client": 678,
    "reminder_name": "Weekly class timetable",
    "phone": "919876543210",
    "msg_type": 1,
    "img_url": "https://example.com/timetable.png",
    "message": "Here is this week'\''s timetable.",
    "cron_expression": "0 8 * * 1",
    "timezone": "Asia/Kolkata"
  }'

Пример на PHP отправляет поля формы вместо JSON. Работают оба варианта.

Ответ#

Успешный запрос возвращает HTTP 200:

{
  "reminder_id": 3187,
  "message": "Reminder created successfully",
  "status": 1
}
ПолеТипОписание
statusinteger1, если напоминание создано, 0, если запрос не выполнен.
messagestringReminder created successfully, иначе текст ошибки.
reminder_idintegerID нового напоминания. Сохраните его, чтобы позже отменить напоминание. Присутствует только при успехе.

Новые напоминания активны сразу.

Ошибки#

Ошибки возвращаются с HTTP 400 и status, равным 0, если не указано иное:

{ "status": 0, "message": "Invalid timezone" }
СообщениеКак исправить
Invalid JSON format: …Тело JSON некорректно — часто из-за лишней запятой в конце или неэкранированного перевода строки в message. Для новой строки используйте \n. Эта ошибка возвращается и для запроса с полями формы без client_id, а также для любого запроса GET.
Invalid client id.Передайте client_id числом.
Reminder name cannot be nullДобавьте reminder_name.
Phone number cannot be nullДобавьте phone.
Phone number was rounded by a spreadsheet (like 9.19877E+11): send all of its digits as textЗадайте столбцу с телефонами текстовый формат или формат целого числа и передайте полный номер.
Invalid phone number or group nameНомер должен содержать от 7 до 15 цифр, например 919876543210. Одни нули, а также слишком мало или слишком много цифр — это не номер и не название группы.
Message template cannot be nullДобавьте message.
Cron expression cannot be nullДобавьте cron_expression.
Auth Error - Please send correct API key and Client idПередайте непустой api_key.
Invalid cron expressionПроверьте, что в выражении пять корректных полей. См. раздел Выражения cron.
Invalid timezoneИспользуйте название IANA, например Asia/Kolkata, а не сокращение вроде IST.
Image URL cannot be null for image messagesДля msg_type 1 передайте img_url.
File URL cannot be null for file messagesДля msg_type 2 передайте file_name.
Auth Error: invalid api keyКлюч не существует, удалён или принадлежит другому client_id. Проверьте его через API проверки учётных данных.
Auth Error: please check client idКлюч не привязан к рабочему пространству. Создайте новый ключ в нужном рабочем пространстве.
Demo Account cannot access APIsИспользуйте обычный аккаунт.
Not enough creditsРабочее пространство на бесплатном тарифе, и у него не осталось сообщений: платные тарифы отправляют безлимитные сообщения. См. Когда закончились сообщения.
Upgrade your plan to use reminders featureВаш тариф не включает напоминания. Повысьте тариф.
WhatsApp Logged Out. Please Reconnect!!Номер whatsapp_client отключён. Подключите его снова на странице настроек WhatsApp.
Invalid WhatsApp client idПередайте whatsapp_client числом.
Error creating reminder: … (HTTP 500)Не удалось сохранить напоминание. Проверьте переданные значения, например что img_url не длиннее 1000 символов, а file_name — не длиннее 100.

Как работают напоминания#

  • Расписание проверяется в часовом поясе напоминания (timezone), и сообщение ставится в очередь, когда текущее время совпадает с выражением cron.
  • Каждый запуск создаёт обычное сообщение, которое отправляется с вашего номера WhatsApp, поэтому номер должен оставаться подключённым.
  • Запуск пропускается, если whatsapp_client не задан и в этот момент в рабочем пространстве нет ни одного подключённого номера. Запуск сверх дневного лимита номера (1 000 сообщений за 24 часа) создаётся как неудачное сообщение с текстом «Daily limit reached: …».
  • Если whatsapp_client задан, каждый запуск ставится в очередь на этот номер, даже если он с тех пор отключился, и ждёт там. Переключения на другой номер не происходит.
  • Напоминания проверяются периодически, а не с точностью до секунды, после чего сообщение ждёт в очереди отправки, как любое другое. Не рассчитывайте на точное время. Если проверка запаздывает, запуск всё равно отправляется с опозданием до 10 минут (до 1 минуты для первого запуска напоминания); после этого он пропускается. Один и тот же запуск никогда не отправляется дважды.

Советы#

  • Просмотр и очистка: получите свои напоминания и их ID через API списка напоминаний, а остановите ненужное через API отмены напоминаний.
  • Приостановка и редактирование через API недоступны. Используйте страницу Напоминания в панели управления.
  • Много напоминаний сразу: на странице Напоминания также можно импортировать напоминания из CSV-файла.
  • Переводы строк в JSON: записывайте их как \n внутри message. Непосредственный перенос строки делает JSON некорректным.