Node.js / JavaScript SDK
SDK resmi BaBlast membantu aplikasi backend mengirim pesan WhatsApp, mengelola kontak, mengirim template Official WABA, dan memverifikasi webhook dengan API yang konsisten.
TypeScript / Node.js SDK
Package resmi:
hljs bash
npm install @bablast/client
Alternatif package manager:
hljs bash
yarn add @bablast/client
pnpm add @bablast/client
SDK membutuhkan Node.js >=18 karena memakai runtime fetch bawaan.
Quickstart
hljs typescript
import { BablastClient } from "@bablast/client";
const bablast = new BablastClient({
apiKey: process.env.BABLAST_API_KEY!,
});
await bablast.wa.sendText({
to: "6281234567890",
message: "Halo dari SDK BaBlast!",
});
await bablast.waba.sendTemplate({
to: "6281234567890",
templateName: "promo_agustus",
language: "id",
});
Secara default SDK memakai base URL:
hljs text
https://api.bablast.id/v2/openapi
Modul SDK
| Modul | Akses | Kegunaan |
|---|---|---|
| Standard WA | bablast.wa | Kirim pesan teks, media, bulk, riwayat pesan, dan status sender. |
| Official WABA | bablast.waba | Kirim template WABA dan kelola template Meta. |
| Contacts | bablast.contacts | Buat kontak, grup kontak, dan bulk insert ke grup. |
| Webhooks | bablast.webhooks | Verifikasi signature, parse event, dan kelola konfigurasi webhook. |
Standard WA
Kirim Pesan Teks
hljs typescript
const result = await bablast.wa.sendText({
senderId: "12",
to: "6281234567890",
message: "Terima kasih sudah mendaftar.",
});
console.log(result.messageId);
Kirim Media
hljs typescript
await bablast.wa.sendMedia({
senderId: "12",
to: "6281234567890",
mediaUrl: "https://example.com/invoice.pdf",
caption: "Berikut faktur tagihan Anda.",
filename: "invoice.pdf",
});
Kirim Bulk
hljs typescript
await bablast.wa.sendBulk({
senderId: "12",
message: "Halo {{name}}, voucher Anda: {{code}}",
recipients: [
{ to: "6281234567890", variables: { name: "Budi", code: "DISC50" } },
{ to: "6281234567891", variables: { name: "Siti", code: "DISC50" } },
],
});
Sender & QR Code
hljs typescript
const senders = await bablast.wa.senders.list();
const status = await bablast.wa.senders.getStatus("12");
const qr = await bablast.wa.senders.getQrCode("12");
Official WABA
Kirim Template
hljs typescript
await bablast.waba.sendTemplate({
senderId: "18",
to: "6281234567890",
templateName: "payment_confirmation",
language: "id",
parameters: ["Budi", "INV-001"],
});
Kelola Template
hljs typescript
const templates = await bablast.waba.templates.list();
await bablast.waba.templates.create({
name: "payment_confirmation",
category: "UTILITY",
language: "id",
components: [
{
type: "BODY",
text: "Halo {{1}}, pembayaran invoice {{2}} sudah kami terima.",
},
],
});
Contacts & Groups
hljs typescript
const group = await bablast.contacts.createGroup({
name: "Pelanggan VIP 2026",
code: "VIP_2026",
});
await bablast.contacts.create({
name: "Budi Santoso",
phone: "6281234567890",
email: "[email protected]",
groupId: group.id,
});
await bablast.contacts.addBulkToGroup(group.id, [
{ name: "Siti Rahma", phone: "6281234567891" },
{ name: "Andi Wijaya", phone: "6281234567892" },
]);
Webhook Verification
Gunakan modul webhooks untuk memverifikasi signature HMAC SHA-256 sebelum memproses payload.
hljs typescript
import express from "express";
import { BablastClient } from "@bablast/client";
const app = express();
const bablast = new BablastClient({ apiKey: process.env.BABLAST_API_KEY! });
app.post(
"/webhook/bablast",
express.json(),
bablast.webhooks.expressMiddleware(process.env.BABLAST_WEBHOOK_SECRET!),
(req, res) => {
const event = bablast.webhooks.parseEvent(req.body);
if (event.event === "incoming_message") {
console.log("Pesan masuk:", event.data);
}
if (event.event === "message_status") {
console.log("Status pesan:", event.data);
}
res.sendStatus(200);
}
);
Client Options
hljs typescript
const bablast = new BablastClient({
apiKey: "YOUR_API_KEY",
baseUrl: "https://api.bablast.id/v2/openapi",
timeoutMs: 30_000,
retries: 2,
authHeaderMode: "x-api-key",
headers: {
"x-app-name": "my-backend",
},
});
| Option | Default | Deskripsi |
|---|---|---|
apiKey | Wajib | API key BaBlast. |
baseUrl | https://api.bablast.id/v2/openapi | Override base URL, misalnya untuk white-label domain. |
timeoutMs | 30000 | Timeout request dalam milidetik. |
retries | 2 | Retry otomatis untuk timeout, rate limit, dan error server. |
authHeaderMode | x-api-key | Gunakan x-api-key atau bearer. |
Error Handling
hljs typescript
import { BablastClient, BablastError } from "@bablast/client";
try {
await bablast.wa.sendText({
to: "invalid_phone",
message: "Halo",
});
} catch (error) {
if (error instanceof BablastError) {
console.error(error.status);
console.error(error.code);
console.error(error.response);
}
}