Dokumentasi Integrasi API & Otomatisasi
Selamat datang di dokumentasi API WebSheet Gateway. Seluruh
pengiriman pesan via API di bawah ini menggunakan
Sistem Antrian Otomatis (Queue System) berbasis RAM per-user.
Sistem secara standar menerapkan jeda acak aman (default 4â8 detik)
untuk menjaga reputasi nomor Anda, namun Anda juga dapat menentukan
kontrol jeda kustom secara fleksibel menggunakan parameter
delayMin dan
delayMax pada
setiap rute pengiriman.
Autentikasi & Header Wajib
Setiap request ke server wajib menyertakan API Key Anda di dalam komponen Header:
| Key Header | Tipe | Deskripsi |
|---|---|---|
| Content-Type | String |
Wajib diisi
application/json
|
| x-api-key | String | API Key unik milik akun Anda |
/api/send
Digunakan untuk mengirim satu atau banyak pesan teks sekaligus ke nomor pribadi maupun ID Grup.
Request Body (JSON)
{
"number": "628123456789", // Bisa berupa String tunggal, atau Array: ["628123", "628567"]
"message": "Halo, ini contoh pesan teks otomatis.",
"delayMin": 2, // Opsional (detik): Jeda minimal acak antar pesan (Default: 4)
"delayMax": 6 // Opsional (detik): Jeda maksimal acak antar pesan (Default: 8)
}
Response Sukses (200 OK)
{
"success": true,
"message": "1 pesan berhasil dimasukkan ke antrian.",
"targets": ["628123456789@s.whatsapp.net"],
"queueRemaining": 1
}
/api/send-image
Digunakan untuk mengirim media gambar beserta caption-nya dalam format array fleksibel (Multi-Image Broadcast). Mendukung tautan gambar publik umum, **AppSheet Image URL**, serta **Google Drive (Direct Link)**.
Request Body (JSON)
{
"number": ["628123456789"],
"images": [
{
"url": "https://www.appsheet.com/template/gettablefileurl?appName=Inventory-123&tableName=Products&fileName=Products_Images%2Fsepatu.jpg", // Contoh AppSheet
"caption": "Foto Produk dari AppSheet"
},
{
"url": "https://docs.google.com/uc?export=download&id=DRIVE_FILE_ID", // Contoh Google Drive Direct Link
"caption": "Foto Produk dari Google Drive"
}
],
"delayMin": 2, // Opsional (detik): Jeda minimal acak antar broadcast (Default: 4)
"delayMax": 6 // Opsional (detik): Jeda maksimal acak antar broadcast (Default: 8)
}
Response Sukses (200 OK)
{
"success": true,
"message": "2 pesan gambar berhasil dimasukkan ke antrian.",
"targets": ["628123456789@s.whatsapp.net"],
"queueRemaining": 2
}
https://docs.google.com/uc?export=download&id=ID_FILE_ANDA
agar server bisa mengunduh file secara langsung.
/api/send-document
Digunakan untuk mengirim satu atau banyak berkas dokumen sekaligus (seperti PDF, Excel, dsb) secara massal ke banyak nomor tujuan dalam satu antrian (Multi-Document Broadcast).
Request Body (JSON)
{
"number": ["628123456789"],
"documents": [
{
"url": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf",
"fileName": "Invoice_Tagihan.pdf",
"caption": "Silakan unduh invoice tagihan bulan ini."
},
{
"url": "https://docs.google.com/uc?export=download&id=DRIVE_PDF_ID",
"fileName": "Syarat_Ketentuan.pdf",
"caption": "Dokumen pelengkap syarat & ketentuan."
}
],
"delayMin": 2, // Opsional (detik): Jeda minimal acak antar pengiriman dokumen (Default: 4)
"delayMax": 6 // Opsional (detik): Jeda maksimal acak antar pengiriman dokumen (Default: 8)
}
Response Sukses (200 OK)
{
"success": true,
"message": "2 tugas dokumen berhasil dimasukkan ke antrian untuk 1 nomor tujuan.",
"targets": ["628123456789@s.whatsapp.net"],
"queueRemaining": 2
}
Inbound Payload (Menerima Chat)
Jika Anda mengonfigurasi Webhook Bot URL di dashboard, server
kami akan otomatis mem-forward (meneruskan) setiap obrolan teks umum
masuk dari klien menggunakan metode
POST
ke URL server Anda.
đĄ Sistem Proteksi: Pesan lokasi dan pesan yang diawali
dengan prefiks akuntansi resmi (/d, /add,
Paid,
dll) tidak akan ikut dikirim ke webhook ini demi menghindari
bentrokan fungsi bot Anda.
Payload JSON yang Diterima Server Anda (Request dari Kami)
{
"userId": "6a1c3249425c66d4f787d0f7",
"from": "6283873406812@s.whatsapp.net", // ID Pengirim (Bisa personal / @g.us untuk grup)
"pushName": "Ahmad Fauzi", // Nama profil WhatsApp pengirim
"messageId": "BAE53E2A12C54D88", // ID Unik pesan dari Baileys
"text": "Halo bot, bisa minta informasi harga?", // Isi teks chat bersih
"timestamp": 1717307478, // Detik waktu pesan masuk (Epoch timestamp)
"rawMessage": { // Object JSON utuh bawaan Baileys untuk data extra
"key": {
"remoteJid": "6283873406812@s.whatsapp.net",
"fromMe": false,
"id": "BAE53E2A12C54D88"
},
"message": {
"conversation": "Halo bot, bisa minta informasi harga?"
},
"messageTimestamp": 1717307478,
"pushName": "Ahmad Fauzi"
}
}
Autoreply Engine
Mesin penjawab otomatis internal yang bekerja secara asinkron mendeteksi pesan masuk berdasarkan kata kunci (*keyword*) yang telah Anda konfigurasikan di Dashboard tanpa memerlukan server tambahan.
Mekanisme Pencocokan Kata Kunci (Match Type):
- Tepat (Equal): Pesan pemicu harus sama persis 100% dengan kata kunci (Abaikan huruf besar/kecil).
- Mengandung (Contains): Respons akan terpicu jika kalimat pesan menyertakan kata kunci tersebut di posisi mana saja.
Aturan Batasan & Penundaan keamanan:
- Status Deteksi: Otomatis memicu indikator "typing..." (sedang mengetik) pada chat pengirim sebelum membalas.
/dashboard/scheduled/send
Digunakan oleh modul internal dashboard untuk merencanakan dan mengamankan pengiriman pesan teks maupun media di waktu spesifik masa depan menggunakan sistem CRON Worker internal.
Struktur Form / Objek Penyimpanan
{
"title": "Pengingat Iuran Bulanan", // Label pengenal tugas jadwal
"number": "628998877665", // Nomor tujuan tunggal atau grup ID
"message": "Halo, ini pengingat terjadwal otomatis Anda.",
"scheduledAt": "2026-06-15T08:00:00.000Z", // Waktu eksekusi dalam format ISO / Datetime-local
"repeatType": "once" // Opsi Perulangan: once (sekali), daily (harian), weekly (mingguan)
}
Manajemen Siklus Hidup Status (Lifecycle):
| Status | Keterangan Kerja |
|---|---|
| scheduled | Tugas berhasil disimpan dan sedang menunggu waktu eksekusi tiba. |
| running | Sistem sedang memproses pengiriman ke antrean WhatsApp. Tugas terkunci dari aksi modifikasi/hapus. |
| completed | Pesan sukses diteruskan ke nomor tujuan. Jika tipe perulangan aktif, waktu eksekusi otomatis diperbarui ke jadwal berikutnya. |
/dashboard/scheduled-status
Modul otomasi khusus untuk mengunggah Cerita/Story WhatsApp (Status WA) secara terjadwal. Mendukung format berbasis teks murni ataupun gambar multimedia lengkap beserta takarir (*caption*).
1. Membuat Jadwal Status Baru (Multipart Form-Data)
/dashboard/scheduled-status/send
Content-Type:
multipart/form-data
Form Fields:
- title : "Promo Banner Hari Senin" (Text)
- message : "Yuk dibeli brosur diskon akhir pekan!" (Text Area / Caption)
- repeatType : "once" | "daily" | "weekly" (Select Option)
- scheduledAt : "2026-06-12T10:00" (Datetime-local)
- statusImage : [File Binary] (Opsional, File Gambar .jpg/.png)
2. Menghapus Antrean Jadwal Status via AJAX Fetch
Pengguna dapat membatalkan antrean jadwal status yang belum dieksekusi menggunakan fungsi penembakan API asinkron dari sisi klien.
/dashboard/scheduled-status/delete/:id
Method:
DELETE
Response JSON Pembatalan (200 OK)
{
"success": true,
"message": "Jadwal status WhatsApp berhasil dihapus secara permanen."
}
đĄī¸ Aturan Keamanan Transaksi: Tombol aksi hapus akan otomatis
ter-disabled secara sistem di antarmuka jika tugas berstatus
running demi
menghindari kegagalan sinkronisasi dan kerusakan struktur daur hidup
memori pengiriman Baileys Core.