Powerful features of our WhatsApp API
Whapi.Cloud provides an easy-to-use API compatible with any programming language, allowing seamless integration of your website, store, application, or sales systems (CRM, ERP) with WhatsApp.


Whapi.Cloud provides an easy-to-use API compatible with any programming language, allowing seamless integration of your website, store, application, or sales systems (CRM, ERP) with WhatsApp.
Pair a number
Connect your or any other number via QR code for testing
Test API methods
It’s take only 1 Minute to Get Started using the our easy-to-use Developer Tool
Setup your Webhook
Select and configure Webhook on any event in WhatsApp to send and receive messages
Do you manage multiple WhatsApp groups or Communities and aim to optimize their management efficiently? Or do you need to do group mailings or redirect participants to different groups? Full automation of group management:
Receiving and sending messages is the basic functionality we offer. But now you can add dynamics to your conversations! Empower your bots or integrations:
Channels are a new tool for broadcasting your messages to large audiences. Cloud API for channel management allow your app to create and control them. With our API, you can achieve everything you can do with channel management tools
For your convenience, we are constantly adding no-code and low-code integrations to our service free of charge.
We also provide you with convenient tools to simplify your daily tasks.
User-defined HTTP callbacks are triggered when events occur. Webhooks provide instant event notifications, eliminating the need for constant server polling. This boosts efficiency, reducing resources and response times.
Hooks for all incoming/outgoing messages, sending/reading messages and others events.
If your webhook server is down, we will resend so nothing gets lost!
We care about the stability and functionality of our API and offer a high quality service with a fair pricing.
Comparison of the capabilities of other providers (without naming names, but you'll know exactly who we're talking about) and Whapi.Cloud 😉
The methods work very slow with delays, sometimes hooks or messages are lost;
Support responds very slowly, stalls and cannot give a concrete answer;
Functional limitation;
Charge extra for messages or conversations;
If you connect API you will not be able to use the device (texting or calling);
You are limited by the number of messages or requests;
Fast response rate, hooks are guaranteed to arrive even if there are some problems with your server;
Fast Live Support. Our customers are pleasantly surprised by our support;
A large number of functions allow you to automate almost any functionality in WhatsApp;
You pay a fixed price for API and nothing else;
Up to 4-10 devices can work simultaneously when connecting our API. Continue to use WhatsApp as you are used to;
Limits of 150 messages per day only on the Free Sandbox plan;
We help programmers and small businesses automate any WhatsApp function and set it up to run on autopilot with chatbots, group management, bulk messages, polls, goods, orders and more!
curl --request POST \
--url 'https://gate.whapi.cloud/messages/text?token={your_token}' \
--header 'accept: application/json' \
--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?token={your_token}",
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",
"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?token={your_token}"
payload = {
"to": "15056482143",
"body": "Hello, world!"
}
headers = {
"accept": "application/json",
"content-type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)
const request = require('request');
const options = {
method: 'POST',
url: 'https://gate.whapi.cloud/messages/text?token={your_token}',
headers: {accept: 'application/json', 'content-type': 'application/json'},
body: {to: '15056482143', body: 'Hello, world!'},
json: true
};
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"to\":\"15056482143\",\"body\":\"Hello, world!\"}");
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/messages/text?token={your_token}")
.post(body)
.addHeader("accept", "application/json")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/messages/text?token={your_token}");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddJsonBody("{\"to\":\"15056482143\",\"body\":\"Hello, world!\"}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
curl --request POST \
--url 'https://gate.whapi.cloud/messages/text?token={your_token}' \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '
{
"typing_time": 0,
"to": "[email protected]",
"body": "Hello, group!"
}
'
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gate.whapi.cloud/messages/text?token={your_token}",
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([
'typing_time' => 0,
'to' => '[email protected]',
'body' => 'Hello, group!'
]),
CURLOPT_HTTPHEADER => [
"accept: application/json",
"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?token={your_token}"
payload = {
"typing_time": 0,
"to": "[email protected]",
"body": "Hello, group!"
}
headers = {
"accept": "application/json",
"content-type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)
const request = require('request');
const options = {
method: 'POST',
url: 'https://gate.whapi.cloud/messages/text?token={your_token}',
headers: {accept: 'application/json', 'content-type': 'application/json'},
body: {typing_time: 0, to: '[email protected]', body: 'Hello, group!'},
json: true
};
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"typing_time\":0,\"to\":\"[email protected]\",\"body\":\"Hello, group!\"}");
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/messages/text?token={your_token}")
.post(body)
.addHeader("accept", "application/json")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/messages/text?token={your_token}");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddJsonBody("{\"typing_time\":0,\"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/messages/list?token={your_token}' \
--header 'accept: application/json'
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gate.whapi.cloud/messages/list?token={your_token}",
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"
],
]);
$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?token={your_token}"
headers = {"accept": "application/json"}
response = requests.get(url, headers=headers)
print(response.text)
const request = require('request');
const options = {
method: 'GET',
url: 'https://gate.whapi.cloud/messages/list?token={your_token}',
headers: {accept: 'application/json'}
};
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/messages/list?token={your_token}")
.get()
.addHeader("accept", "application/json")
.build();
Response response = client.newCall(request).execute();
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/messages/list?token={your_token}");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
curl --request GET \
--url 'https://gate.whapi.cloud/groups?token={your_token}' \
--header 'accept: application/json'
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gate.whapi.cloud/groups?token={your_token}",
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"
],
]);
$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?token={your_token}"
headers = {"accept": "application/json"}
response = requests.get(url, headers=headers)
print(response.text)
const request = require('request');
const options = {
method: 'GET',
url: 'https://gate.whapi.cloud/groups?token={your_token}',
headers: {accept: 'application/json'}
};
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/groups?token={your_token}")
.get()
.addHeader("accept", "application/json")
.build();
Response response = client.newCall(request).execute();
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/groups?token={your_token}");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
curl --request PATCH \
--url 'https://gate.whapi.cloud/settings?token={your_token}' \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '
{
"callback_backoff_delay_ms": 3000,
"max_callback_backoff_delay_ms": 900000,
"callback_persist": true,
"media": {
"auto_download": [
"image",
"document"
]
},
"pass_through": true,
"sent_status": true,
"webhooks": [
{
"events": [
{
"type": "messages",
"method": "post"
},
{
"type": "groups",
"method": "patch"
}
],
"mode": "body",
"url": "Webhook URL, http or https"
}
]
}
'
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gate.whapi.cloud/settings?token={your_token}",
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,
'media' => [
'auto_download' => [
'image',
'document'
]
],
'pass_through' => true,
'sent_status' => true,
'webhooks' => [
[
'events' => [
[
'type' => 'messages',
'method' => 'post'
],
[
'type' => 'groups',
'method' => 'patch'
]
],
'mode' => 'body',
'url' => 'Webhook URL, http or https'
]
]
]),
CURLOPT_HTTPHEADER => [
"accept: application/json",
"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?token={your_token}"
payload = {
"callback_backoff_delay_ms": 3000,
"max_callback_backoff_delay_ms": 900000,
"callback_persist": True,
"media": { "auto_download": ["image", "document"] },
"pass_through": True,
"sent_status": True,
"webhooks": [
{
"events": [
{
"type": "messages",
"method": "post"
},
{
"type": "groups",
"method": "patch"
}
],
"mode": "body",
"url": "Webhook URL, http or https"
}
]
}
headers = {
"accept": "application/json",
"content-type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)
const request = require('request');
const options = {
method: 'PATCH',
url: 'https://gate.whapi.cloud/settings?token={your_token}',
headers: {accept: 'application/json', 'content-type': 'application/json'},
body: {
callback_backoff_delay_ms: 3000,
max_callback_backoff_delay_ms: 900000,
callback_persist: true,
media: {auto_download: ['image', 'document']},
pass_through: true,
sent_status: true,
webhooks: [
{
events: [{type: 'messages', method: 'post'}, {type: 'groups', method: 'patch'}],
mode: 'body',
url: 'Webhook URL, http or https'
}
]
},
json: true
};
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"callback_backoff_delay_ms\":3000,\"max_callback_backoff_delay_ms\":900000,\"callback_persist\":true,\"media\":{\"auto_download\":[\"image\",\"document\"]},\"pass_through\":true,\"sent_status\":true,\"webhooks\":[{\"events\":[{\"type\":\"messages\",\"method\":\"post\"},{\"type\":\"groups\",\"method\":\"patch\"}],\"mode\":\"body\",\"url\":\"Webhook URL, http or https\"}]}");
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/settings?token={your_token}")
.patch(body)
.addHeader("accept", "application/json")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/settings?token={your_token}");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddJsonBody("{\"callback_backoff_delay_ms\":3000,\"max_callback_backoff_delay_ms\":900000,\"callback_persist\":true,\"media\":{\"auto_download\":[\"image\",\"document\"]},\"pass_through\":true,\"sent_status\":true,\"webhooks\":[{\"events\":[{\"type\":\"messages\",\"method\":\"post\"},{\"type\":\"groups\",\"method\":\"patch\"}],\"mode\":\"body\",\"url\":\"Webhook URL, http or https\"}]}", false);
var response = await client.PatchAsync(request);
Console.WriteLine("{0}", response.Content);
Our REST API has been developed for coders to be extremely easy to use and accessible to everyone, regardless of programming language or frameworks. Check out the API documentation to learn how to send bulk messages, work with groups, check account availability, and much more
channels working
right now
of user requests we process with a high level of stability
jurgen k. / Web Developer
foden p. / Developer
Kerry T. / CTO
Billed monthly
Billed annually
The plan for integration development is not limited in functionality, but it has its restrictions:
No more than 5 conversations per month
No more than 150 messages per day
No more than 30 checks for WhatsApp accounts per day
No more than 1,000 API calls per month
Technical support
Helpful tools
Fault-tolerant service with excellent support
Unlimited sending and receiving of messages & media
Full API access to Groups, Channels, products & webhooks
Fee-free messaging without limits
Fast Live Chat Support
Automatic number warming module
Handy tools and integrations
The price is specified for connection of one number. The more numbers you connect, the cheaper API access will be
Selected: 1
Price For Number