kenari.dev
Start trial

Meta’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.

Meta’s API reference
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" }]
}

Meta’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