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 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 URL | https://api.wavesenda.com/api/v1 |
| Auth | Authorization: Bearer ws_live_… |
| Content type | application/json |
| Rate limit | 600 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
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
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.