Langsung ke konten
Wbiztool

API Pesan

API Jadwalkan Pesan WhatsApp

Jadwalkan teks, gambar, atau dokumen WhatsApp untuk dikirim ke nomor telepon atau grup pada tanggal dan jam pilihan Anda. Gunakan untuk pengingat janji temu, ucapan ulang tahun, tindak lanjut, dan penawaran berbatas waktu.

POSThttps://wbiztool.com/api/v1/schedule_msg/

Body: JSON atau field formulir

Pesan menunggu di antrean Anda sampai waktu yang dijadwalkan, lalu dikirim dari nomor WhatsApp Anda. Respons memberi Anda msg_id yang dapat digunakan untuk memeriksa statusnya atau membatalkannya.

Contoh singkat#

curl -X POST https://wbiztool.com/api/v1/schedule_msg/ \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": 12345,
    "api_key": "YOUR_API_KEY",
    "whatsapp_client": 678,
    "msg_type": 0,
    "country_code": "91",
    "phone": "9876543210",
    "msg": "Hi Aman, a reminder that your appointment is today at 11:30 AM.",
    "date": "24/12/2026",
    "time": "09:00",
    "timezone": "Asia/Kolkata"
  }'

Ganti 12345, YOUR_API_KEY, dan 678 dengan nilai Anda sendiri. Lihat Autentikasi untuk mengetahui di mana menemukannya.

Parameter request#

Autentikasi

client_idintegerwajib

API Client ID Anda dari Settings → API keys (Pengaturan → Kunci API).

api_keystringwajib

API key Anda dari halaman yang sama.

whatsapp_clientintegerwajib

ID nomor WhatsApp yang digunakan untuk mengirim, dari WhatsApp settings (pengaturan WhatsApp). Berbeda dengan Kirim pesan, endpoint ini tidak pernah memilihkan nomor untuk Anda.

Jadwal

datestringwajib

Tanggal pengiriman pesan, dalam format dd/mm/yyyy, misalnya 24/12/2026.

timestringwajib

Jam pengiriman pesan, dalam format 24 jam HH:MM, misalnya 09:00 atau 18:45. Jangan sertakan detik.

timezonestringopsional

Zona waktu yang digunakan untuk date dan time. Default-nya IST (India) jika tidak dikirim. Lihat Zona waktu.

Penerima dan pesan

phonestringWajib kecuali Anda mengirim group_name

Nomor WhatsApp penerima, hanya angka. Spasi, +, -, ., dan tanda kurung otomatis dihapus. Kirim nomor dengan kode negaranya (919876543210) atau tanpa kode negara (9876543210) bersama country_code.

group_namestringWajib kecuali Anda mengirim phone

Nama grup WhatsApp yang beranggotakan nomor Anda. Grup dicari dengan cara yang sama seperti di Kirim ke grup. Kirim phone atau group_name, jangan keduanya.

country_codestringopsional

Kode panggilan negara tanpa +, misalnya 91 untuk India atau 1 untuk Amerika Serikat. Kode ini ditambahkan di depan phone kecuali nomornya sudah diawali kode tersebut. Pengecualian: dengan 91, nomor 10 digit selalu mendapat awalan. Dengan kode lain, kirim nomor lokal yang diawali angka yang sama lengkap dengan kode negaranya. Diabaikan untuk grup.

msg_typeintegeropsional

0 teks (default), 1 gambar, 2 file atau dokumen.

msgstringWajib jika msg_type bernilai 0

Teks pesan. Untuk gambar dan file, ini adalah keterangan (caption) dan boleh kosong. Format WhatsApp berfungsi: *bold*, _italic_, ~strikethrough~. message diterima sebagai alias.

Gambar dan file

img_urlstringWajib jika msg_type bernilai 1

URL http atau https publik dari gambar.

file_urlstringWajib jika msg_type bernilai 2

URL http atau https publik tempat file dapat diunduh secara langsung.

file_namestringopsional

Nama file yang dilihat penerima, misalnya invoice-4821.pdf. Nama dikirim dalam huruf kecil, karakter seperti & : ? * $ ; diganti dengan _, dan dipotong menjadi 150 karakter. Jika tidak dikirim, nama diambil dari URL.

Opsi pengiriman

webhookstringopsional

URL yang menerima POST ketika pesan terkirim atau gagal. Payload-nya sama seperti pada Kirim pesan.

Kapan pesan dikirim#

  • Wbiztool mengonversi date, time, dan timezone menjadi satu titik waktu dan mengirim pesan setelah waktu tersebut terlewati, selama nomor WhatsApp Anda terhubung.
  • Waktu yang sudah lewat tetap diterima. Pesan langsung dikirim, seperti pengiriman biasa. Periksa kembali format tanggal (dd/mm/yyyy, tanggal lebih dulu) agar Anda tidak mengirim pesan berbulan-bulan lebih awal.
  • Jika nomor Anda terputus pada waktu yang dijadwalkan, pesan menunggu dan dikirim segera setelah nomor terhubung kembali, meskipun jauh lebih lambat dari rencana. Endpoint ini tidak memiliki masa kedaluwarsa, jadi batalkan pesan jika sudah tidak relevan. Pesan yang masih menunggu pada nomor yang terputus atau dihapus 90 hari setelah waktu jadwalnya akan dihapus.
  • Sampai terkirim, pesan berstatus 0 (Created) dan dapat dibatalkan. Selama menunggu, pesan juga mengurangi sisa kredit Anda.

Zona waktu#

timezone menerima nama zona waktu atau salah satu singkatan di bawah ini.

Nama zona waktu seperti Asia/Kolkata, America/New_York, Europe/London, atau Australia/Sydney. Nama apa pun dari database zona waktu IANA dapat digunakan. Ini adalah opsi yang paling andal. Lihat Referensi zona waktu untuk daftarnya.

Singkatan harus ditulis dengan huruf kapital. Setiap singkatan dipetakan ke sebuah wilayah, dan waktu musim panas (daylight saving time) wilayah tersebut diterapkan secara otomatis:

SingkatanDiperlakukan sebagai
ISTAsia/Kolkata
UTCUTC
GMTGMT
ESTUS/Eastern
CSTUS/Central
MSTUS/Mountain
PSTUS/Pacific
CET, CESTEurope/Paris
EET, EESTEurope/Athens
JSTAsia/Tokyo
AEST, AEDTAustralia/Sydney

Misalnya, EST di bulan Juli berarti waktu musim panas New York (UTC−4), bukan UTC−5 yang tetap.

Menjadwalkan untuk grup#

curl -X POST https://wbiztool.com/api/v1/schedule_msg/ \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": 12345,
    "api_key": "YOUR_API_KEY",
    "whatsapp_client": 678,
    "msg_type": 0,
    "group_name": "Sales Team Mumbai",
    "msg": "Team meeting starts in 15 minutes.",
    "date": "24/12/2026",
    "time": "14:45",
    "timezone": "Asia/Kolkata"
  }'

Respons#

Request yang berhasil mengembalikan HTTP 200:

{
  "msg_id": 9817263,
  "message": "Created",
  "status": 1
}
FieldTipeDeskripsi
statusinteger1 jika pesan berhasil dijadwalkan, 0 jika request gagal.
messagestringCreated jika berhasil, selain itu berisi error.
msg_idintegerID pesan terjadwal. Simpan untuk memeriksa status atau membatalkannya nanti. Hanya ada jika berhasil.

Respons tidak mengulang waktu jadwal atau zona waktu, jadi catat apa yang Anda kirim.

Error#

Sebagian besar error mengembalikan HTTP 200 dengan status bernilai 0, jadi selalu periksa status di body:

{ "message": "Scheduled date & time is not in valid format", "status": 0 }
PesanCara memperbaikinya
Auth ErrorKirim client_id dan api_key.
Invalid Client IdKirim client_id sebagai angka. Dikembalikan dengan HTTP 403.
Auth Error: invalid api keyPastikan key tersebut ada, belum dihapus, dan milik client_id ini. Dikembalikan dengan HTTP 400.
Either phone or group_name parameter is requiredTambahkan phone atau group_name.
Please provide either phone OR group_name, not bothHapus salah satunya.
Invalid phone numberphone hanya boleh berisi angka (6–17 digit), boleh diawali +.
Invalid Contact Number "…"Setelah kode negara ditambahkan, nomor harus sepanjang 6–15 digit.
Msg cant be nullPesan teks (msg_type 0) memerlukan msg.
Image Url Can't be nullUntuk msg_type 1, kirim img_url.
File Url Can't be nullUntuk msg_type 2, kirim file_url.
Scheduled date & time is not in valid formatdate atau time tidak dikirim, atau timezone berupa string kosong.
Not enough creditsPaket Anda sudah tidak memiliki sisa pesan.
Demo Account can not access apisGunakan akun biasa.
Invalid JSON format: …Body JSON tidak valid, atau Anda mengirim field formulir tanpa client_id.

Tips#

  • Susun tanggal dengan cermat: di Python gunakan strftime("%d/%m/%Y") dan strftime("%H:%M"). Di JavaScript, format tanggal dan jam dalam zona waktu yang sama dengan yang Anda kirim di timezone, bukan waktu lokal server Anda:

    const tz = "Asia/Kolkata"; // d is the Date to send at
    const date = new Intl.DateTimeFormat("en-GB", { timeZone: tz, day: "2-digit", month: "2-digit", year: "numeric" }).format(d); // "24/12/2026"
    const time = new Intl.DateTimeFormat("en-GB", { timeZone: tz, hour: "2-digit", minute: "2-digit", hourCycle: "h23" }).format(d); // "09:00"
  • Pastikan waktunya benar: jadwalkan pesan uji lima menit ke depan dan periksa apakah pesan tiba sesuai harapan.

  • Perubahan rencana: untuk mengubah jadwal, batalkan pesan lalu jadwalkan pesan baru.

  • Jangan gunakan klien resmi untuk penjadwalan untuk saat ini: schedule_message di Python mengirim tanggal sebagai YYYY-MM-DD (responsnya {}), dan scheduleMessage di Node mengirim schedule_time, yang tidak dibaca oleh endpoint ini. Panggil endpoint secara langsung seperti contoh di atas.

  • Pesan berulang: untuk pesan yang berulang, seperti pengingat pembayaran bulanan, lihat Buat pengingat.