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

API сообщений

API отмены сообщений

Отмените сообщение WhatsApp, которое ещё не отправлено. Используйте этот API, чтобы остановить запланированное напоминание после отмены записи или отозвать сообщение, поставленное в очередь по ошибке.

POSThttps://wbiztool.com/api/v1/cancel_msg/

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

Отменить можно любое сообщение, которое ещё ожидает отправки (статус 0, Created): запланированные сообщения и сообщения, поставленные в очередь через API отправки сообщений, отправку в группу или отправку на несколько номеров. Уже отправленное сообщение отозвать нельзя. Если бот уже отправляет сообщение в этот момент, оно всё равно может уйти, поэтому для критичных отмен проверяйте результат через Статус сообщения.

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

curl -X POST https://wbiztool.com/api/v1/cancel_msg/ \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": 12345,
    "api_key": "YOUR_API_KEY",
    "msg_id": 9817263
  }'

Замените 12345 и YOUR_API_KEY своими значениями, а 9817263 — значением msg_id, полученным при отправке или планировании сообщения.

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

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

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

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

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

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

msg_id, возвращённый запросом на отправку или планирование. Он должен принадлежать рабочему пространству вашего API-ключа.

Этому endpoint не нужен whatsapp_client.

Использование официальных клиентов#

Клиенты для Python и Node.js вызывают этот endpoint за вас.

from wbiztool_client import WbizToolClient

client = WbizToolClient(api_key="YOUR_API_KEY", client_id=12345)

result = client.cancel_message(msg_id=9817263)
print(result)

Оба клиента выбрасывают исключение при ошибках аутентификации (HTTP 400/403): Python выбрасывает requests.HTTPError, а Node.js — API error: 400 - {…}. Ответ Msg has been … возвращается как обычный результат со status: 0.

Ответ#

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

{
  "message": "Cancelled",
  "status": 1
}
ПолеТипОписание
statusinteger1, если сообщение отменено, 0, если нет.
messagestringCancelled при успехе, иначе причина.

После отмены Статус сообщения возвращает для сообщения 3 (Cancelled). Отменённое сообщение не отправляется, не вызывает свой webhook и больше не расходует остаток ваших кредитов.

Ошибки#

Большинство ошибок возвращаются с HTTP 200 и status, равным 0, поэтому всегда проверяйте status в теле ответа:

{ "message": "Msg has been Sent", "status": 0 }
СообщениеКак исправить
Msg has been SentСообщение уже отправлено. Отменить его нельзя.
Msg has been FailedОтправка сообщения уже завершилась ошибкой, отменять нечего.
Msg has been CancelledСообщение было отменено ранее.
Msg has been ExpiredСрок действия сообщения истёк до отправки, отменять нечего.
No msg found for given msg_idПроверьте msg_id. Он должен быть числом и принадлежать тому же рабочему пространству, что и ваш API-ключ.
Msg_id cant be nullДобавьте msg_id.
Auth ErrorПередайте и client_id, и api_key.
Invalid Client IdПередайте client_id числом. Возвращается с HTTP 403.
Auth Error: invalid api keyПроверьте, что ключ существует, не удалён и принадлежит этому client_id. Возвращается с HTTP 400.
Invalid JSON format: …Тело JSON некорректно — часто из-за лишней запятой в конце, — или вы отправили поля формы без client_id.
Пустой объект {}Тело JSON было отправлено методом, отличным от POST.

Советы#

  • Сохраняйте каждый msg_id: он нужен для отмены. Для отправки на несколько номеров отменяйте каждый msg_id из ответа отдельно.
  • Отменяйте заранее: отправленное сообщение вернуть нельзя, поэтому отменяйте запланированные сообщения, как только станет ясно, что они больше не нужны.
  • Перенос: endpoint для изменения запланированного времени нет. Отмените сообщение и запланируйте новое.
  • Считайте сообщения в конечном статусе обработанными: ответ вида Msg has been … означает, что сообщения уже нет в очереди, поэтому повторять запрос не нужно.