Send & track WhatsApp messages
Send approved templates or free-form text, then track delivery, read, and reply events through webhooks.
Endpoints
/v1/messagesPublic APImessages:sendSend a text or template message. Returns once queued; delivery is asynchronous.
/internal/messagesDashboard Onlydashboard sessionList your message history (dashboard session only).
Requires an authenticated dashboard session — your wac_live_ API key cannot call this endpoint. Use it from inside the dashboard, or wrap it behind your own server.
/internal/messages/:idDashboard Onlydashboard sessionFetch a single message record with full status history.
Requires an authenticated dashboard session — your wac_live_ API key cannot call this endpoint. Use it from inside the dashboard, or wrap it behind your own server.
message.sent / delivered / read / failed / replyIncoming Webhookwebhook secretStatus-change events Meta forwards through SendyStack to your webhook URL.
Send a text message
Text messages can only be sent inside Meta's 24-hour service window — i.e. after the contact has replied to one of your templates. Use a template to open the conversation.
POST /v1/messages
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"to": "+254712345678",
"type": "text",
"text": { "body": "Hello from SendyStack!" }
}Send a template
Templates can start a conversation any time. bodyParams fills the {{1}}, {{2}}, … placeholders in order.
POST /v1/messages
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"to": "+254712345678",
"type": "template",
"template": {
"name": "welcome_onboarding",
"language": "en_US",
"bodyParams": ["Dominic"]
}
}Response
A successful POST returns 202 with a synchronous ack. The final delivery / read state arrives over the webhook.
HTTP/1.1 202 Accepted
{
"status": "sent",
"message_id": "msg_01H…",
"meta_message_id": "wamid.HBg…",
"tenant_id": "ten_…",
"api_key_id": "key_…"
}Status lifecycle
- queued — accepted by SendyStack, waiting to be sent.
- sent — forwarded to Meta.
- delivered — Meta confirmed delivery to the recipient's device.
- read — recipient opened the conversation.
- failed — delivery failed; check the
failureobject for Meta's reason.