One bearer token, full org access
Issue keys in the dashboard, pass them as Authorization: Bearer kdv_live_…,
and you’re done. No OAuth dance, no PKCE, no token refresh.
Kirim is the WhatsApp Cloud API for developers — a clean, batteries-included REST surface for sending messages, subscribing to events, and managing your inbox programmatically.
One bearer token, full org access
Issue keys in the dashboard, pass them as Authorization: Bearer kdv_live_…,
and you’re done. No OAuth dance, no PKCE, no token refresh.
Stable v1 contract
Every endpoint is permanent the moment it ships. Adding fields is non-breaking; removing or renaming is a major version. Programmatic error codes are forever-stable.
Production-grade webhooks
Stripe-style HMAC signatures, 8-attempt exponential backoff, dead-letter queue, single + bulk replay, secret rotation with overlap windows, auto-disable on chronic failure.
Meta-passthrough where it matters
message.received and message.status events carry Meta’s exact
JSON. Your existing WhatsApp Cloud parser keeps working — Kirim
just adds reliable delivery and a signed envelope.
# 1. Create an API key in Settings → API Keys, copy the plaintext.export KIRIM_KEY=kdv_live_…
# 2. Send a text message.curl https://api-kckit.kirim.chat/v1/messages \ -H "Authorization: Bearer $KIRIM_KEY" \ -H "Content-Type: application/json" \ -d '{ "to": "+628123456789", "type": "text", "text": { "body": "Halo dari Kirim API" } }'
# 3. The recipient receives the WhatsApp message in a couple of seconds.The full walkthrough — including webhook setup, status polling, and idempotent retries — lives in the Quickstart guide.
/v1/openapi.json.
Generate SDKs, run schema-validated tests, drop the URL into Postman.Quickstart
Send your first WhatsApp message in five minutes flat, end to end. Read →
Webhooks 101
Subscribe to events, verify HMAC signatures, deduplicate on
X-Kirim-Event-Id.
Read →
API Reference
Every endpoint, every parameter, every error code — generated live from the production OpenAPI spec. Browse →
Error catalogue
All stable error codes with the trigger that causes each one. Read →