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.
https://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"
}'import requests
response = requests.post(
"https://wbiztool.com/api/v1/schedule_msg/",
json={
"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",
},
timeout=60,
)
result = response.json() # read the body even when the HTTP code is 400
if result.get("status") == 1:
print("Scheduled with msg_id", result["msg_id"])
else:
print("Failed:", result.get("message", "no message in response"))// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const response = await fetch("https://wbiztool.com/api/v1/schedule_msg/", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
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",
}),
});
const result = await response.json(); // read the body even when the HTTP code is 400
if (result.status === 1) {
console.log("Scheduled with msg_id", result.msg_id);
} else {
console.error("Failed:", result.message ?? "no message in response");
}<?php
$payload = [
'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',
];
$ch = curl_init('https://wbiztool.com/api/v1/schedule_msg/');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
if (($result['status'] ?? 0) === 1) {
echo 'Scheduled with msg_id ' . $result['msg_id'];
} else {
echo 'Failed: ' . ($result['message'] ?? 'no message in response');
}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_idintegerwajibAPI Client ID anda dari Settings → API keys (Tetapan → Kunci API).
api_keystringwajibKunci API anda dari halaman yang sama.
whatsapp_clientintegerwajibID nombor WhatsApp yang digunakan untuk menghantar, dari tetapan WhatsApp. Tidak seperti Hantar mesej, endpoint ini tidak pernah memilih nombor untuk anda.
Jadual
datestringwajibHari untuk menghantar mesej, dalam format
dd/mm/yyyy, contohnya24/12/2026.timestringwajibMasa untuk menghantar mesej, dalam format 24 jam
HH:MM, contohnya09:00atau18:45. Jangan sertakan saat.timezonestringpilihanZon waktu bagi
datedantime. Lalai kepadaIST(India) jika anda tidak menyertakannya. Lihat Zon waktu.
Penerima dan mesej
phonestringWajib kecuali anda menghantar group_nameNombor WhatsApp penerima, digit sahaja. Ruang,
+,-,.dan kurungan dibuang secara automatik. Hantar nombor sama ada dengan kod negaranya (919876543210) atau tanpa kod negara (9876543210) bersamacountry_code.group_namestringWajib kecuali anda menghantar phoneNama kumpulan WhatsApp yang disertai oleh nombor anda. Kumpulan dicari dengan cara yang sama seperti dalam Hantar ke kumpulan. Hantar
phoneataugroup_name, jangan kedua-duanya.country_codestringpilihanKod panggilan negara tanpa
+, contohnya91untuk India atau1untuk Amerika Syarikat. Kod ini ditambah di hadapanphonekecuali nombor itu sudah bermula dengannya. Pengecualian: dengan91, 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_typeintegerpilihan0teks (lalai),1imej,2fail atau dokumen.msgstringWajib apabila msg_type ialah 0Teks mesej. Untuk imej dan fail, ini ialah kapsyen dan boleh dibiarkan kosong. Format WhatsApp boleh digunakan:
*bold*,_italic_,~strikethrough~.messagediterima sebagai alias.
Imej dan fail
img_urlstringWajib apabila msg_type ialah 1URL
httpatauhttpsawam bagi imej.file_urlstringWajib apabila msg_type ialah 2URL
httpatauhttpsawam tempat fail boleh dimuat turun secara terus.file_namestringpilihanNama 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
webhookstringpilihanURL yang menerima
POSTapabila mesej dihantar atau gagal. Muatannya sama seperti untuk Hantar mesej.
Bila mesej dihantar#
- Wbiztool menukar
date,timedantimezonekepada 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:
| Singkatan | Dianggap sebagai |
|---|---|
IST | Asia/Kolkata |
UTC | UTC |
GMT | GMT |
EST | US/Eastern |
CST | US/Central |
MST | US/Mountain |
PST | US/Pacific |
CET, CEST | Europe/Paris |
EET, EEST | Europe/Athens |
JST | Asia/Tokyo |
AEST, AEDT | Australia/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"
}'import requests
response = requests.post(
"https://wbiztool.com/api/v1/schedule_msg/",
json={
"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",
},
timeout=60,
)
print(response.json())// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const response = await fetch("https://wbiztool.com/api/v1/schedule_msg/", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
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",
}),
});
console.log(await response.json());<?php
$ch = curl_init('https://wbiztool.com/api/v1/schedule_msg/');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'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',
]),
CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch);
curl_close($ch);Respons#
Permintaan yang berjaya memulangkan HTTP 200:
{
"msg_id": 9817263,
"message": "Created",
"status": 1
}
| Medan | Jenis | Penerangan |
|---|---|---|
status | integer | 1 jika mesej telah dijadualkan, 0 jika permintaan gagal. |
message | string | Created jika berjaya, jika tidak, mesej ralat. |
msg_id | integer | ID 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 }
| Mesej | Cara membetulkannya |
|---|---|
Auth Error | Hantar kedua-dua client_id dan api_key. |
Invalid Client Id | Hantar client_id sebagai nombor. Dipulangkan dengan HTTP 403. |
Auth Error: invalid api key | Pastikan kunci wujud, belum dipadam dan milik client_id ini. Dipulangkan dengan HTTP 400. |
Either phone or group_name parameter is required | Tambah phone atau group_name. |
Please provide either phone OR group_name, not both | Buang salah satu daripadanya. |
Invalid phone number | phone 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 null | Mesej teks (msg_type 0) memerlukan msg. |
Image Url Can't be null | Untuk msg_type 1, hantar img_url. |
File Url Can't be null | Untuk msg_type 2, hantar file_url. |
Scheduled date & time is not in valid format | date atau time tiada, atau timezone ialah rentetan kosong. |
Not enough credits | Pelan anda tiada baki mesej. |
Demo Account can not access apis | Gunakan 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")danstrftime("%H:%M"). Dalam JavaScript, format tarikh dan masa dalam zon waktu yang sama yang anda hantar dalamtimezone, 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_messagePython menghantar tarikh sebagaiYYYY-MM-DD(responsnya{}), danscheduleMessageNode menghantarschedule_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.
