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

ModulAksesKegunaan
Standard WAbablast.waKirim pesan teks, media, bulk, riwayat pesan, dan status sender.
Official WABAbablast.wabaKirim template WABA dan kelola template Meta.
Contactsbablast.contactsBuat kontak, grup kontak, dan bulk insert ke grup.
Webhooksbablast.webhooksVerifikasi 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",
  },
});
OptionDefaultDeskripsi
apiKeyWajibAPI key BaBlast.
baseUrlhttps://api.bablast.id/v2/openapiOverride base URL, misalnya untuk white-label domain.
timeoutMs30000Timeout request dalam milidetik.
retries2Retry otomatis untuk timeout, rate limit, dan error server.
authHeaderModex-api-keyGunakan 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);
  }
}