Langsung ke konten
Wbiztool

API Pesan

API Kirim Pesan

Kirim teks, gambar, atau dokumen WhatsApp ke satu nomor telepon dari nomor WhatsApp Anda yang terhubung. Gunakan untuk konfirmasi pesanan, pengingat pembayaran, notifikasi, dan balasan layanan pelanggan.

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

Body: JSON, field formulir, atau multipart/form-data saat mengunggah file

Pesan masuk antrean dan dikirim dari nomor WhatsApp Anda dalam hitungan detik. Respons memberi Anda msg_id yang dapat digunakan untuk memeriksa statusnya.

Contoh singkat#

curl -X POST https://wbiztool.com/api/v1/send_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, your order #4821 has shipped and will arrive on Thursday."
  }'

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 jika Anda memiliki lebih dari satu nomor

ID nomor WhatsApp yang digunakan untuk mengirim, dari WhatsApp settings (pengaturan WhatsApp). Jika tidak dikirim dan workspace Anda memiliki tepat satu nomor yang terhubung, nomor tersebut yang digunakan.

Penerima dan pesan

phonestringwajib

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. Dengan field formulir, jangan sertakan awalan 0 di depan (09876543210): angka ini tidak dihapus sebelum country_code ditambahkan, sehingga pesan terkirim ke nomor yang salah. Request JSON menghapusnya secara otomatis.

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, nomor lokal yang diawali angka yang sama tidak diberi awalan, jadi kirim nomor tersebut lengkap dengan kode negaranya.

msg_typeintegeropsional

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

msgstringWajib jika msg_type bernilai 0

Teks pesan, hingga 3.000 karakter. 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 dan tidak ada file yang diunggah

URL http atau https publik dari gambar.

file_urlstringWajib jika msg_type bernilai 2 dan tidak ada file yang diunggah

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

filefileopsional

Unggah gambar atau file sebagai ganti URL. Kirim request sebagai multipart/form-data dengan field bernama file.

file_namestringopsional

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

Opsi pengiriman

expire_after_secondsintegeropsional

Tandai pesan sebagai kedaluwarsa (status 4) jika belum terkirim dalam jumlah detik ini, misalnya 3600 untuk satu jam. Berguna untuk pesan yang bergantung pada waktu, seperti perkiraan waktu pengantaran. Proses latar belakang melakukannya paling cepat 30 detik setelah batas waktu, jadi jangan mengandalkannya untuk batas waktu yang lebih pendek dari satu menit.

webhookstringopsional

URL yang menerima POST ketika pesan terkirim atau gagal. Lihat Webhook.

Mengirim gambar dan file#

Batas unduhan untuk img_url dan file_url:

  • URL harus publik: http atau https, dapat dijangkau dari internet. Hingga 5 redirect diikuti, dan setiap redirect juga harus mengarah ke alamat publik.
  • File yang ditautkan boleh berukuran hingga 100 MB. Server harus mulai merespons dalam 45 detik dan tidak boleh berhenti lebih lama dari itu.
  • File diambil saat Anda memanggil API, jadi tautan yang rusak langsung gagal dengan Invalid file url.

Ekstensi yang didukung: .pdf, .xlsx, .xls, .txt, .docx, .png, .jpg, .jpeg, .webp, .mp3, .mpga, .m4a, .mp4, .webm.

Pemeriksaan berikut dijalankan saat pesan dikirim, bukan saat Anda memanggil API, sehingga kegagalannya hanya terlihat di Status pesan dan webhook:

Masalaherror di Status pesan
Gambar (msg_type 1) lebih dari 16 MBFile exceeds WhatsApp size limit (16MB max)
Video (.mp4, .webm) lebih dari 64 MB, atau file kosongFile exceeds WhatsApp size limit (…)
File .ogg, atau file .wav yang dikirim sebagai gambar (msg_type 1)File type not supported

Audio WAV dan OGG tidak didukung. File .wav yang dikirim sebagai file (msg_type 2) tidak ditolak, tetapi diterima sebagai recording.wav.pdf. Konversi audio ke .mp3 atau .m4a terlebih dahulu.

Gambar dari URL
curl -X POST https://wbiztool.com/api/v1/send_msg/ \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": 12345,
    "api_key": "YOUR_API_KEY",
    "whatsapp_client": 678,
    "msg_type": 1,
    "country_code": "91",
    "phone": "9876543210",
    "img_url": "https://example.com/offers/diwali-sale.jpg",
    "msg": "Our Diwali sale starts today 🎉"
  }'
Unggah file
curl -X POST https://wbiztool.com/api/v1/send_msg/ \
  -F client_id=12345 \
  -F api_key=YOUR_API_KEY \
  -F whatsapp_client=678 \
  -F msg_type=2 \
  -F country_code=91 \
  -F phone=9876543210 \
  -F "msg=Your invoice for order #4821 is attached." \
  -F file_name=invoice-4821.pdf \
  -F file=@./invoice-4821.pdf

Menggunakan klien resmi#

Klien Python dan Node.js memanggil endpoint ini untuk Anda.

from wbiztool_client import WbizToolClient

client = WbizToolClient(api_key="YOUR_API_KEY", client_id="12345")

result = client.send_message(
    phone="9876543210",
    country_code="91",
    msg="Hi Aman, your order #4821 has shipped.",
    whatsapp_client=678,
)
print(result)

Error memunculkan requests.HTTPError. Baca penyebabnya dengan e.response.json()["message"].

Respons#

Request yang berhasil mengembalikan HTTP 200:

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

"status": 1 berarti pesan sudah masuk antrean, belum tentu sudah sampai ke penerima. Gunakan webhook atau Status pesan untuk memastikan pesan sudah terkirim.

Error#

Error mengembalikan HTTP 400 dengan status bernilai 0 (Account Disabled tidak memiliki field status):

{ "status": 0, "message": "Msg cant be null" }
PesanCara memperbaikinya
Auth Error - Please send correct API key and Client idKirim api_key yang tidak kosong.
Invalid client id.Kirim client_id sebagai angka.
Auth Error: invalid api keyPastikan key tersebut ada, belum dihapus, dan milik client_id ini.
Either phone or group_name parameter is requiredTambahkan phone.
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.
Message length is too longBatasi msg hingga 3.000 karakter atau kurang.
Image Url Can't be nullUntuk msg_type 1, kirim img_url atau unggah file.
File Url Can't be nullUntuk msg_type 2, kirim file_url atau unggah file.
Invalid file url, Can't download / Invalid file urlURL tidak publik, waktu habis (timeout), atau file lebih dari 100 MB.
Invalid whatsapp clientID whatsapp_client tersebut tidak ada di workspace Anda.
Invalid whatsapp client id.Kirim whatsapp_client. Parameter ini wajib jika workspace Anda memiliki lebih dari satu nomor yang terhubung.
Not enough creditsPaket Anda sudah tidak memiliki sisa pesan.
Demo Account can not access apisGunakan akun biasa.
Account DisabledAkun Anda dinonaktifkan. Hubungi dukungan.
Invalid JSON format: …Body JSON tidak valid, sering kali karena koma di akhir atau baris baru tanpa escape di msg. Gunakan \n untuk baris baru.

Pesan yang sudah masuk antrean masih bisa gagal saat dikirim, misalnya dengan File exceeds WhatsApp size limit (…). Error tersebut tidak pernah muncul di respons ini. Lihat Mengirim gambar dan file dan periksa Status pesan.

Webhook#

Jika Anda mengirim webhook, Wbiztool mengirim POST ke URL tersebut ketika pesan terkirim atau gagal. Body-nya dienkode sebagai formulir (application/x-www-form-urlencoded), bukan JSON:

msg_id=9817263&status=SENT
FieldNilai
msg_idmsg_id yang dikembalikan saat Anda mengirim pesan.
statusSENT atau FAILED

Balas dengan kode 2xx apa pun. Jika endpoint Anda mengalami timeout (setelah 3 detik) atau mengembalikan 5xx, panggilan dicoba ulang hingga total 3 kali. Respons 4xx tidak dicoba ulang. Tidak ada webhook yang dikirim ketika pesan dibatalkan atau kedaluwarsa; gunakan Status pesan untuk kasus tersebut.

Tips#

  • Nomor telepon: simpan nomor dalam format internasional dan kirim bersama country_code untuk menghindari ambiguitas.
  • Baris baru di JSON: tulis sebagai \n di dalam msg. Baris baru mentah membuat JSON tidak valid.
  • Jaga nomor Anda tetap terhubung: pesan dikirim dari nomor WhatsApp Anda, jadi nomor tersebut harus tetap terhubung di WhatsApp settings.
  • Banyak penerima: untuk mengirim pesan yang sama ke beberapa nomor dalam satu request, gunakan Kirim ke banyak nomor. Untuk kampanye besar, unggah spreadsheet dari halaman Campaigns (Kampanye).