मुख्य सामग्री पर जाएं
Wbiztool

मैसेजिंग API

WhatsApp संदेश शेड्यूल करें API

WhatsApp टेक्स्ट, इमेज या डॉक्यूमेंट को अपनी चुनी हुई तारीख और समय पर किसी फोन नंबर या ग्रुप को भेजने के लिए शेड्यूल करें। इसे अपॉइंटमेंट रिमाइंडर, जन्मदिन की शुभकामनाओं, फॉलो-अप और सीमित समय वाले ऑफर के लिए इस्तेमाल करें।

POSThttps://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"
  }'

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 या https URL।

file_urlstringmsg_type 2 होने पर ज़रूरी

पब्लिक http या https URL, जहां से फाइल सीधे डाउनलोड हो सके।

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 टाइमज़ोन डेटाबेस का कोई भी नाम काम करता है। यह सबसे भरोसेमंद विकल्प है। सूची के लिए टाइमज़ोन रेफरेंस देखें।

संक्षिप्त नाम कैपिटल अक्षरों में होने चाहिए। हर संक्षिप्त नाम एक क्षेत्र से जुड़ा है, और उस क्षेत्र का डेलाइट सेविंग टाइम अपने आप लागू होता है:

संक्षिप्त नामकिस रूप में माना जाता है
ISTAsia/Kolkata
UTCUTC
GMTGMT
ESTUS/Eastern
CSTUS/Central
MSTUS/Mountain
PSTUS/Pacific
CET, CESTEurope/Paris
EET, EESTEurope/Athens
JSTAsia/Tokyo
AEST, AEDTAustralia/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"
  }'

रिस्पॉन्स#

सफल रिक्वेस्ट HTTP 200 लौटाती है:

{
  "msg_id": 9817263,
  "message": "Created",
  "status": 1
}
फील्डटाइपविवरण
statusintegerसंदेश शेड्यूल हो गया तो 1, रिक्वेस्ट फेल हुई तो 0
messagestringसफल होने पर Created, वरना एरर।
msg_idintegerशेड्यूल किए गए संदेश का ID। बाद में स्टेटस जांचने या कैंसल करने के लिए इसे सेव करें। केवल सफल होने पर मौजूद होता है।

रिस्पॉन्स में शेड्यूल किया गया समय या टाइमज़ोन दोबारा नहीं आता, इसलिए आपने जो भेजा उसे लॉग करें।

एरर#

ज़्यादातर एरर HTTP 200 के साथ आते हैं और उनमें status 0 होता है, इसलिए हमेशा बॉडी में status जांचें:

{ "message": "Scheduled date & time is not in valid format", "status": 0 }
संदेशकैसे ठीक करें
Auth Errorclient_id और api_key दोनों भेजें।
Invalid Client Idclient_id को नंबर के रूप में भेजें। HTTP 403 के साथ लौटता है।
Auth Error: invalid api keyजांचें कि की मौजूद है, डिलीट नहीं हुई है और इसी client_id की है। HTTP 400 के साथ लौटता है।
Either phone or group_name parameter is requiredphone या group_name जोड़ें।
Please provide either phone OR group_name, not bothइनमें से एक हटा दें।
Invalid phone numberphone में सिर्फ अंक (6–17) होने चाहिए, शुरुआत में + हो सकता है।
Invalid Contact Number "…"देश का कोड जोड़ने के बाद नंबर 6–15 अंकों का होना चाहिए।
Msg cant be nullटेक्स्ट संदेशों (msg_type 0) के लिए msg ज़रूरी है।
Image Url Can't be nullmsg_type 1 के लिए img_url भेजें।
File Url Can't be nullmsg_type 2 के लिए file_url भेजें।
Scheduled date & time is not in valid formatdate या 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 का scheduleMessage schedule_time भेजता है, जिसे यह एंडपॉइंट नहीं पढ़ता। ऊपर दिखाए अनुसार एंडपॉइंट को सीधे कॉल करें।

  • बार-बार भेजे जाने वाले संदेश: हर महीने के पेमेंट रिमाइंडर जैसे दोहराए जाने वाले संदेशों के लिए रिमाइंडर बनाएं देखें।