Developer
WhatsApp API yang rapi, cepat diintegrasikan
Kirim notifikasi transaksi, OTP, dan pesan massal dari aplikasi Anda. Dokumentasi jelas, error dalam Bahasa Indonesia, dan contoh kode siap pakai.
POST /api/v2/messages
curl -X POST https://app.kirimpesan.id/api/v2/messages \
-H "Authorization: Bearer kp_live_xxxxxxxxxxxx" \
-H "Idempotency-Key: 7c0e2f4a-order-2041" \
-H "Content-Type: application/json" \
-d '{ "deviceId": 12, "to": "6281234567890", "content": { "type": "text", "text": "Halo {{nama}}, pesanan Anda sudah dikirim 🚚" } }'Respons
201 Created
HTTP/1.1 201 Created
X-RateLimit-Limit: 600
X-RateLimit-Remaining: 599
{
"id": 98231,
"deviceId": 12,
"direction": "outbound",
"peer": "6281234567890",
"type": "text",
"status": "queued",
"createdAt": "2026-10-12T03:15:22.000Z"
}Dirancang untuk produksi
Hal-hal yang biasanya baru terasa setelah go-live
API key ber-scope
Satu key per integrasi, izin seperlunya, bisa dicabut kapan saja.
Idempotent
Header Idempotency-Key mencegah pesan ganda saat retry jaringan.
Rate limit transparan
Header X-RateLimit-* di setiap respons, 429 + Retry-After saat penuh.
Webhook andal
JSON bertanda tangan HMAC-SHA256, retry eksponensial sampai 24 jam.
OpenAPI
Spesifikasi lengkap untuk Postman, Insomnia, atau generator SDK.
Kompatibel API lama
Integrasi versi lama tetap jalan 1:1 tanpa ubah kode.
Endpoint
Semua yang Anda butuhkan, di satu API
- POST
/messages - GET
/messages/:id - POST
/messages/bulk - POST
/otp - POST
/otp/verify - GET
/devices - POST
/devices - GET
/devices/:id/qr - POST
/devices/:id/pairing-code - GET
/devices/:id/groups - POST
/numbers/check - GET
/contacts
Webhook
Tahu saat pesan dibaca, detik itu juga
message.receivedPesan masuk ke salah satu perangkat Anda.message.statusPerubahan status pesan keluar: sent, delivered, read, failed, …device.connectedPerangkat berhasil terhubung / tersambung kembali.device.disconnectedPerangkat terputus (logout, sesi kedaluwarsa, dll.).campaign.completedSeluruh penerima campaign selesai diproses.
import crypto from "node:crypto";
import express from "express";
const app = express();
const SECRET = process.env.KIRIMPESAN_WEBHOOK_SECRET;
// Penting: gunakan raw body, bukan JSON yang sudah di-parse.
app.post("/hooks/wa", express.raw({ type: "application/json" }), (req, res) => {
const header = req.get("X-KirimPesan-Signature") ?? "";
const parts = Object.fromEntries(header.split(",").map((p) => p.split("=")));
const t = Number(parts.t);
// Tolak jika selisih waktu > 5 menit (mencegah replay)
if (!t || Math.abs(Date.now() / 1000 - t) > 300) return res.sendStatus(400);
const expected = crypto
.createHmac("sha256", SECRET)
.update(`${t}.${req.body.toString("utf8")}`)
.digest("hex");
const ok =
typeof parts.v1 === "string" &&
parts.v1.length === expected.length &&
crypto.timingSafeEqual(Buffer.from(parts.v1), Buffer.from(expected));
if (!ok) return res.sendStatus(401);
const event = JSON.parse(req.body.toString("utf8"));
// … proses event.event / event.data
res.sendStatus(200);
});Integrasi pertama Anda, selesai sore ini
Daftar gratis, buat API key, lalu kirim pesan pertama lewat API dalam hitungan menit.