Всё, что вы можете автоматизировать в WhatsApp
Единый REST API для любых сценариев автоматизации WhatsApp — JSON-эндпоинты, события в реальном времени и подробная документация.
Перейти к разделу:
Единый REST API для любых сценариев автоматизации WhatsApp — JSON-эндпоинты, события в реальном времени и подробная документация.
Перейти к разделу:
Привяжите номер по QR-коду
Подключите любой личный или бизнес-аккаунт WhatsApp так же просто, как WhatsApp Web. Начните в бесплатной песочнице для настройки и тестирования.
Отправьте первый API-запрос
Используйте ваш токен в песочнице, curl или Postman. Единый REST API для отправки сообщений, управления группами, каналами и многого другого.
Подключите вебхуки для получения событий
Получайте сообщения и события WhatsApp в режиме реального времени — подписывайтесь только на те события, которые нужны вашему приложению.
Автоматизируйте группы WhatsApp прямо из вашей системы: отправляйте сообщения, читайте групповые чаты, добавляйте или удаляйте участников и управляйте администраторами без открытия приложения. Экспортируйте номера телефонов участников для синхронизации с CRM и масштабируйте онбординг пользователей. Если вам станет тесно в рамках одной группы, управляйте Сообществами со связанными подгруппами через один и тот же REST API. Руководство по Groups API →
Создавайте и управляйте каналами WhatsApp прямо из вашей системы: публикуйте посты, назначайте администраторов и читайте реакции без использования приложения. Настройте кросс-постинг новостей, обновлений и спецпредложений с вашего сайта, из Telegram или CRM. Публикации в каналах не тарифицируются. Обзор Channel API →
Взаимодействуйте с клиентами без ограничений с помощью личных сообщений и встроенных инструментов для e-commerce. Отправляйте медиафайлы, интерактивные кнопки и каталоги товаров прямо в чат — без платы за каждое сообщение и без предварительного согласования шаблонов. Создавайте умных чат-ботов, синхронизируйте заказы с CRM и управляйте всей воронкой продаж через один API.
Вовлекайте аудиторию с помощью автоматических обновлений статусов WhatsApp (аналог Stories). Публикуйте изображения, видео или тексты на цветном фоне программно. Откройте для себя мощный маркетинговый канал, который полностью отсутствует в большинстве официальных WhatsApp API.
Встроенные полезные инструменты в простом и понятном API — начните быстро решать любые задачи. Автоматизируйте звонки, опросы, проверку номеров и ярлыки чатов — всё включено в подписку, без скрытых платежей.
События звонков
Запускайте групповые звонки, отклоняйте входящие вызовы и получайте события звонков через вебхуки: пропущенные, отвеченные, идет звонок или завершен.
Опросы
Создавайте опросы в чатах и группах и мгновенно реагируйте, когда пользователи голосуют.
Проверка номеров
Проверяйте наличие аккаунта WhatsApp у номера телефона перед отправкой сообщений.
Бизнес-ярлыки
Размечайте чаты ярлыками через API — это удобно для ведения сделок по этапам CRM и управления очередью поддержки.
Получайте события WhatsApp на свой server в реальном времени: новые сообщения, изменения в группах, публикации в каналах и заказы. Подключайте несколько URL-адресов для распределения нагрузки между сервисами и подписывайтесь только на нужные события. Если ваш server будет недоступен, мы автоматически повторим доставку. Документация по вебхукам →
Выбирайте только те типы событий, которые необходимы вашему приложению.
Настраивайте метод доставки, количество попыток и параметры безопасности, а не только конечный адрес.
Защитите ваши номера с помощью проактивных инструментов безопасности и выделенной инфраструктуры. Алгоритмы антиспама WhatsApp работают агрессивно — временные и вечные блокировки случаются часто и зависят от характера использования номера: массовых рассылок, холодного охвата и реакции получателей. Мы не обещаем полное отсутствие рисков — мы даем инструменты для безопасного масштабирования: изолированные региональные прокси, встроенный модуль прогрева номеров и индикатор безопасности активности в реальном времени.
Единый API-токен для REST-запросов, модулей Make/n8n и инструментов для ИИ-агентов — подключите Whapi к любому стеку технологий.
curl --request POST \
--url 'https://gate.whapi.cloud/messages/text' \
--header 'accept: application/json' \
--header 'authorization: Bearer {your_token}' \
--header 'content-type: application/json' \
--data '
{
"to": "15056482143",
"body": "Hello, world!"
}
'
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gate.whapi.cloud/messages/text",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'to' => '15056482143',
'body' => 'Hello, world!'
]),
CURLOPT_HTTPHEADER => [
"accept: application/json",
"authorization: Bearer {your_token}",
"content-type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
import requests
url = "https://gate.whapi.cloud/messages/text"
payload = {
"to": "15056482143",
"body": "Hello, world!"
}
headers = {
"accept": "application/json",
"authorization": "Bearer {your_token}",
"content-type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)
const url = 'https://gate.whapi.cloud/messages/text';
const payload = { to: '15056482143', body: 'Hello, world!' };
const response = await fetch(url, {
method: 'POST',
headers: {
accept: 'application/json',
authorization: 'Bearer {your_token}',
'content-type': 'application/json',
},
body: JSON.stringify(payload),
});
console.log(await response.text());
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create("{"to":"15056482143","body":"Hello, world!"}", mediaType);
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/messages/text")
.post(body)
.addHeader("accept", "application/json")
.addHeader("authorization", "Bearer {your_token}")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/messages/text");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("Authorization", "Bearer {your_token}");
request.AddJsonBody("{"to":"15056482143","body":"Hello, world!"}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
# First get chat_id via GET /chats, GET /groups, or GET /newsletters
curl --request POST \
--url 'https://gate.whapi.cloud/messages/text' \
--header 'accept: application/json' \
--header 'authorization: Bearer {your_token}' \
--header 'content-type: application/json' \
--data '
{
"to": "[email protected]",
"body": "Hello, group!"
}
'
// First get chat_id via GET /chats, GET /groups, or GET /newsletters
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gate.whapi.cloud/messages/text",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'to' => '[email protected]',
'body' => 'Hello, group!'
]),
CURLOPT_HTTPHEADER => [
"accept: application/json",
"authorization: Bearer {your_token}",
"content-type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
# First get chat_id via GET /chats, GET /groups, or GET /newsletters
import requests
url = "https://gate.whapi.cloud/messages/text"
payload = {
"to": "[email protected]",
"body": "Hello, group!"
}
headers = {
"accept": "application/json",
"authorization": "Bearer {your_token}",
"content-type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)
// First get chat_id via GET /chats, GET /groups, or GET /newsletters
const url = 'https://gate.whapi.cloud/messages/text';
const payload = { to: '[email protected]', body: 'Hello, group!' };
const response = await fetch(url, {
method: 'POST',
headers: {
accept: 'application/json',
authorization: 'Bearer {your_token}',
'content-type': 'application/json',
},
body: JSON.stringify(payload),
});
console.log(await response.text());
// First get chat_id via GET /chats, GET /groups, or GET /newsletters
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create("{\"to\":\"[email protected]\",\"body\":\"Hello, group!\"}", mediaType);
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/messages/text")
.post(body)
.addHeader("accept", "application/json")
.addHeader("authorization", "Bearer {your_token}")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();
// First get chat_id via GET /chats, GET /groups, or GET /newsletters
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/messages/text");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("Authorization", "Bearer {your_token}");
request.AddJsonBody("{\"to\":\"[email protected]\",\"body\":\"Hello, group!\"}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
curl --request GET \
--url 'https://gate.whapi.cloud/chats?count=100' \
--header 'accept: application/json' \
--header 'authorization: Bearer {your_token}'
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gate.whapi.cloud/chats?count=100",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"accept: application/json",
"authorization: Bearer {your_token}"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
import requests
url = "https://gate.whapi.cloud/chats?count=100"
headers = {
"accept": "application/json",
"authorization": "Bearer {your_token}"
}
response = requests.get(url, headers=headers)
print(response.text)
const url = 'https://gate.whapi.cloud/chats?count=100';
const response = await fetch(url, {
method: 'GET',
headers: {
accept: 'application/json',
authorization: 'Bearer {your_token}',
},
});
console.log(await response.text());
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/chats?count=100")
.get()
.addHeader("accept", "application/json")
.addHeader("authorization", "Bearer {your_token}")
.build();
Response response = client.newCall(request).execute();
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/chats?count=100");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("Authorization", "Bearer {your_token}");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
curl --request GET \
--url 'https://gate.whapi.cloud/messages/list?count=100' \
--header 'accept: application/json' \
--header 'authorization: Bearer {your_token}'
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gate.whapi.cloud/messages/list?count=100",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"accept: application/json",
"authorization: Bearer {your_token}"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
import requests
url = "https://gate.whapi.cloud/messages/list?count=100"
headers = {
"accept": "application/json",
"authorization": "Bearer {your_token}"
}
response = requests.get(url, headers=headers)
print(response.text)
const url = 'https://gate.whapi.cloud/messages/list?count=100';
const response = await fetch(url, {
method: 'GET',
headers: {
accept: 'application/json',
authorization: 'Bearer {your_token}',
},
});
console.log(await response.text());
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/messages/list?count=100")
.get()
.addHeader("accept", "application/json")
.addHeader("authorization", "Bearer {your_token}")
.build();
Response response = client.newCall(request).execute();
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/messages/list?count=100");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("Authorization", "Bearer {your_token}");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
curl --request GET \
--url 'https://gate.whapi.cloud/groups' \
--header 'accept: application/json' \
--header 'authorization: Bearer {your_token}'
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gate.whapi.cloud/groups",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"accept: application/json",
"authorization: Bearer {your_token}"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
import requests
url = "https://gate.whapi.cloud/groups"
headers = {
"accept": "application/json",
"authorization": "Bearer {your_token}"
}
response = requests.get(url, headers=headers)
print(response.text)
const url = 'https://gate.whapi.cloud/groups';
const response = await fetch(url, {
method: 'GET',
headers: {
accept: 'application/json',
authorization: 'Bearer {your_token}',
},
});
console.log(await response.text());
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/groups")
.get()
.addHeader("accept", "application/json")
.addHeader("authorization", "Bearer {your_token}")
.build();
Response response = client.newCall(request).execute();
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/groups");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("Authorization", "Bearer {your_token}");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
curl --request POST \
--url https://gate.whapi.cloud/contacts \
--header 'accept: application/json' \
--header 'authorization: Bearer {your_token}' \
--header 'content-type: application/json' \
--data '
{
"force_check": false,
"contacts": [
"919984351847",
"61371989950"
]
}
'
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gate.whapi.cloud/contacts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'force_check' => false,
'contacts' => ['919984351847', '61371989950']
]),
CURLOPT_HTTPHEADER => [
"accept: application/json",
"authorization: Bearer {your_token}",
"content-type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
import requests
url = "https://gate.whapi.cloud/contacts"
payload = {
"force_check": False,
"contacts": ["919984351847", "61371989950"]
}
headers = {
"accept": "application/json",
"authorization": "Bearer {your_token}",
"content-type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)
const url = 'https://gate.whapi.cloud/contacts';
const payload = {
force_check: false,
contacts: ['919984351847', '61371989950'],
};
const response = await fetch(url, {
method: 'POST',
headers: {
accept: 'application/json',
authorization: 'Bearer {your_token}',
'content-type': 'application/json',
},
body: JSON.stringify(payload),
});
console.log(await response.text());
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create("{"force_check":false,"contacts":["919984351847","61371989950"]}", mediaType);
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/contacts")
.post(body)
.addHeader("accept", "application/json")
.addHeader("authorization", "Bearer {your_token}")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/contacts");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("Authorization", "Bearer {your_token}");
request.AddJsonBody("{"force_check":false,"contacts":["919984351847","61371989950"]}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
curl --request GET \
--url https://gate.whapi.cloud/contacts/ids/118876465958956%40lid \
--header 'accept: application/json' \
--header 'authorization: Bearer {your_token}'
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gate.whapi.cloud/contacts/ids/118876465958956%40lid",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"accept: application/json",
"authorization: Bearer {your_token}"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
import requests
url = "https://gate.whapi.cloud/contacts/ids/118876465958956%40lid"
headers = {
"accept": "application/json",
"authorization": "Bearer {your_token}"
}
response = requests.get(url, headers=headers)
print(response.text)
const url = 'https://gate.whapi.cloud/contacts/ids/118876465958956%40lid';
const response = await fetch(url, {
method: 'GET',
headers: {
accept: 'application/json',
authorization: 'Bearer {your_token}',
},
});
console.log(await response.text());
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/contacts/ids/118876465958956%40lid")
.get()
.addHeader("accept", "application/json")
.addHeader("authorization", "Bearer {your_token}")
.build();
Response response = client.newCall(request).execute();
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/contacts/ids/118876465958956%40lid");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("Authorization", "Bearer {your_token}");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
curl --request PATCH \
--url 'https://gate.whapi.cloud/settings' \
--header 'accept: application/json' \
--header 'authorization: Bearer {your_token}' \
--header 'content-type: application/json' \
--data '
{
"callback_backoff_delay_ms": 3000,
"max_callback_backoff_delay_ms": 900000,
"callback_persist": true,
"webhooks": [
{
"headers": {
"myKey": "secret-key"
},
"mode": "body",
"events": [
{
"type": "messages",
"method": "post"
},
{
"type": "statuses",
"method": "post"
},
{
"type": "groups",
"method": "patch"
}
],
"url": ""
}
]
}
'
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gate.whapi.cloud/settings",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'callback_backoff_delay_ms' => 3000,
'max_callback_backoff_delay_ms' => 900000,
'callback_persist' => true,
'webhooks' => [
[
'headers' => ['myKey' => 'secret-key'],
'mode' => 'body',
'events' => [
['type' => 'messages', 'method' => 'post'],
['type' => 'statuses', 'method' => 'post'],
['type' => 'groups', 'method' => 'patch']
],
'url' => ''
]
]
]),
CURLOPT_HTTPHEADER => [
"accept: application/json",
"authorization: Bearer {your_token}",
"content-type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
import requests
url = "https://gate.whapi.cloud/settings"
payload = {
"callback_backoff_delay_ms": 3000,
"max_callback_backoff_delay_ms": 900000,
"callback_persist": True,
"webhooks": [
{
"headers": {"myKey": "secret-key"},
"mode": "body",
"events": [
{"type": "messages", "method": "post"},
{"type": "statuses", "method": "post"},
{"type": "groups", "method": "patch"}
],
"url": ""
}
]
}
headers = {
"accept": "application/json",
"authorization": "Bearer {your_token}",
"content-type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)
const url = 'https://gate.whapi.cloud/settings';
const payload = {
callback_backoff_delay_ms: 3000,
max_callback_backoff_delay_ms: 900000,
callback_persist: true,
webhooks: [
{
headers: { myKey: 'secret-key' },
mode: 'body',
events: [
{ type: 'messages', method: 'post' },
{ type: 'statuses', method: 'post' },
{ type: 'groups', method: 'patch' },
],
url: '',
},
],
};
const response = await fetch(url, {
method: 'PATCH',
headers: {
accept: 'application/json',
authorization: 'Bearer {your_token}',
'content-type': 'application/json',
},
body: JSON.stringify(payload),
});
console.log(await response.text());
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create("{\"callback_backoff_delay_ms\":3000,\"max_callback_backoff_delay_ms\":900000,\"callback_persist\":true,\"webhooks\":[{\"headers\":{\"myKey\":\"secret-key\"},\"mode\":\"body\",\"events\":[{\"type\":\"messages\",\"method\":\"post\"},{\"type\":\"statuses\",\"method\":\"post\"},{\"type\":\"groups\",\"method\":\"patch\"}],\"url\":\"\"}]}", mediaType);
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/settings")
.patch(body)
.addHeader("accept", "application/json")
.addHeader("authorization", "Bearer {your_token}")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/settings");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("Authorization", "Bearer {your_token}");
request.AddJsonBody("{\"callback_backoff_delay_ms\":3000,\"max_callback_backoff_delay_ms\":900000,\"callback_persist\":true,\"webhooks\":[{\"headers\":{\"myKey\":\"secret-key\"},\"mode\":\"body\",\"events\":[{\"type\":\"messages\",\"method\":\"post\"},{\"type\":\"statuses\",\"method\":\"post\"},{\"type\":\"groups\",\"method\":\"patch\"}],\"url\":\"\"}]}", false);
var response = await client.PatchAsync(request);
Console.WriteLine("{0}", response.Content);
Пошаговые руководства с готовым кодом для Python, PHP, Node.js и Java, а также готовые боты, чекеры и шаблоны автоматизации с открытым исходным кодом на GitHub. Сделайте форк репозитория и запускайтесь быстрее. Более 20 репозиториев на GitHub →
Те же критерии выбора, что и в нашем полном руководстве: модель расходов, скорость подключения, доступные функции и эксплуатационные компромиссы между официальным API от Meta* и решением Whapi.Cloud.
| Meta* Cloud API | Whapi.Cloud API | |
|---|---|---|
| Цены и подключение | ||
| Модель оплаты исходящих | За каждое сообщение (зависит от категории и страны) | Фиксированная подписка, без комиссий Meta* |
| Предсказуемость расходов | Переменная (лимиты, изменения тарифов) | Полностью предсказуемая стоимость в месяц |
| Скорость запуска | Многоэтапная верификация компании и шаблонов | Сканирование QR — запуск за пару минут |
| Шаблоны сообщений | Обязательны для большинства исходящих рассылок | Не требуются — отправляйте любые сообщения без модерации |
| Возможности и доступ | ||
| Группы WhatsApp | Ограничено (до 8 участников, только Enterprise) | Полная поддержка групп API (1024–2048 участников) |
| Каналы и статусы | Недоступно | Полный доступ через API |
| Проверка существования номера | Недоступно | Доступно |
| Телефон + API на одном номере | Ограниченное совместное использование | Режим Multi-device, приложение на телефоне работает параллельно |
| Нативные функции (каталоги, корзины) | Только базовый обмен сообщениями | Группы, каналы, статусы, каталоги товаров |
| Риски и эксплуатация | ||
| Ограничения по категориям бизнеса | Строгая фильтрация тематик со стороны Meta* | Работает для любого бизнеса без ограничений |
| Модерация сообщений | Предварительная и пост-модерация со стороны Meta* | Без предварительной модерации |
| Профиль блокировок и ограничений | Многоступенчатые ограничения аккаунта | Временные блокировки, обычно легко восстанавливаемые |
| Прогрев и инструменты безопасности | Недоступно | Модуль прогрева + Индикатор безопасности |
| VoIP / API для звонков | Облачная телефония Meta* | Только REST-сообщения |
Разработчики по всему миру используют Whapi.Cloud для создания автоматизаций, ботов, CRM-интеграций, массовых рассылок и продвинутых WhatsApp-воркфлоу. Наша инфраструктура обрабатывает миллионы API-запросов с высокой стабильностью — и этот показатель растёт каждый месяц.
активных API-каналов
API-запросов в месяц
Roberto K. / Web-разработчик
Martin P. / Разработчик
Oscar T. / CTO
Ежемесячная оплата
Оплата за год
Полный функционал API для тестирования и разработки с применением лимитов использования
До 5 активных чатов в месяц
До 150 сообщений в день
До 30 проверок номеров WhatsApp в день
До 1 000 API-запросов в месяц
Требуется периодическая активность
Стандартная поддержка (без приоритета)
Стабильный и надёжный сервис для production-нагрузок с приоритетной поддержкой
Неограниченные сообщения и медиа
Полный доступ к группам, товарам и вебхукам
Без оплаты за сообщения
Приоритетная живая поддержка и ускоренное реагирование на инциденты
Модуль автоматического прогрева номера
Встроенные инструменты и интеграции для автоматизации
Подходит для долгосрочных и стабильных production-процессов
Цена указана за один WhatsApp-номер. Доступны скидки при подключении нескольких номеров.