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

मैसेजिंग API

कई नंबरों पर भेजें API

एक ही रिक्वेस्ट में एक ही WhatsApp संदेश कई फोन नंबरों और ग्रुप को भेजें। इसे न्यूज़लेटर, ऑफर और घोषणाओं जैसे छोटे ब्रॉडकास्ट के लिए इस्तेमाल करें।

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

बॉडी: JSON या फॉर्म फील्ड

Wbiztool हर प्राप्तकर्ता के लिए एक अलग संदेश बनाता है और हर संदेश का msg_id लौटाता है, ताकि आप हर संदेश का स्टेटस अलग से जांच सकें।

छोटा उदाहरण#

curl -X POST https://wbiztool.com/api/v1/send_msg/multi/ \
  -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,9812345670,Sales Team Mumbai",
    "msg": "Our Diwali sale starts tomorrow. Get 20% off on all orders!"
  }'

12345, YOUR_API_KEY और 678 की जगह अपनी वैल्यू डालें। ये कहां मिलेंगी, यह जानने के लिए ऑथेंटिकेशन देखें।

रिक्वेस्ट पैरामीटर#

ऑथेंटिकेशन

client_idintegerआवश्यक

सेटिंग्स → API Keys से आपका API क्लाइंट ID।

api_keystringआवश्यक

उसी पेज से आपकी API की।

whatsapp_clientintegerआवश्यक

उस WhatsApp नंबर का ID जिससे संदेश भेजना है, WhatsApp सेटिंग्स से। संदेश भेजें API के उलट, यह एंडपॉइंट आपके लिए कभी अपने आप नंबर नहीं चुनता।

प्राप्तकर्ता और संदेश

phonestringआवश्यक

फोन नंबर और ग्रुप के नाम कॉमा से अलग की गई एक ही स्ट्रिंग में, उदाहरण के लिए 9876543210,9812345670,Sales Team Mumbai। JSON ऐरे न भेजें। प्राप्तकर्ता कैसे पढ़े जाते हैं देखें।

country_codestringवैकल्पिक

+ के बिना देश का कॉलिंग कोड, उदाहरण के लिए 91। यह हर फोन नंबर के आगे जोड़ा जाता है, जब तक कि नंबर पहले से इसी से शुरू न होता हो। JSON में इसे नंबर नहीं, स्ट्रिंग ("91") के रूप में भेजें। अगर आप इसे नंबर के रूप में भेजते हैं, तो सूची का हर फोन नंबर ग्रुप का नाम माना जाता है (is_group: true), और वे संदेश फेल हो जाते हैं।

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वैकल्पिक

फाइल का वह नाम जो प्राप्तकर्ताओं को दिखता है, जैसे price-list.pdf। यह छोटे अक्षरों (lower case) में भेजा जाता है, & : ? * $ ; जैसे कैरेक्टर _ से बदल दिए जाते हैं, और इसे 150 कैरेक्टर तक काट दिया जाता है। अगर आप इसे न भेजें, तो नाम URL से लिया जाता है।

डिलीवरी विकल्प

webhookstringवैकल्पिक

वह URL जिसे हर संदेश के भेजे जाने या फेल होने पर एक POST मिलता है। पेलोड वही है जो संदेश भेजें में है।

URL से इमेजcURL
curl -X POST https://wbiztool.com/api/v1/send_msg/multi/ \
  -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,9812345670",
    "img_url": "https://example.com/offers/diwali-sale.jpg",
    "msg": "Our Diwali sale starts tomorrow."
  }'

प्राप्तकर्ता कैसे पढ़े जाते हैं#

Wbiztool phone को कॉमा पर बांटता है, हर आइटम के आसपास की स्पेस हटाता है और फिर तय करता है कि हर आइटम क्या है:

  • सिर्फ अंक (शुरुआत में + या शून्य होना ठीक है): इसे फोन नंबर माना जाता है। country_code जोड़ा जाता है, जब तक कि नंबर पहले से उसी से शुरू न होता हो; इसके बाद नंबर 6 से 15 अंकों का होना चाहिए।
  • बाकी सब कुछ: इसे WhatsApp ग्रुप का नाम माना जाता है, और ग्रुप उसी तरह ढूंढा जाता है जैसे ग्रुप में भेजें में।
  • जिस ग्रुप के नाम में सिर्फ अंक हैं (जैसे 2024), उसे फोन नंबर माना जाता है, और जिन ग्रुप के नाम में कॉमा है उन्हें इस endpoint से नहीं भेजा जा सकता। उनके लिए ग्रुप में भेजें इस्तेमाल करें।

ध्यान रखने वाली दूसरी बातें:

  • देश का कोड जोड़ने के बाद जो नंबर बहुत छोटे या बहुत लंबे हों, उन्हें बिना किसी सूचना के छोड़ दिया जाता है। वे रिस्पॉन्स में नहीं दिखते और उन्हें msg_id नहीं मिलता।
  • डुप्लिकेट नहीं हटाए जाते। जो नंबर दो बार लिखा गया है, उसे दो संदेश मिलते हैं।
  • अगर कोई लोकल नंबर संयोग से country_code वाले अंकों से ही शुरू होता है (उदाहरण के लिए country_code 91 के साथ 9123456780), तो कोड नहीं जोड़ा जाता। ऐसे नंबर देश के कोड सहित भेजें (919123456780)।
  • API कॉल करते समय इमेज और फाइल के URL नहीं जांचे जाते। वे हर संदेश भेजे जाते समय डाउनलोड होते हैं, इसलिए टूटा हुआ लिंक रिक्वेस्ट को नहीं, बल्कि बाद में संदेशों को फेल करता है। भेजते समय संदेश भेजें वाले ही नियम लागू होते हैं: 16 MB से बड़ी इमेज और 64 MB से बड़े वीडियो फेल होते हैं, WAV और OGG ऑडियो सपोर्ट नहीं होते, और बिना समर्थित एक्सटेंशन वाली फाइलों (msg_type 2) में .pdf जुड़ जाता है। इमेज और फाइलें भेजना देखें।

क्रेडिट#

कुछ भी बनाने से पहले पूरे बैच को आपके बचे हुए क्रेडिट से मिलाकर जांचा जाता है। phone का हर गैर-खाली आइटम गिना जाता है, उन आइटम सहित जिन्हें बाद में छोड़ दिया जाता है। अगर यह संख्या आपके बचे हुए क्रेडिट से ज़्यादा है, तो कोई भी संदेश नहीं बनाया जाता और आपको यह मिलता है:

{
  "message": "Not enough credits: 120 messages requested, 85 credits remaining",
  "status": 0
}

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

रिस्पॉन्स#

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

{
  "msg_ids": [9817263, 9817264, 9817265],
  "messages": [
    { "msg_id": 9817263, "contact": "919876543210", "is_group": false },
    { "msg_id": 9817264, "contact": "919812345670", "is_group": false },
    { "msg_id": 9817265, "contact": "Sales Team Mumbai", "is_group": true }
  ],
  "message": "Successfully created 3 messages",
  "status": 1
}
फील्डटाइपविवरण
statusintegerअगर कम से कम एक संदेश कतार में गया तो 1, वरना 0
messagestringसफल होने पर Successfully created N messages, वरना एरर।
msg_idsarray of integersकतार में गए संदेशों के ID, phone के क्रम में। केवल सफल होने पर मौजूद होता है।
messagesarrayकतार में गए हर संदेश के लिए एक ऑब्जेक्ट। केवल सफल होने पर मौजूद होता है।
messages[].msg_idintegerसंदेश का ID।
messages[].contactstringदेश का कोड लगाने के बाद का फोन नंबर, या ग्रुप का नाम।
messages[].is_groupbooleanअगर आइटम को ग्रुप का नाम माना गया तो true

छोड़े गए नंबर ढूंढने के लिए messages को अपनी भेजी गई सूची से मिलाएं, और जांचें कि जिन आइटम को आपने फोन नंबर के रूप में भेजा था, उन सभी के लिए is_group false हो।

एरर#

ज़्यादातर एरर HTTP 200 के साथ आते हैं और उनमें status 0 होता है, इसलिए हमेशा बॉडी में status जांचें। HTTP 400 और 403 एरर को छोड़कर, सभी रिस्पॉन्स (सफल रिस्पॉन्स भी) Content-Type: text/html के साथ भेजे गए JSON होते हैं, इसलिए अपने आप JSON पहचानने पर भरोसा करने की बजाय (जैसे नो-कोड टूल में) बॉडी को खुद पार्स करें:

{ "message": "Invalid whatsapp client", "status": 0 }
संदेशकैसे ठीक करें
Auth Errorclient_id और api_key दोनों भेजें।
Invalid Client Idclient_id को नंबर के रूप में भेजें। HTTP 403 के साथ लौटता है।
Auth Error: invalid api keyजांचें कि की मौजूद है, डिलीट नहीं हुई है और इसी client_id की है। HTTP 400 के साथ लौटता है।
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 भेजें।
Not enough credits: … messages requested, … credits remainingकम प्राप्तकर्ता भेजें या क्रेडिट जोड़ें। क्रेडिट देखें।
Invalid whatsapp clientवह whatsapp_client ID आपके वर्कस्पेस में नहीं है।
No valid contacts foundphone का हर आइटम खाली था या छोड़ दिया गया। जांचें कि देश के कोड के साथ नंबर 6 से 15 अंकों के हों।
Demo Account can not access apisसामान्य अकाउंट इस्तेमाल करें।
Invalid JSON format: …JSON बॉडी सही नहीं है, या आपने client_id के बिना फॉर्म फील्ड भेजे हैं।

सुझाव#

  • phone को स्ट्रिंग के रूप में भेजें: अपनी सूची को कॉमा से जोड़ें। JSON ऐरे भेजने पर {} मिलता है।
  • फिलहाल Python क्लाइंट का send_bulk_messages इस्तेमाल न करें: यह सूची को phones के रूप में भेजता है, जिसे यह endpoint नज़रअंदाज़ करता है। ऊपर दिए उदाहरणों की तरह endpoint को सीधे कॉल करें।
  • हर संदेश ट्रैक करें: messages से हर msg_id सेव करें, या webhook पास करें ताकि हर संदेश के भेजे जाने या फेल होने पर आपको सूचना मिले।
  • अपना नंबर कनेक्टेड रखें: हर संदेश आपके WhatsApp नंबर से भेजा जाता है, इसलिए पूरा बैच भेजे जाने तक इसे WhatsApp सेटिंग्स में कनेक्टेड रहना चाहिए।
  • हर व्यक्ति के लिए अलग टेक्स्ट: यह एंडपॉइंट सभी को एक ही msg भेजता है। हर संदेश को पर्सनलाइज़ करने के लिए हर प्राप्तकर्ता के लिए एक बार संदेश भेजें कॉल करें।