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 refresh tokens.
Kirim is the WhatsApp Cloud API, packaged for developers. Clean REST, predictable contracts, batteries-included webhooks, real-time receipts.
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 refresh tokens.
Meta-style path routing
Sender lives in the URL path (POST /v1/{phone_number_id}/messages) —
drop-in compatible with Meta’s WhatsApp Cloud API. Copy-paste a
payload from Meta’s docs and it works.
Production-grade webhooks
HMAC-SHA256 signatures, 8-attempt exponential backoff, dead-letter queue, single + bulk replay, secret rotation with overlap windows.
Stable contracts
Every endpoint is permanent the moment it ships. Adding fields is non-breaking. Programmatic error codes are forever-stable.
import { Kirim } from '@kirimdev/sdk'
const kirim = new Kirim({ apiKey: process.env.KIRIM_KEY! })const phone = kirim.phoneNumbers('106540352242922')
await phone.messages.send({ messaging_product: 'whatsapp', to: '+628123456789', type: 'text', text: { body: 'Halo dari Kirim' },})curl https://api.kirim.chat/v1/106540352242922/messages \ -H "Authorization: Bearer $KIRIM_KEY" \ -H "Content-Type: application/json" \ -d '{ "messaging_product": "whatsapp", "to": "+628123456789", "type": "text", "text": { "body": "Halo dari Kirim" } }'import os, httpx
httpx.post( "https://api.kirim.chat/v1/106540352242922/messages", headers={"Authorization": f"Bearer {os.environ['KIRIM_KEY']}"}, json={ "messaging_product": "whatsapp", "to": "+628123456789", "type": "text", "text": {"body": "Halo dari Kirim"}, },)Install @kirimdev/n8n-nodes-kirim, add a Kirim action node,
pick Message → Send Text, select your account from the From
dropdown, fill To and Message. Full walkthrough in the
Support Bot recipe.
The recipient sees the WhatsApp message in a couple of seconds.
35+ endpoints
Message send + read, contact CRUD, conversation lifecycle, label management, webhook operations, delivery observability.
OpenAPI 3.1 spec
/v1/openapi.json
— generate SDKs, validate schemas, import into Postman or Insomnia.
Real-time receipts
Inbound messages and status callbacks fanned out to subscribers within seconds of Meta delivering them to Kirim.
Audit log
Every authenticated API call is logged and queryable in the dashboard for 30 days, with full request/response context.
TypeScript SDK
@kirimdev/sdk with auto-retry, automatic Idempotency-Key, async
pagination, and typed errors.
n8n integration
@kirimdev/n8n-nodes-kirim — drag-and-drop messaging in n8n
workflows, including AI Agent tool support.
Quickstart
Send your first WhatsApp message in five minutes flat, end to end. Read →
Webhooks 101
Subscribe to events, verify HMAC signatures, deduplicate by event id. Read →
API Reference
Every endpoint, every parameter, every error code — generated live from the production OpenAPI spec. Browse →
Recipes
End-to-end patterns: order notifications, AI support bot, broadcast campaigns. Browse →