मैसेजिंग API
WhatsApp संदेश शेड्यूल करें API
WhatsApp टेक्स्ट, इमेज या डॉक्यूमेंट को अपनी चुनी हुई तारीख और समय पर किसी फोन नंबर या ग्रुप को भेजने के लिए शेड्यूल करें। इसे अपॉइंटमेंट रिमाइंडर, जन्मदिन की शुभकामनाओं, फॉलो-अप और सीमित समय वाले ऑफर के लिए इस्तेमाल करें।
https://wbiztool.com/api/v1/schedule_msg/बॉडी: JSON या फॉर्म फील्ड
संदेश शेड्यूल किए गए समय तक आपकी कतार में इंतज़ार करता है और फिर आपके WhatsApp नंबर से भेजा जाता है। रिस्पॉन्स में आपको एक msg_id मिलता है, जिससे आप उसका स्टेटस जांच सकते हैं या उसे कैंसल कर सकते हैं।
छोटा उदाहरण#
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');
}12345, YOUR_API_KEY और 678 की जगह अपनी वैल्यू डालें। ये कहां मिलेंगी, यह जानने के लिए ऑथेंटिकेशन देखें।
रिक्वेस्ट पैरामीटर#
ऑथेंटिकेशन
client_idintegerआवश्यकसेटिंग्स → API Keys से आपका API क्लाइंट ID।
api_keystringआवश्यकउसी पेज से आपकी API की।
whatsapp_clientintegerआवश्यकउस WhatsApp नंबर का ID जिससे संदेश भेजना है, WhatsApp सेटिंग्स से। संदेश भेजें API के उलट, यह एंडपॉइंट आपके लिए कभी अपने आप नंबर नहीं चुनता।
शेड्यूल
datestringआवश्यकसंदेश भेजने का दिन,
dd/mm/yyyyफॉर्मेट में, उदाहरण के लिए24/12/2026।timestringआवश्यकसंदेश भेजने का समय, 24-घंटे वाले
HH:MMफॉर्मेट में, उदाहरण के लिए09:00या18:45। सेकंड शामिल न करें।timezonestringवैकल्पिकवह टाइमज़ोन जिसमें
dateऔरtimeदिए गए हैं। अगर आप इसे न भेजें, तो डिफॉल्टIST(भारत) होता है। टाइमज़ोन देखें।
प्राप्तकर्ता और संदेश
phonestringgroup_name न भेजने पर ज़रूरीप्राप्तकर्ता का WhatsApp नंबर, सिर्फ अंक। स्पेस,
+,-,.और ब्रैकेट अपने आप हटा दिए जाते हैं। नंबर या तो देश के कोड के साथ (919876543210) भेजें, या कोड के बिना (9876543210)country_codeके साथ भेजें।group_namestringphone न भेजने पर ज़रूरीकिसी ऐसे WhatsApp ग्रुप का नाम जिसका आपका नंबर सदस्य है। इसे उसी तरह ढूंढा जाता है जैसे ग्रुप में भेजें में।
phoneयाgroup_nameमें से एक भेजें, दोनों कभी नहीं।country_codestringवैकल्पिक+के बिना देश का कॉलिंग कोड, उदाहरण के लिए भारत के लिए91या USA के लिए1। यहphoneके आगे जोड़ा जाता है, जब तक कि नंबर पहले से इसी से शुरू न होता हो। अपवाद:91के साथ, 10 अंकों के नंबर में यह प्रीफिक्स हमेशा जुड़ता है। दूसरे कोड के साथ, जो लोकल नंबर उन्हीं अंकों से शुरू होते हैं उन्हें कंट्री कोड सहित भेजें। ग्रुप के लिए इसे नज़रअंदाज़ किया जाता है।msg_typeintegerवैकल्पिक0टेक्स्ट (डिफॉल्ट),1इमेज,2फाइल या डॉक्यूमेंट।msgstringmsg_type 0 होने पर ज़रूरीसंदेश का टेक्स्ट। इमेज और फाइलों के लिए यह कैप्शन होता है और खाली रह सकता है। WhatsApp फॉर्मेटिंग काम करती है:
*bold*,_italic_,~strikethrough~।messageको भी इसके दूसरे नाम (alias) के रूप में स्वीकार किया जाता है।
इमेज और फाइलें
img_urlstringmsg_type 1 होने पर ज़रूरीइमेज का पब्लिक
httpयाhttpsURL।file_urlstringmsg_type 2 होने पर ज़रूरीपब्लिक
httpयाhttpsURL, जहां से फाइल सीधे डाउनलोड हो सके।file_namestringवैकल्पिकफाइल का वह नाम जो प्राप्तकर्ता को दिखता है, जैसे
invoice-4821.pdf। यह छोटे अक्षरों (lower case) में भेजा जाता है,& : ? * $ ;जैसे कैरेक्टर_से बदल दिए जाते हैं, और इसे 150 कैरेक्टर तक काट दिया जाता है। अगर आप इसे न भेजें, तो नाम URL से लिया जाता है।
डिलीवरी विकल्प
webhookstringवैकल्पिकवह URL जिसे संदेश भेजे जाने या फेल होने पर एक
POSTमिलता है। पेलोड वही है जो संदेश भेजें में है।
संदेश कब भेजा जाता है#
- Wbiztool
date,timeऔरtimezoneको मिलाकर एक पल (moment) तय करता है और वह पल बीत जाने पर संदेश भेजता है, बशर्ते आपका WhatsApp नंबर कनेक्टेड हो। - बीता हुआ समय भी स्वीकार होता है। ऐसा संदेश सामान्य संदेश की तरह तुरंत भेज दिया जाता है। तारीख का फॉर्मेट (
dd/mm/yyyy, पहले दिन) दोबारा जांच लें, ताकि कोई संदेश महीनों पहले न चला जाए। - अगर शेड्यूल किए गए समय पर आपका नंबर डिसकनेक्ट है, तो संदेश इंतज़ार करता है और नंबर दोबारा कनेक्ट होते ही भेज दिया जाता है, भले ही यह तय समय से बहुत बाद हो। इस endpoint में कोई एक्सपायरी नहीं है, इसलिए अगर संदेश अब प्रासंगिक नहीं है तो उसे कैंसल करें। जो संदेश शेड्यूल किए गए समय के 90 दिन बाद भी किसी डिसकनेक्ट या डिलीट हो चुके नंबर पर इंतज़ार कर रहा है, वह डिलीट कर दिया जाता है।
- भेजे जाने तक संदेश का स्टेटस
0(Created) रहता है और उसे कैंसल किया जा सकता है। इंतज़ार के दौरान यह आपके बचे हुए क्रेडिट में भी गिना जाता है।
टाइमज़ोन#
timezone में या तो टाइमज़ोन का नाम दिया जा सकता है या नीचे दिए गए संक्षिप्त नामों में से कोई एक।
टाइमज़ोन नाम, जैसे Asia/Kolkata, America/New_York, Europe/London या Australia/Sydney। IANA टाइमज़ोन डेटाबेस का कोई भी नाम काम करता है। यह सबसे भरोसेमंद विकल्प है। सूची के लिए टाइमज़ोन रेफरेंस देखें।
संक्षिप्त नाम कैपिटल अक्षरों में होने चाहिए। हर संक्षिप्त नाम एक क्षेत्र से जुड़ा है, और उस क्षेत्र का डेलाइट सेविंग टाइम अपने आप लागू होता है:
| संक्षिप्त नाम | किस रूप में माना जाता है |
|---|---|
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 |
उदाहरण के लिए, जुलाई में EST का मतलब न्यूयॉर्क का समर टाइम (UTC−4) है, फिक्स्ड UTC−5 नहीं।
ग्रुप के लिए शेड्यूल करना#
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);रिस्पॉन्स#
सफल रिक्वेस्ट HTTP 200 लौटाती है:
{
"msg_id": 9817263,
"message": "Created",
"status": 1
}
| फील्ड | टाइप | विवरण |
|---|---|---|
status | integer | संदेश शेड्यूल हो गया तो 1, रिक्वेस्ट फेल हुई तो 0। |
message | string | सफल होने पर Created, वरना एरर। |
msg_id | integer | शेड्यूल किए गए संदेश का ID। बाद में स्टेटस जांचने या कैंसल करने के लिए इसे सेव करें। केवल सफल होने पर मौजूद होता है। |
रिस्पॉन्स में शेड्यूल किया गया समय या टाइमज़ोन दोबारा नहीं आता, इसलिए आपने जो भेजा उसे लॉग करें।
एरर#
ज़्यादातर एरर HTTP 200 के साथ आते हैं और उनमें status 0 होता है, इसलिए हमेशा बॉडी में status जांचें:
{ "message": "Scheduled date & time is not in valid format", "status": 0 }
| संदेश | कैसे ठीक करें |
|---|---|
Auth Error | client_id और api_key दोनों भेजें। |
Invalid Client Id | client_id को नंबर के रूप में भेजें। HTTP 403 के साथ लौटता है। |
Auth Error: invalid api key | जांचें कि की मौजूद है, डिलीट नहीं हुई है और इसी client_id की है। HTTP 400 के साथ लौटता है। |
Either phone or group_name parameter is required | phone या group_name जोड़ें। |
Please provide either phone OR group_name, not both | इनमें से एक हटा दें। |
Invalid phone number | phone में सिर्फ अंक (6–17) होने चाहिए, शुरुआत में + हो सकता है। |
Invalid Contact Number "…" | देश का कोड जोड़ने के बाद नंबर 6–15 अंकों का होना चाहिए। |
Msg cant be null | टेक्स्ट संदेशों (msg_type 0) के लिए msg ज़रूरी है। |
Image Url Can't be null | msg_type 1 के लिए img_url भेजें। |
File Url Can't be null | msg_type 2 के लिए file_url भेजें। |
Scheduled date & time is not in valid format | date या time मौजूद नहीं है, या timezone एक खाली स्ट्रिंग है। |
Not enough credits | आपके प्लान में कोई संदेश नहीं बचा है। |
Demo Account can not access apis | सामान्य अकाउंट इस्तेमाल करें। |
Invalid JSON format: … | JSON बॉडी सही नहीं है, या आपने client_id के बिना फॉर्म फील्ड भेजे हैं। |
सुझाव#
-
तारीख ध्यान से बनाएं: Python में
strftime("%d/%m/%Y")औरstrftime("%H:%M")इस्तेमाल करें। JavaScript में तारीख और समय को उसी टाइमज़ोन में फॉर्मेट करें जो आपtimezoneमें भेजते हैं, अपने सर्वर के लोकल समय में नहीं: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" -
समय की पुष्टि करें: पांच मिनट आगे का एक टेस्ट संदेश शेड्यूल करें और जांचें कि वह उम्मीद के समय पर पहुंचता है।
-
प्लान बदल गया: दोबारा शेड्यूल करने के लिए संदेश को कैंसल करें और नया संदेश शेड्यूल करें।
-
फिलहाल शेड्यूल करने के लिए आधिकारिक क्लाइंट इस्तेमाल न करें: Python का
schedule_messageतारीख कोYYYY-MM-DDके रूप में भेजता है (रिस्पॉन्स{}आता है), और Node काscheduleMessageschedule_timeभेजता है, जिसे यह एंडपॉइंट नहीं पढ़ता। ऊपर दिखाए अनुसार एंडपॉइंट को सीधे कॉल करें। -
बार-बार भेजे जाने वाले संदेश: हर महीने के पेमेंट रिमाइंडर जैसे दोहराए जाने वाले संदेशों के लिए रिमाइंडर बनाएं देखें।
