’s Cloud API, unchanged.
Requests are forwarded byte for byte, so Meta’s reference is ours. Swap the base URL and the token; keep everything else.
POST/v23.0/{phone-number-id}/messages
Send text, media, a template or an interactive message. The body is Meta's, forwarded as is.
PARAMETERS
messaging_productstring · required
Always "whatsapp".
tostring · required
Recipient phone number with country code, e.g. 6281234567890.
typestring · required
text, template, image, document, interactive, …
text / template / …object · required
The body for that type, named after it.
RESPONSE
{
"messaging_product": "whatsapp",
"contacts": [{ "input": "6281234567890", "wa_id": "6281234567890" }],
"messages": [{ "id": "wamid.HBgNNjI4MTIzNDU2Nzg5MBUCABEYEjk4" }]
}’s webhooks, verified and delivered to you.
We check Meta’s signature, fan each event out to your endpoints, re-sign it with Standard Webhooks and retry when your server is down. Inbound messages and every status change, in Meta’s own shape.
POST https://api.acme.id/hooks/kenari
- 14:02:11messages200
- 14:02:14statuses.sent200
- 14:02:17statuses.delivered200
- 14:02:20statuses.read200
- 14:02:23statuses.failed200