For sender onboarding, templates, broadcasts and conversation management, head over to whatsapp.sozuri.net. This page describes the WhatsApp capability that runs inside the main Sozuri app.
Sozuri runs the official WhatsApp Business cloud rail so you can send text, images, documents, buttons, lists and location pins from the same /v1/messaging endpoint as your SMS. One API, one bill, two channels.
Pick the type, attach the payload, post. Sozuri handles Meta's quirks so your code stays clean.
Up to 4,096 characters with WhatsApp formatting (*bold*, _italic_, ~strike~, ```mono```). Quote any prior message with context.
Images, video, audio, documents and stickers via a public URL. Sozuri streams the asset to Meta and tracks delivery.
Up to 3 reply buttons per message. Customer taps, your webhook fires with the button payload — no free-text parsing needed.
Multi-section picker with up to 10 rows per section. Ideal for catalogues, time-slot booking, branch selection.
Send a named pin with lat / long, name and address — customers tap to open Maps. Receive customer-shared pins on inbound.
Sent, delivered, read and failed states arrive as webhooks. Reactions from customers (♥, ๐, etc.) too.
The shape mirrors Meta's official Cloud API but the auth, retries, and webhooks are all Sozuri's. You write Kenyan-shaped JSON, we handle Meta.
snake_case field names (e.g. recipient_type) — the only Sozuri channel that does. SMS payloads stay camelCase.
# Send an interactive button message
curl -X POST "https://api.sozuri.net/v1/messaging" \
-H "Authorization: Bearer $SOZURI_API_KEY" \
-d '{
"project": "Galaxion",
"from": "+254700000111",
"to": "+254712345678",
"channel": "whatsapp",
"recipient_type": "individual",
"type": "interactive",
"campaign": "invoice-pay",
"interactive": {
"type": "button",
"body": { "text": "Invoice #4821 โ KSh 2,400. Pay now?" },
"action": {
"buttons": [
{ "type": "reply", "reply": { "id": "PAY_4821", "title": "Pay KSh 2,400" } },
{ "type": "reply", "reply": { "id": "DELAY_4821", "title": "Pay later" } }
]
}
}
}'
Sozuri pushes a clean JSON envelope to your callback URL for every text, button tap, list selection, reaction, media share and read receipt.
Customer-sent text body delivered with message_id and Unix timestamp.
Your button's id comes back so you can route the action without parsing free text.
Emoji reactions to your messages arrive as their own event with the original message_id referenced.
Sent → delivered → read → failed. Includes Meta's error code on failure for clean retry logic.
WhatsApp's customer-care window: any free-form message you send must be within 24 hours of the customer's last inbound. Outside that window you must use an approved Template Message. Sozuri surfaces this on the response so you can branch correctly.
Yes — that's part of onboarding. Sozuri walks you through the WhatsApp Business Account verification, business profile, and number porting. Lead time is typically 1–2 weeks.
Yes, WhatsApp's servers must be able to download the asset. If your storage is behind auth, generate a short-lived signed URL just for the send. Sozuri does not proxy media.
Yes. The endpoint is identical (/v1/messaging). The only differences are channel: "whatsapp", snake_case field names, and the type-specific payload object (text, image, interactive, etc.).
WhatsApp is Kenya's most-opened inbox. Pair it with Sozuri AI Agents and you've got 24/7 support that lives where customers already are.