Документация WhatsApp API
Описание WhatsApp API для сервиса Wappi
С помощью этого API можно осуществлять прием и отправку сообщений через HTTP-запросы для работы с Whatsapp. Также поддерживается работа с чатами, контактами, группами.
МЕТОДЫ ОТПРАВКИ СООБЩЕНИЯ
Вы можете отправить сообщение в Whatsapp синхронной или асинхронной командой. Асинхронные методы выполняют запросы с постановкой в очередь, в ответе придет сообщение о постановке в очередь и id задачи. Синхронные методы отправления сообщений выполняются сразу и позволяют получить в ответе результат запроса.
ОСОБЕННОСТИ API
Токен авторизации передается в заголовке Authorization HTTP запроса. Profile_id передается query параметром в каждом запросе.
БЕЗОПАСНОСТЬ
API WhatsApp работает на основе протокола WhatsApp WEB и исключает бан. Несмотря на это, стоит быть осторожным с анти-спам системой WhatsApp, подробнее об этом в FAQ.
ТЕСТИРОВАНИЕ API
Чтобы протестировать API необходимо авторизоваться. Для этого на данной странице нажмите Authorize, в появившемся окне в поле Value вставьте ваш токен api. Токен можно найти в дашборде на странице вашего профиля - Вход в личный кабинет.
КОЛЛЕКЦИЯ POSTMAN
Для удобства тестирования нашего API можете воспользоваться коллекцией Postman. Там же можно найти примеры реализованных методов на разных языках программирования.
Типы уведомлений Webhook
Есть несколько статусов отправленных сообщений - pending, delivered, read, undelivered, temporary ban.
{
"messages": {
"wh_type": "delivery_status",
"profile_id": "81ad40e9-b023",
"id": "3EB068844B9669533CB8",
"from": "79991112233@c.us",
"to": "79005559900@c.us",
"chat_id": "79005559900@c.us",
"status": "delivered",
"timestamp": "2023-07-17T17:08:16+03:00",
"time": 1689602896,
"task_id": "999fff95-d48f-47e8-a64e-2936cbf89c8e"
}
}
Есть несколько статусов профиля - online, offline
{
"messages": [
{
"wh_type": "authorization_status",
"profile_id": "71ad40e9-b023",
"status": "offline",
"reason": "logout from api",
"phone": "79502041990",
"timestamp": "2023-11-13T17:00:02.57417156+03:00",
"time": 1699884002
}
]
}
{
"messages": [
{
"wh_type": "application_status",
"profile_id": "81ad40e9-b023",
"status": "online",
"phone": "79991112233",
"timestamp": "2023-05-01T22:04:44.198883039+03:00",
"time": 1682967884
}
]
}
{
"messages": [
{
"wh_type": "incoming_message",
"profile_id": "6qw54f68-71eq",
"id": "3A945DD9CDD3016BE11B",
"body": "Ответ на сообщение",
"type": "chat",
"from": "79115576366@c.us",
"to": "79602041988@c.us",
"senderName": "Flood",
"chatId": "79115576366@c.us",
"timestamp": "2024-10-21T11:27:57+03:00",
"time": 1729499277,
"caption": null,
"from_where": "phone",
"contact_name": "Максим",
"is_forwarded": false,
"isReply": true,
"is_edited": false,
"stanza_id": "3A9DA038CF9A2CD87E66",
"is_me": false,
"chat_type": "dialog",
"thumbnail": "https://s3.wappi.pro/wapi-uploads30/6d154f68-71ec/tumb_79115576367.jpg?X-Amz-",
"picture": "https://s3.wappi.pro/wapi-uploads30/6d154f68-71ec/pic_79115576367.jpg?X-Amz",
"wappi_bot_id": "",
"is_deleted": false,
"is_bot": false,
"reply_message": {
"id": "3A9DA038CF9A2CD87E66",
"body": "https://wapi-uploads24.storage.yandexcloud.net/bitrix24/6d154f68-71ec/79bf",
"type": "image",
"chatId": "",
"timestamp": "2024-10-21T11:21:33+03:00",
"time": 0,
"caption": "Картинка",
"file_name": "79bf5bb7-ab23-455c-bf5e-42daca555529.jpg",
"contact_name": ""
}
}
]
}
Обратите внимание, все изображения отдаются в формате base64.
{
"messages": [
{
"wh_type": "incoming_message",
"profile_id": "71ad40e9-b023",
"id": "3EB0CC6709A45F7311FD",
"body": "/9j/4AAQSkZNQ5JDP/9k=",
"type": "image",
"from": "79991940200@c.us",
"to": "79662041999@c.us",
"senderName": "Александр Жукин",
"chatId": "79991940200@c.us",
"timestamp": "2023-12-05T12:56:45+03:00",
"time": 1701770205,
"caption": "Это картинка",
"from_where": "phone",
"mimetype": "image/jpeg",
"contact_name": "Саня Жукин",
"is_forwarded": false,
"isReply": false,
"is_edited": false,
"stanza_id": "",
"chat_type": "dialog"
}
]
}
Обратите внимание, что все видео отдаются в формате base64.
{
"messages": [
{
"wh_type": "incoming_message",
"profile_id": "71ad40e9-b023",
"id": "3EB09F87B9CE13FA0667",
"body": "AAAAIGZ0eXBtcDQyAAS0vA==",
"type": "video",
"from": "79991940200@c.us",
"to": "79662041999@c.us",
"senderName": "Александр Жукин",
"chatId": "79991940200@c.us",
"timestamp": "2023-12-05T13:01:31+03:00",
"time": 1701770491,
"caption": "Это видео",
"from_where": "phone",
"mimetype": "video/mp4",
"contact_name": "Саня Жукин",
"is_forwarded": false,
"isReply": false,
"is_edited": false,
"stanza_id": "",
"chat_type": "dialog"
}
]
}
Обратите внимание, что все файлы и документы отдаются в формате base64.
{{
"messages": [
{
"wh_type": "incoming_message",
"profile_id": "71ad40e9-b023",
"id": "3EB08F8DF5768B401716",
"body": "JVBERi0xLjMJUVPRgo=",
"type": "document",
"from": "79991940200@c.us",
"to": "79662041999@c.us",
"senderName": "Александр Жукин",
"chatId": "79991940200@c.us",
"timestamp": "2023-12-05T13:02:19+03:00",
"time": 1701770539,
"caption": "Это документ",
"title": "Это документ",
"from_where": "phone",
"file_name": "1.pdf",
"mimetype": "application/pdf",
"contact_name": "Саня Жукин",
"is_forwarded": false,
"isReply": false,
"is_edited": false,
"stanza_id": "",
"chat_type": "dialog"
}
]
}
Обратите внимание, что все файлы аудио отдаются в формате base64.
{
"messages": [
{
"wh_type": "incoming_message",
"profile_id": "71ad40e9-b023",
"id": "3EB0C341916D5111CC9A",
"body": "SUQzAwAAAAAHdAgDA==",
"type": "ptt",
"from": "79991940200@c.us",
"to": "79662041999@c.us",
"senderName": "Александр Жукин",
"chatId": "79991940200@c.us",
"timestamp": "2023-12-05T13:03:11+03:00",
"time": 1701770591,
"from_where": "phone",
"mimetype": "audio/mpeg",
"contact_name": "Саня Жукин",
"is_forwarded": false,
"isReply": false,
"is_edited": false,
"stanza_id": "",
"chat_type": "dialog"
}
]
}
{{
"messages": [
{
"wh_type": "incoming_message",
"profile_id": "71ad40e9-b023",
"id": "3EB0A6A4730776B10FA3",
"type": "location",
"from": "79991940200@c.us",
"to": "79662041999@c.us",
"senderName": "Александр Жукин",
"chatId": "79991940200@c.us",
"timestamp": "2023-12-05T13:04:03+03:00",
"time": 1701770643,
"from_where": "phone",
"location": {
"latitude": 55.750446,
"longitude": 37.617494,
"description": "улица Торцева, 23А, Северодвинск, Архангельская область, 164520"
},
"contact_name": "Саня Жукин",
"is_forwarded": false,
"isReply": false,
"is_edited": false,
"stanza_id": "",
"chat_type": "dialog"
}
]
}
{
"messages": [
{
"wh_type": "incoming_message",
"profile_id": "71ad40e9-b023",
"id": "3EB0FB7CD60F1986B594",
"body": "BEGIN:VCARD\nVERSION:3.0\nN:;Имя контакта;;;\nFN:Имя
контакта\nTEL;type=CELL;type=VOICE;waid=79662041999:+79662041999\nEND:VCARD",
"type": "vcard",
"from": "79991940200@c.us",
"to": "79662041999@c.us",
"senderName": "Александр Жукин",
"chatId": "79991940200@c.us",
"timestamp": "2023-12-05T13:04:34+03:00",
"time": 1701770674,
"from_where": "phone",
"contact": {
"display_name": "Имя контакта",
"phone": "+79662041999"
},
"contact_name": "Саня Жукин",
"is_forwarded": false,
"isReply": false,
"is_edited": false,
"stanza_id": "",
"chat_type": "dialog"
}
]
}
{
"messages": [
{
"wh_type": "incoming_message",
"profile_id": "71ad40e9-b023",
"id": "3AD57A50F73CFC3B6DED",
"body": "T2dnUwACAAAAAAAJvNyUA=",
"type": "ptt",
"from": "79005576333@c.us",
"to": "79662041999@c.us",
"senderName": "Flood",
"chatId": "79005576333@c.us",
"timestamp": "2023-12-05T13:07:01+03:00",
"time": 1701770821,
"from_where": "phone",
"mimetype": "audio/ogg; codecs=opus",
"contact_name": "Максим",
"is_forwarded": false,
"isReply": false,
"is_edited": false,
"stanza_id": "",
"chat_type": "dialog"
}
]
}
Поле "type": "incoming_call" - входящий звонок; "missed_call" - пропущенный звонок; "call_terminate" - завершение звонка; "call_accept" - звонок принят.
{
"messages": {
"wh_type": "incoming_call",
"type": "incoming_call",
"contact": {
"Found": true,
"FirstName": "Саня Жукин",
"FullName": "Саня Жукин",
"PushName": "Александр Жукин",
"BusinessName": ""
},
"profile_id": "81ad40e9-b023",
"number": "71008888888",
"timestamp": "2023-07-17T17:40:34+03:00",
"time": 1689604834,
}
}
{
"messages": [
{
"wh_type": "incoming_message",
"profile_id": "71ad40e9-b023",
"id": "3A786E94948BFBED8A27",
"body": "👍",
"type": "reaction",
"from": "79005576333@c.us",
"to": "79662041999@c.us",
"senderName": "Flood",
"chatId": "79005576333@c.us",
"timestamp": "2023-12-05T13:08:08+03:00",
"time": 1701770888,
"from_where": "phone",
"contact_name": "Максим",
"is_forwarded": false,
"isReply": false,
"is_edited": false,
"stanza_id": "3EB053D6EAE268F0FB4D42",
"chat_type": "dialog"
}
]
}
{
"messages": [
{
"wh_type": "incoming_message",
"profile_id": "11a3e331-c546",
"id": "3EB0402A83A59D74852E",
"body": "contentText:\"Текст сообщения 1\" footerText:\"\" buttons:{buttonId:\"1\" buttonText:{displayText:\"button text 1\"} type:RESPONSE} buttons:{buttonId:\"2\" buttonText:{displayText:\"button text 2\"} type:RESPONSE} buttons:{buttonId:\"3\" buttonText:{displayText:\"button text 3\"} type:RESPONSE} headerType:TEXT text:\"Сообщение с кнопками\"",
"type": "buttons",
"from": "79995551122@c.us",
"to": "79224448855@c.us",
"senderName": "Дмитрий",
"chatId": "79995551122@c.us",
"timestamp": "2022-12-09T16:30:44+03:00",
"time": 1670592644,
"from_where": "api"
}
]
}
{
"messages": [
{
"wh_type": "incoming_message",
"profile_id": "11a3e331-c546",
"id": "3EB002BA170199D9F8B2",
"body": "title:\"Заголовок сообщения со списком\" description:\"Это сообщение со списком\" buttonText:\"НАЖМИ на меня\" listType:SINGLE_SELECT sections:{title:\"Заголовок меню\" rows:{title:\"Выбор 1\" description:\"\" rowId:\"id1\"} rows:{title:\"Выбор 2\" description:\"\" rowId:\"id2\"} rows:{title:\"Выбор 3\" description:\"Можно добавлять описание для секции\" rowId:\"id3\"} rows:{title:\"Выбор 4\" description:\"Можно добавлять эмоджики\" rowId:\"aIfkv6\"} rows:{title:\"Выбор 5\" description:\"Текст\" rowId:\"test-4\"} rows:{title:\"Выбор 6\" description:\"Еще текст\" rowId:\"test-6\"} rows:{title:\"Выбор 7\" description:\"Больше текста\" rowId:\"test-7\"} rows:{title:\"Выбор 8\" description:\"Еще больше текста\" rowId:\"test-8\"}} contextInfo:{disappearingMode:{initiator:CHANGED_IN_CHAT}}",
"type": "list",
"from": "79995551122@c.us",
"to": "79224448855@c.us",
"senderName": "Дмитрий",
"chatId": "79995551122@c.us",
"timestamp": "2022-12-09T17:00:05+03:00",
"time": 1670594405,
"from_where": "api"
}
]
}
{
"messages": [
{
"wh_type": "incoming_message",
"profile_id": "71ad40e9-b023",
"id": "3AD7644514D8B64B5E4F",
"body": "Вопрос",
"type": "poll",
"from": "79005576333@c.us",
"to": "79662041999@c.us",
"senderName": "Flood",
"chatId": "79005576333@c.us",
"timestamp": "2023-12-05T13:09:34+03:00",
"time": 1701770974,
"from_where": "phone",
"contact_name": "Максим",
"is_forwarded": false,
"isReply": false,
"is_edited": false,
"stanza_id": "",
"chat_type": "dialog",
"poll_options": [
"Ответ 1",
"Ответ 2"
]
}
]
}
{
"messages": [
{
"wh_type": "incoming_message",
"profile_id": "11a3e331-c546",
"id": "3A3CB510072A59DB53D2",
"body": "button text 1",
"type": "buttons_response",
"from": "79995551122@c.us",
"to": "79224448855@c.us",
"senderName": "Дмитрий",
"chatId": "79995551122@c.us",
"timestamp": "2022-12-09T16:43:22+03:00",
"time": 1670593402,
"from_where": "phone",
"button_response": true,
"selectedButtonId": "1"
}
]
}
{
"messages": [
{
"wh_type": "incoming_message",
"profile_id": "11a3e331-c546",
"id": "3ADC84A9812D3B3E35F3",
"body": "id2",
"type": "list_response",
"from": "79995551122@c.us",
"to": "79224448855@c.us",
"senderName": "Ми",
"chatId": "79224448855@c.us",
"timestamp": "2022-12-09T17:04:20+03:00",
"time": 1670594660,
"from_where": "phone",
"list_response": true,
"selected_list_id": "id2"
}
]
}
{
"messages": [
{
"wh_type": "incoming_message",
"profile_id": "501d59e1-0b06",
"id": "3A8B4D1C2EF20C6F895C",
"type": "poll_vote",
"from": "79602041920@c.us",
"to": "79217304433@c.us",
"senderName": "Ми",
"chatId": "79602041920@c.us",
"timestamp": "2023-05-22T12:53:34+03:00",
"time": 1684749214,
"from_where": "phone",
"is_forwarded": false,
"isReply": false,
"is_edited": false,
"stanza_id": "3EB0F7485D1C02A618F3",
"poll_options": [
"да",
"нет",
"не знаю",
"где я?"
],
"selected_poll_variant": [
"да"
]
}
]
}
{
"messages": [
{
"wh_type": "outgoing_message_api",
"profile_id": "71ad40e9-b023",
"id": "3EB0220348D7366EE7067B",
"body": "тест",
"type": "chat",
"from": "79662041999@c.us",
"to": "79005576333@c.us",
"senderName": "Сергей",
"chatId": "79005576333@c.us",
"timestamp": "2023-12-05T13:10:21+03:00",
"time": 1701771021,
"from_where": "api",
"contact_name": "Максим",
"is_forwarded": false,
"isReply": false,
"is_edited": false,
"stanza_id": "",
"task_id": "faede625-0f03-46e9-8f56-dae5a89887df",
"chat_type": "dialog"
}
]
}
{
"messages": [
{
"wh_type": "outgoing_message_phone",
"profile_id": "71ad40e9-b023",
"id": "3ABB9BBF9ACB92858E87",
"body": "Тест",
"type": "chat",
"from": "79662041999@c.us",
"to": "79005576333@c.us",
"senderName": "Сергей",
"chatId": "79005576333@c.us",
"timestamp": "2023-12-05T13:11:24+03:00",
"time": 1701771084,
"from_where": "phone",
"contact_name": "Максим",
"is_forwarded": false,
"isReply": false,
"is_edited": false,
"stanza_id": "",
"chat_type": "dialog"
}
]
}