The WhatsApp Cloud API, without the Meta paperwork.
Connect a WhatsApp number, create an API key, and send messages, templates and interactive replies over the exact Cloud API you already know.
7-day trial on every plan · Meta bills conversations directly
1curl -X POST https://api.staging.kenari.dev/v23.0/$PHONE_NUMBER_ID/messages \2 -H "Authorization: Bearer $KENARI_API_KEY" \3 -H "Content-Type: application/json" \4 -d '{5 "messaging_product": "whatsapp",6 "to": "6281234567890",7 "type": "text",8 "text": { "body": "Halo dari kenari" }9 }'
{
"messaging_product": "whatsapp",
"contacts": [{ "input": "6281234567890", "wa_id": "6281234567890" }],
"messages": [{ "id": "wamid.HBgNNjI4MTIzNDU2Nzg5MBUCABEYEjk4" }]
}Your code talks to Kenari. Kenari talks to WhatsApp.
First message in five minutes.
Connect a number
Onboard through Meta's Embedded Signup or bring your existing WhatsApp Business account. Your Meta token is sealed at rest with AES-256-GCM.
Embedded Signup · or bring your WABACreate an API key
One key authenticates every request. Your Meta token never leaves our vault and never touches your code.
Authorization: Bearer kn_live_…Send
Text, templates, media, interactive buttons: one POST to api.kenari.dev, with the same payload as Meta's Cloud API.
POST /v23.0/{id}/messagesWhy not call Meta directly?
You can, once you have the access. Getting it is the hard part.
On your own
- Become a Meta Tech Provider
- Pass App Review for messaging and management
- Wait for Advanced access before real traffic
- Build token storage, webhook verification and retries
- Handle coexistence numbers separately
With kenari
- Connect a number. That's the onboarding.
- Tech Provider and App Review: done on our side
- Coexistence supported out of the box
- Token vault, signed webhooks and retries built in
- First message in minutes
Keep the WhatsApp Business app. Add the API on the same number.
No cutover
Your team keeps replying from the WhatsApp Business app while your code sends through the API on the same number.
History synced once
On connect, WhatsApp shares contacts and up to 180 days of chats. We pass them straight to your webhook and store none of it.
The 24-hour window, handled
The sync can run only once, within 24 hours. We ask for your endpoint before the clock starts.
Everything the WhatsApp Business Platform does. Less of the paperwork.
Byte-for-byte forwarding
Request bodies pass through untouched. No re-serialising, no reordered keys.
Templates & interactive
Create and send templates, buttons, lists, media: every Cloud API message type.
Many numbers, one account
Connect several WhatsApp numbers per account, each isolated, with per-plan quotas.
Webhooks, delivered
Verified, fanned out to your endpoints, retried on failure, and signed with Standard Webhooks.
Tokens sealed at rest
Meta tokens are encrypted and bound to their row. API keys are HMAC-verified, never stored in the clear.
Access logs
Every call recorded with status and Meta's latency, so you can tell your latency from theirs.
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.
Send text, media, a template or an interactive message. The body is Meta's, forwarded as is.
{
"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.
- 14:02:11messages200
- 14:02:14statuses.sent200
- 14:02:17statuses.delivered200
- 14:02:20statuses.read200
- 14:02:23statuses.failed200
One flat price per month. Priced in rupiah.
Every plan starts with a 7-day trial. Meta bills conversations directly; we add no markup.
Starter
- 1 WhatsApp number
- Send & receive messages
- Templates & interactive
- Full Meta throughput
- Webhooks & 7-day logs
- Coexistence support
Basic
- 2 WhatsApp numbers
- Send & receive messages
- Templates & interactive
- Full Meta throughput
- Webhooks & 7-day logs
- Coexistence support
Pro
POPULAR- 5 WhatsApp numbers
- Send & receive messages
- Templates & interactive
- Full Meta throughput
- Webhooks & 7-day logs
- Coexistence support
Questions, answered.
What is kenari.dev?
Infrastructure for the WhatsApp Cloud API. You call a REST API from your own code; we handle Meta access, token storage, webhooks and pacing.
Is this an inbox, broadcast or CRM tool?
No. kenari is an API for developers. Build your inbox or CRM on top of it.
What can I send?
Anything the Cloud API supports: text, media, templates, interactive buttons and lists, reactions, read receipts.
Do I need my own WhatsApp Business account?
You can create one during Embedded Signup or connect an existing one, including a coexistence number used in the WhatsApp Business app.
How am I billed?
A flat monthly fee per plan. Meta bills you directly for conversations, and we never mark that up.
How do I authenticate?
Send your kenari API key as a bearer token. Never send your Meta token; we supply it.
Do you store my messages?
No. Message bodies and synced chat history pass through to you. We keep your Meta token, encrypted, and 7 days of access logs with status and latency.
Which Graph API versions work?
The version sits in the path, as it does with Meta: /v23.0/…. Call the version you'd call on Meta, and upgrade by changing the path.
Send your first WhatsApp message today.
Try any plan for 7 days. Connect a number and you’re live in minutes.