Ship WhatsApp features
this afternoon
A REST API that mirrors everything the dashboard does, signed webhooks for everything that happens, and guides that get you from zero to production fast.
⚡ Quickstart: first message in 3 steps
1. Sign up and connect WhatsApp (2-minute Meta popup). 2. Create an API key under Dashboard → API Keys. 3. Send:
curl -X POST https://yourdomain.co.za/api/messages/text \
-H "X-Api-Key: cr_live_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"to": "27821234567",
"body": "Hello from the API! 🚀"
}'Every request authenticates with the X-Api-Key header. Keys are scoped to your workspace, revocable at any time, and usage-logged.
The 24-hour rule: free-form messages only deliver within 24h of the customer's last message. Outside that window, send an approved template — templates work anytime.
🧩 What you can build
Approval Workflows
Send artwork, quotes or documents for one-tap Approve/Reject on WhatsApp — with rejection reasons captured and fed back to your system.
Integration guide →Interactive Requests
Any buttons or list options, any media, any follow-up flow — with every reply (including photos) captured and delivered to you.
Integration guide →Lead Delivery
Receive structured leads from agent conversations — with selected chat context — straight into your lead management system.
Integration guide →CRM Sync
Surface your CRM's customer data beside every chat, auto-tag key accounts, and read/write notes both ways.
Integration guide →Webhooks
16 events covering messages, contacts, campaigns, approvals, interactions, leads and carts — HMAC-signed, retried on failure.
Integration guide →Automation Triggers
Launch any visual automation from your code: POST /api/automations/{id}/trigger with a phone number. Contact auto-created if new.
🗺 API surface at a glance
| Area | Endpoints | What it does |
|---|---|---|
| Messaging | /api/messages/* | Text, templates, media, interactive buttons & lists, locations, reactions |
| Approvals | /api/approvals | Media + Approve/Reject flows, bulk sends, status polling, rejection reasons |
| Interactions | /api/interactions | Fully flexible buttons/lists with reply & media capture windows |
| Contacts | /api/contacts, /api/crm/contacts/* | CRUD, tags, custom parameters, CRM linking, two-way notes |
| Automations | /api/automations/* | List, toggle, update graphs, trigger for any contact |
| Commerce | /api/commerce/* | Abandoned carts in (Shopify or custom), recovery messages out |
| Templates | /api/templates | Create, sync status, list approved templates |
| Analytics | /api/reports/* | Message volumes, delivery rates, campaign funnels |
🛡 Built the way you'd build it
Predictable JSON
Every response is JSON. Errors carry an error field with a human-readable message — no digging through Meta error codes (we translate those for you on the Diagnostics page).
Signed Webhooks
Every delivery carries X-ChatReach-Signature (HMAC-SHA256 of the raw body). Verify in four lines of code. Failed deliveries retry at 5s, 30s and 2min.
Echo Your IDs
Pass externalRef on approvals and interactions and it comes back in every webhook — correlate without a lookup table.
Idempotent Contacts
Send to a number we haven't seen and the contact is created automatically. No "create contact first" ceremony.
Your first API call is 5 minutes away
Free trial includes full API access, webhooks and every integration guide. No credit card.
Create Free Account