Reliable WhatsApp API for Developers and Businesses

For developers and businesses that value simplicity and predictable pricing
From $16*/month for 3 WhatsApp accounts
No per-message fees. Flexible API access.
* with annual billing

Start your 14-day free trial

Start Free Trial
We’ll help you switch from another provider

More flexibility than the official WhatsApp API

Build What You Need Without Paying for Unnecessary Features
Off-the-shelf tools are limited to a fixed set of features
With our API, you can build the workflows you need
What you build depends on your product and your customers
1
Start conversations
2
Automate notifications
3
Build chatbots
4
Integrate with your CRM

WhatsApp API Features

Device & Session Management
  • Connect and manage devices
  • Generate and retrieve QR codes
  • Receive updates via webhooks
  • Check connection status
  • Reset, reconnect, and manage sessions
Message Management
  • Check for new messages
  • Send text messages
  • Send media files
  • Receive messages and media
Group Management
  • Send messages to groups
  • Send media to groups
  • Receive group messages and media
  • View participants and group details

Looking for an alternative to your current WhatsApp API provider?

Switch to Whatsgate with migration assistance and a 14-day free trial
Our support team will help you migrate your existing workflows
Start Free Trial

A Flexible Alternative
to the Official WhatsApp API

See how they differ
Setup
Start conversations with new contacts
Voice Calls & Mobile App Access
Business Verification Requirements
Official API (WABA)
  • You cannot connect on your own. A provider is required, and company verification can take several weeks
  • New conversations require pre-approved template messages
  • The mobile app is limited. Calls and group chats are not fully available
  • A registered legal entity is required
Whatsgate API
  • Connect a WhatsApp account in about 5 minutes
  • Start conversations with any WhatsApp number using supported message formats
  • Keep using your account as usual, including calls and group chats
  • Work as an individual, with no legal-entity requirement

Set up in 5 minutes or less

Then the API is ready to use

Sign up and start your 14-day free trial

Sign Up

In your dashboard, click Add WhatsApp. In the mobile app, choose "Link a device" and scan the QR code

Wait until the status shows "Ready to work". Your API connection is active

Simple, Transparent Pricing

Affordable Plans for Every Stage of Growth
Pay for API access, not per message
Need more connections? Ask us about custom pricing. Contact us and we will put a plan together.

Built for Developers

Easy to Integrate, Even for Beginners
Webhooks
Your HTTP endpoint is called when a message arrives or a delivery status changes
Flexible JSON API
Works with any language that supports HTTP and JSON

Get started faster with SDKs
for popular programming languages

Integrate the WhatsApp API in your language

Send Message
  • Shell
  • PHP
  • Python
Get a list of active chats
  • Shell
  • PHP
  • Python
Get the media file attached to a message
  • Shell
  • PHP
  • Python
Mark the latest messages in a chat as seen
  • Shell
  • PHP
  • Python
Configure a webhook for incoming events
  • Shell
  • PHP
  • Python

                    

Built for Reliability and Scalability

Designed to handle growing numbers of connections and messages
Infrastructure That Scales with Demand
Server capacity scales with load. No more than 5 clients per CPU core
Isolated Sessions for Every Client
Each session runs in its own isolated environment
Designed for Consistent, Reliable Message Delivery

See for Yourself with a 14-Day Free Trial

Start Free Trial
Responsive Technical Support
We reply within 15 minutes during business hours, Monday–Friday, 07:00–16:00 UTC

70% of our customers switched from another provider and chose to stay

Ready to Get Started?

Try it yourself with a 14-day free trial
Start Free Trial
Or Talk to Our Team
?

Frequently Asked Questions

Do you provide the official WhatsApp API?

No. Whatsgate is an unofficial interface to WhatsApp Web running on our servers. It is built for reliable, around-the-clock sending and receiving. It is not the official WhatsApp Business API, and it is not affiliated with WhatsApp or Meta.

How do I get started?

It takes about 5 minutes. Sign up, connect your WhatsApp account, copy your API key and WhatsApp ID, and start sending messages. A 14-day free trial lets you evaluate the API before you pay.

Can my WhatsApp account be banned?

Yes. WhatsApp’s policies do not allow unofficial automation. You can reduce the risk by avoiding high volumes of repetitive messages to people you do not know, and by avoiding spam reports. You use the service at your own risk.

Can I run bulk messaging campaigns?

We do not encourage bulk messaging, and the service is not intended for it. The API does not enforce a sending limit. If you use it for bulk messaging, you do so at your own risk, and we may suspend the account.

Do you support group chats?

Yes. You can work with group chats the same way you work with individual contacts. Groups have their own identifiers, so you can send and receive messages. Group details include participants and their roles.

Not Sure If Whatsgate Fits Your Use Case?

We're Here to Help
Or reach us by email or Telegram
Denis
Founder of Whatsgate
Built Whatsgate after automating WhatsApp for his own online store
curl -X POST\ -H 'X-API-Key: YOUR_API_KEY' \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ 'https://app.whatsgate.org/api/v1/send' \ -d '{ "WhatsappID": "YOUR_WHATSAPP_ID", "async": false, "recipient": { "id": "99999999999@c.us" }, "message": { "body": "Hello world!" } }' $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://app.whatsgate.org/api/v1/send'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, '{ "WhatsappID": "YOUR_WHATSAPP_ID", "async": false, "recipient": { "id": "99999999999@c.us" }, "message": { "body": "Hello world!" } }'); $headers = array(); $headers[] = 'Accept: application/json'; $headers[] = 'X-API-Key: YOUR_API_KEY'; $headers[] = 'Content-Type: application/json'; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $result = curl_exec($ch); print_r($result); curl_close($ch); import requests from json url = "https://app.whatsgate.org/api/v1/send" headers = { 'Accept' : 'application/json' 'X-API-Key': 'YOUR_API_KEY', 'Content-Type': 'application/json' } payload = { "WhatsappID": "YOUR_WHATSAPP_ID", "async": false, "recipient": { "id": "99999999999@c.us" }, "message": { "body": "Hello world!" } } r = requests.post(url, data=json.dumps(payload), headers=headers) print(r.text) curl -X POST\ -H 'X-API-Key: YOUR_API_KEY' \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ 'https://app.whatsgate.org/api/v1/get-chats' \ -d '{ "WhatsappID": "YOUR_WHATSAPP_ID" }' $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://app.whatsgate.org/api/v1/get-chats'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, '{ "WhatsappID": "YOUR_WHATSAPP_ID" }'); $headers = array(); $headers[] = 'Accept: application/json'; $headers[] = 'X-API-Key: YOUR_API_KEY'; $headers[] = 'Content-Type: application/json'; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $result = curl_exec($ch); print_r($result); curl_close($ch); import requests from json url = "https://app.whatsgate.org/api/v1/send" headers = { 'Accept' : 'application/json' 'X-API-Key': 'YOUR_API_KEY', 'Content-Type': 'application/json' } payload = { "WhatsappID": "YOUR_WHATSAPP_ID" } r = requests.post(url, data=json.dumps(payload), headers=headers) print(r.text) curl -X POST\ -H 'X-API-Key: YOUR_API_KEY' \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ 'https://app.whatsgate.org/api/v1/get-media' \ -d '{ "WhatsappID": "YOUR_WHATSAPP_ID", "mediaKey": "MESSAGE_MEDIA_KEY" }' $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://app.whatsgate.org/api/v1/get-media'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, '{ "WhatsappID": "YOUR_WHATSAPP_ID", "mediaKey": "MESSAGE_MEDIA_KEY" }'); $headers = array(); $headers[] = 'Accept: application/json'; $headers[] = 'X-API-Key: YOUR_API_KEY'; $headers[] = 'Content-Type: application/json'; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $result = curl_exec($ch); print_r($result); curl_close($ch); import requests from json url = "https://app.whatsgate.org/api/v1/get-media" headers = { 'Accept' : 'application/json' 'X-API-Key': 'YOUR_API_KEY', 'Content-Type': 'application/json' } payload = { "WhatsappID": "YOUR_WHATSAPP_ID", "mediaKey": "MESSAGE_MEDIA_KEY" } r = requests.post(url, data=json.dumps(payload), headers=headers) print(r.text) curl -X POST\ -H 'X-API-Key: YOUR_API_KEY' \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ 'https://app.whatsgate.org/api/v1/seen' \ -d '{ "WhatsappID": "YOUR_WHATSAPP_ID", "recipient": { "id": "99999999999@c.us" } }' $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://app.whatsgate.org/api/v1/seen'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, '{ "WhatsappID": "YOUR_WHATSAPP_ID", "recipient": { "id": "99999999999@c.us" } }'); $headers = array(); $headers[] = 'Accept: application/json'; $headers[] = 'X-API-Key: YOUR_API_KEY'; $headers[] = 'Content-Type: application/json'; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $result = curl_exec($ch); print_r($result); curl_close($ch); import requests from json url = "https://app.whatsgate.org/api/v1/seen" headers = { 'Accept' : 'application/json' 'X-API-Key': 'YOUR_API_KEY', 'Content-Type': 'application/json' } payload = { "WhatsappID": "YOUR_WHATSAPP_ID", "recipient": { "id": "99999999999@c.us" } } r = requests.post(url, data=json.dumps(payload), headers=headers) print(r.text) curl -X POST\ -H 'X-API-Key: YOUR_API_KEY' \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ 'https://app.whatsgate.org/api/v1/set-hook' \ -d '{ "WhatsappID": "YOUR_WHATSAPP_ID", "url": "YOUR_URL" }' $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://app.whatsgate.org/api/v1/set-hook'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, '{ "WhatsappID": "YOUR_WHATSAPP_ID", "url": "YOUR_URL" }'); $headers = array(); $headers[] = 'Accept: application/json'; $headers[] = 'X-API-Key: YOUR_API_KEY'; $headers[] = 'Content-Type: application/json'; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $result = curl_exec($ch); print_r($result); curl_close($ch); import requests from json url = "https://app.whatsgate.org/api/v1/set-hook" headers = { 'Accept' : 'application/json' 'X-API-Key': 'YOUR_API_KEY', 'Content-Type': 'application/json' } payload = { "WhatsappID": "YOUR_WHATSAPP_ID", "url": "YOUR_URL" } r = requests.post(url, data=json.dumps(payload), headers=headers) print(r.text)