Langkau ke kandungan
Wbiztool

API mesej

API Jadualkan Mesej WhatsApp

Jadualkan teks, imej atau dokumen WhatsApp untuk dihantar ke nombor telefon atau kumpulan pada tarikh dan masa pilihan anda. Gunakannya untuk peringatan temu janji, ucapan hari jadi, susulan dan tawaran yang terhad masa.

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

Body: JSON atau medan borang

Mesej menunggu dalam baris gilir anda sehingga masa yang dijadualkan, kemudian dihantar dari nombor WhatsApp anda. Respons memberikan msg_id yang boleh anda gunakan untuk menyemak statusnya atau membatalkannya.

Contoh ringkas#

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"
  }'

Gantikan 12345, YOUR_API_KEY dan 678 dengan nilai anda sendiri. Lihat Pengesahan identiti untuk mengetahui di mana nilai ini boleh didapati.

Parameter permintaan#

Pengesahan identiti

client_idintegerwajib

API Client ID anda dari Settings → API keys (Tetapan → Kunci API).

api_keystringwajib

Kunci API anda dari halaman yang sama.

whatsapp_clientintegerwajib

ID nombor WhatsApp yang digunakan untuk menghantar, dari tetapan WhatsApp. Tidak seperti Hantar mesej, endpoint ini tidak pernah memilih nombor untuk anda.

Jadual

datestringwajib

Hari untuk menghantar mesej, dalam format dd/mm/yyyy, contohnya 24/12/2026.

timestringwajib

Masa untuk menghantar mesej, dalam format 24 jam HH:MM, contohnya 09:00 atau 18:45. Jangan sertakan saat.

timezonestringpilihan

Zon waktu bagi date dan time. Lalai kepada IST (India) jika anda tidak menyertakannya. Lihat Zon waktu.

Penerima dan mesej

phonestringWajib kecuali anda menghantar group_name

Nombor WhatsApp penerima, digit sahaja. Ruang, +, -, . dan kurungan dibuang secara automatik. Hantar nombor sama ada dengan kod negaranya (919876543210) atau tanpa kod negara (9876543210) bersama country_code.

group_namestringWajib kecuali anda menghantar phone

Nama kumpulan WhatsApp yang disertai oleh nombor anda. Kumpulan dicari dengan cara yang sama seperti dalam Hantar ke kumpulan. Hantar phone atau group_name, jangan kedua-duanya.

country_codestringpilihan

Kod panggilan negara tanpa +, contohnya 91 untuk India atau 1 untuk Amerika Syarikat. Kod ini ditambah di hadapan phone kecuali nombor itu sudah bermula dengannya. Pengecualian: dengan 91, nombor 10 digit sentiasa diberi awalan. Dengan kod lain, hantar nombor tempatan yang bermula dengan digit yang sama bersama kod negaranya. Diabaikan untuk kumpulan.

msg_typeintegerpilihan

0 teks (lalai), 1 imej, 2 fail atau dokumen.

msgstringWajib apabila msg_type ialah 0

Teks mesej. Untuk imej dan fail, ini ialah kapsyen dan boleh dibiarkan kosong. Format WhatsApp boleh digunakan: *bold*, _italic_, ~strikethrough~. message diterima sebagai alias.

Imej dan fail

img_urlstringWajib apabila msg_type ialah 1

URL http atau https awam bagi imej.

file_urlstringWajib apabila msg_type ialah 2

URL http atau https awam tempat fail boleh dimuat turun secara terus.

file_namestringpilihan

Nama fail yang dilihat oleh penerima, seperti invoice-4821.pdf. Nama dihantar dalam huruf kecil, aksara seperti & : ? * $ ; digantikan dengan _, dan nama dipotong kepada 150 aksara. Jika anda tidak menyertakannya, nama diambil daripada URL.

Pilihan penghantaran

webhookstringpilihan

URL yang menerima POST apabila mesej dihantar atau gagal. Muatannya sama seperti untuk Hantar mesej.

Bila mesej dihantar#

  • Wbiztool menukar date, time dan timezone kepada satu detik masa dan menghantar mesej sebaik sahaja detik itu berlalu, selagi nombor WhatsApp anda disambungkan.
  • Masa yang telah berlalu diterima. Mesej dihantar serta-merta, seperti penghantaran biasa. Semak semula format tarikh (dd/mm/yyyy, hari dahulu) supaya anda tidak menghantar mesej beberapa bulan lebih awal.
  • Jika nombor anda terputus sambungan pada masa yang dijadualkan, mesej akan menunggu dan dihantar sebaik sahaja nombor itu disambungkan semula, walaupun jauh lebih lewat daripada yang dirancang. Endpoint ini tiada tamat tempoh, jadi batalkan mesej jika ia tidak lagi relevan. Mesej yang masih menunggu pada nombor yang terputus sambungan atau dipadam 90 hari selepas masa yang dijadualkan akan dipadam.
  • Sehingga ia dihantar, mesej mempunyai status 0 (Created) dan boleh dibatalkan. Mesej ini juga dikira dalam baki kredit anda semasa ia menunggu.

Zon waktu#

timezone menerima sama ada nama zon waktu atau salah satu singkatan di bawah.

Nama zon waktu seperti Asia/Kolkata, America/New_York, Europe/London atau Australia/Sydney. Mana-mana nama daripada pangkalan data zon waktu IANA boleh digunakan. Ini pilihan yang paling boleh dipercayai. Lihat Rujukan zon waktu untuk senarainya.

Singkatan mesti dalam huruf besar. Setiap satu dipetakan kepada satu rantau, dan waktu jimat siang rantau itu digunakan secara automatik:

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

Contohnya, EST pada bulan Julai bermaksud waktu musim panas New York (UTC−4), bukan UTC−5 yang tetap.

Menjadualkan untuk kumpulan#

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#

Permintaan yang berjaya memulangkan HTTP 200:

{
  "msg_id": 9817263,
  "message": "Created",
  "status": 1
}
MedanJenisPenerangan
statusinteger1 jika mesej telah dijadualkan, 0 jika permintaan gagal.
messagestringCreated jika berjaya, jika tidak, mesej ralat.
msg_idintegerID mesej yang dijadualkan. Simpan untuk menyemak status atau membatalkannya kemudian. Hanya ada jika berjaya.

Respons tidak mengulangi masa atau zon waktu yang dijadualkan, jadi rekodkan apa yang anda hantar.

Ralat#

Kebanyakan ralat memulangkan HTTP 200 dengan status ditetapkan kepada 0, jadi sentiasa semak status dalam badan respons:

{ "message": "Scheduled date & time is not in valid format", "status": 0 }
MesejCara membetulkannya
Auth ErrorHantar kedua-dua client_id dan api_key.
Invalid Client IdHantar client_id sebagai nombor. Dipulangkan dengan HTTP 403.
Auth Error: invalid api keyPastikan kunci wujud, belum dipadam dan milik client_id ini. Dipulangkan dengan HTTP 400.
Either phone or group_name parameter is requiredTambah phone atau group_name.
Please provide either phone OR group_name, not bothBuang salah satu daripadanya.
Invalid phone numberphone mesti mengandungi digit sahaja (6–17 digit), boleh bermula dengan +.
Invalid Contact Number "…"Selepas kod negara ditambah, nombor mesti sepanjang 6–15 digit.
Msg cant be nullMesej teks (msg_type 0) memerlukan msg.
Image Url Can't be nullUntuk msg_type 1, hantar img_url.
File Url Can't be nullUntuk msg_type 2, hantar file_url.
Scheduled date & time is not in valid formatdate atau time tiada, atau timezone ialah rentetan kosong.
Not enough creditsPelan anda tiada baki mesej.
Demo Account can not access apisGunakan akaun biasa.
Invalid JSON format: …Badan JSON tidak sah, atau anda menghantar medan borang tanpa client_id.

Petua#

  • Bina tarikh dengan teliti: dalam Python gunakan strftime("%d/%m/%Y") dan strftime("%H:%M"). Dalam JavaScript, format tarikh dan masa dalam zon waktu yang sama yang anda hantar dalam timezone, bukan waktu tempatan pelayan 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"
  • Sahkan masanya: jadualkan mesej ujian lima minit ke hadapan dan pastikan ia tiba pada masa yang anda jangkakan.

  • Perubahan rancangan: untuk menjadualkan semula, batalkan mesej dan jadualkan mesej baharu.

  • Jangan gunakan klien rasmi untuk menjadualkan buat masa ini: schedule_message Python menghantar tarikh sebagai YYYY-MM-DD (responsnya {}), dan scheduleMessage Node menghantar schedule_time, yang tidak dibaca oleh endpoint ini. Panggil endpoint secara terus seperti yang ditunjukkan di atas.

  • Mesej berulang: untuk mesej yang berulang, seperti peringatan bayaran bulanan, lihat Cipta peringatan.