WhatsApp Cloud API
## WhatsApp Cloud API A complete REST API for sending and receiving WhatsApp messages through Meta's official Cloud API. ### Key Features - **Send Messages** — text, templates, images, documents, audio, video, stickers, location, contacts, interactive buttons & lists - **Bulk Messaging** — send up to 1,000 messages in a single API call (paid plans) - **Contacts** — store and manage recipient…
WhatsApp Cloud API endpoints
| Method | Endpoint | Description |
|---|---|---|
| Auth | ||
| POST |
/auth/me/credentials/verify /auth/me/credentials/verify |
Calls Meta to validate the saved access token, phone number ID, and optional WABA ID, then returns structured diagnostics for guided setup. |
| POST |
/auth/me/rotate-key /auth/me/rotate-key |
Generates a new API key and invalidates the old one. The new key is returned once — store it immediately. |
| POST |
/auth/session /auth/session |
Authenticates via email and password and sets an HTTP-only session cookie for the dashboard frontend. |
| PUT |
/auth/me/onboarding /auth/me/onboarding |
Persists lightweight onboarding state used by the workspace to resume setup and personalize next actions. |
| PUT |
/auth/me/credentials /auth/me/credentials |
Store your own WhatsApp Cloud API access token and phone number ID. **BYOC (Bring Your Own Credentials)** — once configured, all your messages are sent from your own WhatsApp… |
| POST |
/auth/me/test-message /auth/me/test-message |
Queues a simple onboarding test message after credentials have been verified, then marks the first action as completed. |
| DELETE |
/auth/session /auth/session |
Clears the session cookie. |
| POST |
/auth/register /auth/register |
Creates a new account and returns an API key. **Store the key immediately** — it is returned only once and is not recoverable. New self-service accounts always start on the free… |
| DELETE |
/auth/me/webhook /auth/me/webhook |
|
| DELETE |
/auth/me/credentials /auth/me/credentials |
Removes stored credentials. Real message sending is disabled until new credentials are configured again. |
| GET |
/auth/me /auth/me |
Returns your account details, plan, usage counters, onboarding progress, and current configuration. |
| PUT |
/auth/me/webhook /auth/me/webhook |
Set the URL in the user's product that should receive forwarded delivery status events from WhatsAPI. This is separate from Meta's own callback URL: Meta must still be configured… |
| System | ||
| GET |
/health /health |
Returns server uptime. No auth required. |
| GET |
/ready /ready |
Returns 200 when MongoDB and Redis connections are healthy, 503 otherwise. Use as a Kubernetes/Railway readiness probe. |
| Messaging | ||
| POST |
/messages/bulk /messages/bulk |
Queue multiple messages in a single request. All messages share a `batchId` for tracking. The effective per-request maximum is the lower of the user's plan allowance and… |
| GET |
/messages/{id} /messages/{id} |
Returns the full detail of a message including its delivery timeline. |
| POST |
/send-message /send-message |
Queues a single WhatsApp message for delivery. Supports idempotency (pass `Idempotency-Key` header to safely retry), future scheduling via `sendAt`, and dry-run simulation. For… |
| POST |
/messages/{id}/retry /messages/{id}/retry |
Re-queues a message that is in `failed` state for another delivery attempt. Only `failed` messages can be retried. |
| GET |
/messages /messages |
Returns a paginated list of messages for the authenticated user. |
| Analytics | ||
| GET |
/analytics/summary /analytics/summary |
Returns aggregate delivery stats for the authenticated user: total messages, status breakdown, delivery rate, and failure rate. |
| Webhooks | ||
| POST |
/webhooks/whatsapp /webhooks/whatsapp |
Meta posts delivery status events (sent, delivered, read, failed) to this endpoint. Verified using HMAC-SHA256 signature when `WHATSAPP_APP_SECRET` is set. |
| GET |
/webhooks/whatsapp /webhooks/whatsapp |
|
| Contacts | ||
| GET |
/contacts/{id} /contacts/{id} |
|
| PUT |
/contacts/{id} /contacts/{id} |
|
| POST |
/contacts/bulk /contacts/bulk |
Requires Basic or Pro plan. |
| GET |
/contacts /contacts |
Requires Basic or Pro plan. |
| POST |
/contacts /contacts |
Requires Basic or Pro plan. |
| DELETE |
/contacts/{id} /contacts/{id} |
|
| Campaigns | ||
| POST |
/campaigns /campaigns |
A campaign broadcasts a template message to all contacts matching a tag filter. Requires Basic or Pro plan. |
| GET |
/campaigns/{id} /campaigns/{id} |
|
| POST |
/campaigns/{id}/launch /campaigns/{id}/launch |
Sends the campaign template to all matching contacts immediately. |
| GET |
/campaigns /campaigns |
|
| DELETE |
/campaigns/{id} /campaigns/{id} |
|
| Templates | ||
| DELETE |
/templates/{id} /templates/{id} |
|
| DELETE |
/templates/by-name/{name} /templates/by-name/{name} |
|
| POST |
/templates /templates |
Submits a new message template to Meta for approval. Requires Basic or Pro plan. |
| GET |
/templates/{id} /templates/{id} |
|
| POST |
/templates/{id} /templates/{id} |
Update a template's components. Template must re-go through Meta approval. |
| GET |
/templates /templates |
Returns the templates registered in your WhatsApp Business Account via the Meta API. Requires Basic or Pro plan. |
| Flows | ||
| POST |
/flows/executions/resume /flows/executions/resume |
Without executionId, resumes all due executions for your account. With executionId, resumes one (ownership verified). |
| GET |
/flows/{id}/executions /flows/{id}/executions |
|
| DELETE |
/flows/{id} /flows/{id} |
|
| GET |
/flows /flows |
|
| PUT |
/flows/{id} /flows/{id} |
|
| GET |
/flows/{id} /flows/{id} |
|
| POST |
/flows/{id}/deactivate /flows/{id}/deactivate |
|
| POST |
/flows /flows |
Keyword-triggered automation flows. Requires Basic or Pro plan. |
| POST |
/flows/{id}/trigger /flows/{id}/trigger |
Simulates an inbound message to start the flow. No API key is required, but callers must know the specific flow ID and satisfy the endpoint's webhook-trigger checks. Use this for… |
| GET |
/flows/executions/{execId} /flows/executions/{execId} |
|
| POST |
/flows/{id}/activate /flows/{id}/activate |
Flow will now respond to matching inbound messages. |
WhatsApp Cloud API pricing
| Plan | Price | Rate limit | Quotas |
|---|---|---|---|
| BASIC | Free | — |
|
| PRO Recommended | $19.99 / month | — |
|
| ULTRA | $49.99 / month | — |
|
| MEGA | $99.99 / month | — |
|