Wow! Emoji of happy man Get your free developer account! Register Now
Everything you need for WhatsApp automation and integration

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.

Cloud REST API with JSON 5-day Trial access without payment
our powerful WhatsApp Cloud API
Decorartive bubble
You don't need to migrate your number. Work with any number you are already using

How to use?

Icon

Pair a number

Connect your or any other number via QR code for testing

Icon

Test API methods

It’s take only 1 Minute to Get Started using the our easy-to-use Developer Tool

Icon

Setup your Webhook

Select and configure Webhook on any event in WhatsApp to send and receive messages

WhatsApp API Grouping Messages and Management

Manage your WhatsApp groups easily

Do you manage multiple WhatsApp groups 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:

Access the list of all groups or a specific group, Create or delete groups, Join or leave a group. Getting group avatar, getting group details from invitation link, counting the number of group members.

Getting the list of group members with their numbers, Adding or deleting group participants, Changing administrator privileges. Generating invitation link, counting participants in the group.

Edit the group's description, change the group avatar, adjust privacy settings, and much more

Receive notifications about various group events, such as new messages, edited or deleted messages, new member joins, etc.

Advanced Interactive Messaging via API

Receiving and sending messages is the basic functionality we offer. But now you can add dynamics to your conversations! Empower your bots or integrations:

Seamlessly send media of any format, documents, voice notes, geolocations, contact's business cards (vCard) and stickers, as well as share links with enticing previews. Use messages with headers and footers for clarity!

Showcase products or categories directly within the chat. Interact with the shopping carts and orders that your customers place.

React with emojis, utilize quote-replies, and mark messages as read to foster deeper conversations. Set immediate user status cues, such as "typing" or "recording audio".

Receive messages, Get a list of all messages and all chats of your number. Get contacts, number details (name, avatar, description, last seen, number availability). Export WhatsApp catalogs, products and orders.

Send image / video / text directly to WhatsApp Status. You can create statuses (stories) without a picture as well, using a colored background, lettering and customizable font. Use API's available for uploading and set status. Also you can get status of your contacts, get list of stories.
Try it out free
whatsapp api send product, message, poll
WhatsApp Channel API

Managing WhatsApp Channels

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

Integrate and automate the sending of any type of message to channels: text, photos, videos, stickers, and polls
Try it out free

Free integrations with 3rd party services

For your convenience, we are constantly adding no-code and low-code integrations with WhatsApp to our service free of charge

NLP bots will provide analysis of incoming messages, and generate relevant responses

Make allows you to connect WhatsApp API to most popular apps. No code is required. Supports personal messaging, groups, channels and more

Bulk personalized messages, reminders or notifications to WhatsApp from Google Sheets in just a few clicks
----

Advanced Webhook Capabilities

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.

  • Messages & Statuses: Monitor new, offline, edited, or deleted messages and their statuses.
  • Chats & Users: Keep an eye on new chats, updates, user activities, and more.
  • Groups & Contacts: Track group creations, member activities, and contact updates.
  • Calls & Labels: Get call details (missed, rejected, received), label creations, and deletions.
  • Orders & Goods: Information about new orders, abandoned baskets, changes in products

If your webhook server is down, we will resend so nothing gets lost!

  • Body: Capture detailed event specifics within the request.
  • Path: Dynamic URL adjustments based on events for precise tracking.
  • Method: Use event methods as request types for diversified tracking.
  • POST, DELETE, PUT, PATCH: Track creations, deletions, full and partial modifications of entities.

Stable Automate WhatsApp without limits

We care about the stability and functionality of our API and offer a high quality service with a fair pricing.

Our Multi-device Supported API means there's no need to keep your phone turned on or online. When you connect to the API, you will be able to use WhatsApp on your phone or Web WhatsApp without any functional limitations.

Operates 24/7 without interruptions! We don't limit your channel in the number of requests per minute. You can use our server infrastructure to its fullest to achieve results. However, you should be aware that this behavior may cause blocking from WhatsApp itself.

Each account is fortified with a dedicated proxy, safeguarding your number from bans. This ensures that even if one client's number faces issues, it remains isolated, guaranteeing uninterrupted service for others.

Our team's unique experience and capabilities allow us to offer you a cost-effective solution, and continually evolve to expand our feature set to automate your work. And support will be quick to respond and help you out!
Try it out free
whatsapp cloud api support

Looking for a feature you didn't find?

It's likely that we are already working on it. Let us know what you need and we'll check if we can give you immediate access to it or build it for you.
We'll respond quickly
Tell you about the available functionality
We will add your wish to the Roadmap and notify you personally when we release your request

Let's check out which provider's API might work for you?

Comparison of the capabilities of other providers (without naming names, but you'll know exactly who we're talking about) and Whapi.Cloud 😉

Other APIs

  • 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 dialogs;

  • 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;

Whapi.Cloud API

  • 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;

Use our guides with code source for an easy start

Everything you need for WhatsApp automation in one place

Are you using WhatsApp to interact with your customers?

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!

Integrate the API in any programming language, it's easy!

                                            
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);

                                            
                                        
Trusted by 500+ Customers from 17+ Countries

API WhatsApp Customers

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

Icon of feature

1,5K+

channels working
right now

Icon of feature

12M+

of user requests we process with a high level of stability

Partner logotype
“Automation allows you to send automatic responses when people text our numbers.
This serves our customers on Whatsapp 24/7.”

jurgen k. / Web Developer

Partner logotype
“We integrated Whatsapp into our CRM and trained our chatbot to automatically answer common questions.”

foden p. / Developer

Partner logotype
“We made our WhatsApp Bulk Messaging Tool, which helps us easily deliver messages to multiple WhatsApp numbers.”

Kerry T. / CTO

Decorative bubble
Whapi.Cloud - Get started for free!

WhatsApp API Pricing

Billed monthly

Billed annually

Sandbox Plan

Free / month

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

  • Help with migration from another API

Start Free Trial
Developer Plan

$29 / month

$40
33% off

Fault-tolerant service with excellent support

  • Unlimited sending and receiving of messages & media

  • Full API access to groups, channels, products, orders and webhooks

  • No limits on all WhatsApp API functionality

  • Fast Live Chat Support

  • Help with migration from another Provider + 14 days free of charge

The price is specified for connection of one number. The more numbers you connect, the cheaper API access will be

Selected: 1

1

Price For Number

Start Free Trial
5 days
for free