Skip to main content
Better to read this in two minutes than to discover it halfway through a build. None of the following exists today.

Incoming messages

You cannot receive messages through this API. It sends. Replies from your customers arrive in WhatsApp on the phone, and there is no endpoint that returns them.
Nor can you list a conversation, fetch chat history, or look up a message you did not send. What this rules out: chatbots, auto-responders, support inboxes, anything that reacts to what a customer typed. What to do meanwhile: somebody reads the phone. For high volume, keep the conversation one-way and route replies to a channel you can automate — a link to a web form, a phone number, an email address.

Webhooks

There is no way to subscribe to events. Nothing is pushed to your server: not incoming messages, not delivery receipts, not read receipts, not connection changes. What to do meanwhile: poll GET /v1/instances on a schedule to notice a number going offline — see If your number disconnects. For everything else, the answer is simply that the data is not available.

Delivery and read receipts

A send returns provider_status — the delivery state at the instant of sending, typically PENDING. It is a snapshot, not a receipt. There is no way to ask later whether a message was delivered, read, or failed on the recipient’s end. What to do meanwhile: treat a 200 as “handed over to WhatsApp successfully” and design around not knowing more. If confirmation matters, ask for a reply.

Bulk send

One request sends one message to one recipient. There is no endpoint that takes a list. What to do meanwhile: loop on your side and pace it against your rate limit, reading X-RateLimit-Remaining and honouring Retry-After. Check the numbers first.

Scheduling

A request sends immediately. There is no send_at, and nothing is queued for later. What to do meanwhile: schedule it on your side — a cron job, a task queue, your framework’s scheduler — and call the API at the moment you want the message to go.

File upload

There is no endpoint to upload a file. Media is sent from a public link you host. See Sending media.

Group messages

to is a single recipient’s phone number. Sending to a WhatsApp group is not supported, and there is no way to create, list or manage groups.

Poll results and button taps

Polls render and people can vote, but there is no endpoint that returns the results. The same is true of button taps and list selections: the response goes into the chat on the phone, not to your system. What to do meanwhile: ask for a typed reply — “Reply MORNING or EVENING” — which at least reaches a human reading the conversation.

Message templates

There is no template system, no pre-approval process, and no template variables. You build the message text yourself on each send.

Editing or deleting a sent message

Once a message is sent it cannot be recalled or edited through this API.

Contacts, profile and presence

You cannot read or set the number’s profile name or picture, manage a contact list, or see whether someone is online.

What you can do

Send 12 message types

Text, image, video, document, voice note, sticker, location, contact, reaction, poll, list, buttons.

Check numbers

Find out who is on WhatsApp before you send.

Manage your numbers

Create, connect, rename, disconnect and delete — all from the API.

Reply and react

Quote your own earlier messages and react to them.
This page describes the API as it stands today. If something here matters to your project, tell your account contact — it is useful to know what people are actually blocked on.