Skip to content
WaveSenda
Start free
Docs

Build on WhatsApp over REST

One HTTP API for sending and receiving WhatsApp messages, running AI agents on your conversations, and keeping your numbers connected. No Meta review, no template approval, no per-conversation billing.

The shape of it

A session is one WhatsApp number, linked by scanning a QR code or entering a pairing code. Once it is connected you send through it with the messages API and receive everything back over webhooks. An AI agent can be attached to a session to answer on its own and hand off to a person when it should not.

curl
curl https://api.wavesenda.com/api/v1/messages/send/ \
  -H "Authorization: Bearer $WAVESENDA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"session": "support", "to": "+237670000000", "text": "Hello from WaveSenda."}'

Every response is JSON, every list is cursor-paginated, and every failure carries a stable error.code you can branch on. Start with the quickstart — it goes from no account to a delivered message.

Base URL and versioning

Value
Base URLhttps://api.wavesenda.com/api/v1
AuthAuthorization: Bearer ws_live_…
Content typeapplication/json
Rate limit600 requests per minute, per API key

The version lives in the path. Fields are only ever added within v1 — a new key in a response is not a breaking change, so parse leniently and ignore what you do not recognise. Anything that would remove or repurpose a field ships as v2.

The endpoints, at a glance

POST
/v1/sessions/
Create a number, then connect it with a QR or pairing code
POST
/v1/messages/send/
Send text, media, location or a contact card
GET
/v1/messages/conversations/
List conversations, newest activity first
POST
/v1/contacts/check/
Check which numbers actually have WhatsApp
POST
/v1/webhooks/
Subscribe an endpoint to events
GET
/v1/sessions/{id}/health/
The ban-risk report for one number

The full generated reference — every path, parameter and schema — is served from the API itself at /api/docs/, with the raw OpenAPI document at /api/schema/.

What this is not

Read this before you build
WaveSenda automates a standard WhatsApp account rather than using Meta’s official Cloud API. That is contrary to WhatsApp’s terms of service, and a number can be rate-limited or banned — most often from unsolicited bulk sending to people who never asked to hear from you. The deliverability engine exists to reduce that risk and cannot eliminate it. If your revenue depends on one number never going down, use the official Cloud API instead.

We would rather say that here than take your money and let you discover it in production. The acceptable use policy sets out what we will suspend an account for; consent and an honest opt-out are the whole of it.

Get a key

Create an organisation, connect a number, and issue a key from API keys in the console. Test keys (ws_test_) run against a sandbox session and never reach a real phone.

Create an account

Documentation · WaveSenda