В статье рассказываем про отправку, обновление статуса, редактирование и удаление сообщений. Также здесь описаны методы, с помощью которых можете выгрузить сообщения.
Вы можете использовать встроенный интерфейс Wazzup для переписки. Так вам не придётся разрабатывать, дорабатывать, поддерживать свои интерфейсы для обработки диалогов.
При работе с перечисленными методами используйте в заголовках токен дочернего аккаунта client_access_token, который получили с помощью упрощенной авторизации или OAuth: Authorization: Bearer client_access_token
POST /v2/messages — отправить сообщение.PATCH /v2/messages/{message_id} — редактировать сообщение.DELETE /v2/messages/{message_id} — удалить сообщение (только для поддерживаемых транспортов).POST /v2/messages/messages_dump — создать задачу на выгрузку сообщений за период.GET /v2/messages/messages_dump/{export_id} — узнать статус задачи на выгрузку сообщений.Отправка сообщений асинхронна. В случае успешной отправки, вы получаете request_id. Наличие request_id не гарантирует доставку, оно сообщает о том что Wazzup принял ваше сообщение в обработку. Итог обработки и реальный message_id вы получите с вебхуком, обновляющим статус сообщения.
В одном запросе на отправку сообщения нельзя передать одновременно текст (параметр text) и вложение (attachment). При таком запросе вернется ошибка: "Cannot provide more that one of text, attachment or template". Используйте разные запросы, чтобы отправить текст и файл.
POST /v2/messages| Body-параметр. Обязательные отмечены * | Тип | Описание |
channel_id* |
string(uuid) |
ID канала |
quoted_message_id |
string(uuid) |
ID цитируемого сообщения |
recipient * |
object recipient |
Получатель сообщения |
text |
string |
Текст сообщения. Одно из полей text или attachment должно быть заполнено. Отправить в одном запросе text и attachment нельзя |
attachment |
object attachment |
Вложение. Одно из полей text или attachment должно быть заполнено. Отправить в одном запросе text и attachment нельзя |
crm_user_id |
string |
ID пользователя в CRM |
reset_unanswered |
boolean |
Сбросить ли счетчик неотвеченных. Чтобы сообщение не сбрасывало счетчик, укажите false |
template |
object template |
Объект шаблона WABA |
keyboard |
object keyboard |
Интерактивные кнопки для WABA, MAX, Telegram Bot |
| Body-параметр. Обязательные отмечены * | Тип | Описание |
chat_type * |
string |
Тип сущности в мессенджере, соцсети. Доступные значения:
|
chat_id |
string |
Идентификатор сущности в мессенджере, соцсети.
|
username |
string |
Только для Telegram. Имя пользователя в Telegram, без @ в начале. Можно использовать при отправке сообщений, если неизвестен chat_id |
phone |
string |
Только для Telegram, MAX. Телефон контакта в международном формате, без + и иных символов: только цифры с корректным кодом страны. Может использоваться при отправке сообщений, если неизвестен chat_id |
crm_contact_name |
string |
Имя контакта в CRM |
| Body-параметр. Обязательные отмечены * |
Тип | Описание |
url * |
string |
Прямая ссылка на файл |
name |
string |
Название файла |
mimetype |
string |
MIME-тип файла |
size |
number |
Размер файла |
sha1 |
string(hex) |
Хэш SHA1 |
| Body-параметр. Обязательные отмечены * | Тип | Описание |
id * |
string(uuid) |
Код шаблона WABA. Как получить коды шаблонов WABA |
values |
array(string) |
Значения переменных шаблона |
buttons |
array(object) |
Кнопки, прикрепленные к шаблону WABA. При работе с шаблонами объект buttons пригодится, только если хотите привязать к кнопкам полезную нагрузку. Тексты кнопок, которые отправятся с шаблоном WABA, прописывать не надо. |
buttons.text |
string |
Текст кнопки |
buttons.type |
string |
Тип кнопки |
buttons.payload * |
string |
Payload кнопки |
| Body-параметр. Обязательные отмечены * | Тип | Описание |
| Для интерактивных сообщений WABA | ||
buttons * |
array(object) |
Массив объектов с кнопками. Не более 10. Если кнопок больше, отправим первые 10. |
buttons.text |
string |
Текст кнопки. Ограничение — 20 символов |
buttons.type |
string |
Тип кнопки |
buttons.payload * |
string |
Payload кнопки |
| Для сообщений Telegram Bot | ||
reply_markup |
string |
Тип Telegram-клавиатуры: inline, reply |
one_time_keyboard |
boolean |
Если значение true, то кастомная клавиатура скрывается (не удаляется) после нажатия кнопки |
resize_keyboard |
boolean |
Изменение размера |
selective |
boolean |
Селективная клавиатура |
remove_keyboard |
boolean |
Используется для удаления кастомной клавиатуры при передаче значения true |
buttons * |
array |
Массив объектов с кнопками. Не более 12. Если кнопок больше, отправим первые 12. |
buttons[].text |
string |
Для inline-кнопок. Текст кнопки. Ограничение — 64 символа. Кнопки длиннее 64 символов не отправятся. |
buttons[].url |
string(url) |
Для inline-кнопок. URL, который будет открываться при нажатии кнопки |
buttons[].callback_data |
string |
Для inline-кнопок. Payload callback. Данные, которые будут отправлены в обратном запросе боту при нажатии кнопки, 1-64 байта |
buttons[].text * |
string |
Для reply-кнопок. Текст кнопки. Ограничение — 64 символа |
| Для сообщений MAX-бота | ||
buttons * |
array of arrays |
Кнопки в виде двумерного массива |
buttons[].type * |
string |
Тип кнопки. Возможные значения: callback, link, message |
buttons[].text * |
string |
Текст кнопки для всех типов |
buttons[].payload * |
string |
Payload кнопки. Только для типа callback |
buttons[].intent |
string |
Интенция кнопки. Возможные значения: default, positive, negative |
buttons[].url * |
string |
Ссылка в кнопке. Только для типа link |
curl -L 'https://tech.wazzup24.com/v2/messages'
-H 'Authorization: Bearer <client_access_token>'
-H 'Content-Type: application/json'
-d '{
"channel_id": "020e3f61-e5df-447f-8ef9-ce8258e92c7a",
"recipient": {
"chat_type": "whatsapp",
"chat_id": "79999999999"
},
"text": "Hello World"
}'
curl -L 'https://tech.wazzup24.com/v2/messages'
-H 'Authorization: Bearer <client_access_token>'
-H 'Content-Type: application/json'
-d '{
"channel_id": "020e3f61-e5df-447f-8ef9-ce8258e92c7a",
"recipient": {
"chat_type": "whatsapp",
"chat_id": "79385005913"
},
"attachment": {
"url": "https://drive.google.com/uc?export=download&id=123456test",
"name": "new.pdf",
"mimetype": "application/pdf",
"size": 86176,
"sha1": "153e030466873745ce4a66da02d0610a7ee6ce4f",
},
"crm_user_id": "crm-123"
}'
curl -L 'https://tech.wazzup24.com/v2/messages'
-H 'Authorization: Bearer <client_access_token>'
-H 'Content-Type: application/json'
-d '{
"channel_id": "020e3f61-e5df-447f-8ef9-ce8258e92c7a",
"recipient": {
"chat_type": "whatsapp",
"chat_id": "79385005913"
},
"template": {
"id": "385bf0c5-9f2a-4f9f-be85-9b84d797cf95",
"values": [
"https://drive.google.com/uc?export=download&id=123456test"
]
},
"buttons": [
{
"text": "Спасибо!",
"type": "text",
"payload": "yes"
},
{
"text": "Мне нужно еще!",
"type": "text",
"payload": "yes"
},
{
"text": "Мне нужно еще 2!",
"type": "text",
"payload": "yes"
}
]
}'
Пример ответа:
{
"data": {
"request_id": "9820d14f-66ae-4170-997f-0f06c0800664",
"chat_id": 79385005913
},
"meta": {
"timestamp": 1759492896
}
}
Результат: Запрос на отправку принят. Вы получите вебхук со статусом доставки.
Каналы, на которых доступно редактирование:
Редактировать сообщение можно в течение 15 минут после доставки. Узнайте в нашей инструкции больше о том, как работает редактирование сообщений.
PATCH /v2/messages/{message_id}Path-параметрыmessage_id — ID сообщения, которое нужно изменить.
| Body-параметр. Обязательные отмечены * | Тип | Описание |
text |
string |
Текст сообщения. Одно из полей text или attachment должно быть заполнено. |
attachment |
object attachment |
Объект с вложением. Одно из полей text или attachment должно быть заполнено. |
crm_user_id |
string |
ID пользователя в CRM, который изменяет сообщение |
Пример:
curl -L -X PATCH 'https://tech.wazzup24.com/v2/messages/8e074add-828d-4f35-afcc-99ccbfa9d0ae'
-H 'Authorization: Bearer <client_access_token>'
-H 'Content-Type: application/json'
-d '{
"text": "Отредактированное сообщение"
}'
Пример ответа:
{
"data": {
"message_id": "8e074add-828d-4f35-afcc-99ccbfa9d0ae",
"chat_id": "1234567890"
},
"meta": {
"timestamp": 1759397203
}
}
Результат: Сообщение message_id: 8e074add-828d-4f35-afcc-99ccbfa9d0ae отредактировано.
Каналы, на которых доступно удаление сообщений:
Сообщение удаляется в мессенджере у отправителя и собеседника. При этом в iframe Wazzup сообщение будет отображаться с отметкой, что удалено.
Узнайте в нашей инструкции больше о том, как работает удаление сообщений.
DELETE /v2/messages/{message_id}Path-параметрыmessage_id — ID сообщения, которое нужно удалить.
Пример:
curl -L -X DELETE 'https://tech.wazzup24.com/v2/messages/8a3f7a93-2b25-45da-8695-671bd56439e5' -H 'Authorization: Bearer <client_access_token>'
Пример ответа:
{
"data": {
"message_id": "8a3f7a93-2b25-45da-8695-671bd56439e5",
"chat_id": "1234567890"
},
"meta": {
"timestamp": 1759397203
}
}
Результат: Сообщение message_id: 8a3f7a93-2b25-45da-8695-671bd56439e5 удалено.
Метод создает задачу на выгрузку сообщений за указанный период.
Перед отправкой запроса подпишитесь на вебхук messages_dump.status_update, чтобы получить выгрузку, когда она будет готова.
POST /v2/messages/messages_dump Параметры запроса
| Body-параметр. Обязательные отмечены * | Тип | Описание |
start_at* |
string |
Начало периода выгрузки сообщений (ISO 8601) |
end_at* |
string |
Конец периода выгрузки сообщений (ISO 8601) |
channel_id |
string |
Идентификатор канала, если нужно получить сообщения только из чатов на этом канале |
Пример запроса:
{
"start_at": "2025-01-01T00:00:00.000Z",
"end_at": "2025-01-31T23:59:59.999Z",
"channel_id": "6a200e75-b1e6-4c92-950b-31801a31aa95"
}
Пример ответа:
{
"data": {
"status": "pending",
"export_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
},
"meta": {
"timestamp": 1777885780
}
}
| Параметры ответа. Обязательные* | Тип | Описание |
status* |
string |
Статус выгрузки. Значения:
|
export_id* |
string |
Идентификатор задачи. Пригодится, чтобы узнать статус выгрузки. |
Результат: Создана задача. Когда выгрузка будет готова, в вебхуке messages_dump.status_update придет ссылка на CSV-файл с сообщениями.
GET /v2/messages/messages_dump/{export_id}Path-параметр
export_id — идентификатор задачи. Приходит в ответе на запрос POST /v2/messages/messages_dump
Пример ответа
{
"data": {
"status": "pending",
"url": null
},
"meta": {
"timestamp": 1777974260
}
}
Результат: Получен статус задачи в поле status. Возможные значения:
pending — в очереди,processing — в работе,done — выгрузка готова,webhook_failed — выгрузка готова, но не удалось отправить: получаем в ответ ошибку.Если статус done или webhook_failed, то в ответе также придет ссылка на выгрузку в поле url.
*Запрещены и признаны экстремистскими на территории РФ