WhatsApp अकाउंट API
WhatsApp नंबर कनेक्ट करें (API)
अपने ऐप से किसी WhatsApp नंबर को अपने वर्कस्पेस से कनेक्ट करना शुरू करें। Wbiztool एक नया WhatsApp सेशन खोलता है और QR कोड आपके वेबहुक URL पर भेजता है। इसे फोन के मालिक को दिखाएं, वे WhatsApp से इसे स्कैन करें, और नंबर संदेश भेजने के लिए तैयार हो जाता है।
अपना नंबर खुद हाथ से लिंक कर रहे हैं? अपना WhatsApp नंबर कनेक्ट करें फॉलो करें।
https://wbiztool.com/api/v1/whatsapp/connect/बॉडी: JSON या फॉर्म फील्ड
POST /api/v1/whatsapp-client/create/ इसका बिल्कुल एक जैसा दूसरा नाम (alias) है: यह वही कोड चलाता है और वही रिस्पॉन्स लौटाता है। दोनों पाथ काम करते रहेंगे।
कनेक्ट करना कैसे काम करता है#
API कॉल केवल कनेक्शन शुरू करता है। QR कोड बाद में आपके वेबहुक URL पर आता है।
कनेक्ट API कॉल करें
फोन नंबर और अपना
webhook_urlभेजें। रिस्पॉन्स में आपको एकwhatsapp_client_idमिलता है। इसे सेव करें।QR कोड प्राप्त करें
आपके वेबहुक को
status=qr_generatedमिलता है, जिसमेंqr_imageमें QR इमेज होती है। यह इमेज उस व्यक्ति को दिखाएं जिसका फोन है। जब तक Wbiztool स्कैन का इंतज़ार करता है, QR कोड हर कुछ सेकंड में दोबारा भेजा जाता है, इसलिए हमेशा सबसे नया कोड दिखाएं। व्यक्ति के पास स्कैन करने के लिए लगभग दो मिनट होते हैं। उसके बाद, या अगर WhatsApp कोड रीलोड करने को कहता है, तो आपकोnot_connectedमिलता है; नया कोड पाने के लिए API फिर से कॉल करें।WhatsApp से स्कैन करें
फोन पर WhatsApp → Linked devices (लिंक किए गए डिवाइस) → Link a device (डिवाइस लिंक करें) खोलें और कोड स्कैन करें।
नतीजा पाएं
नंबर लिंक हो जाने पर आपके वेबहुक को
status=connectedमिलता है, या अगर कोड समय पर स्कैन नहीं हुआ या कनेक्शन फेल हो गया तोstatus=not_connectedमिलता है।connectedइवेंट कनेक्शन स्टेटस केConnectedलौटाने से कुछ सेकंड पहले आ सकता है। पहले वेबहुक का जवाब दें, फिर एक मिनट तक हर कुछ सेकंड में कनेक्शन स्टेटस पोल करें। इसे अपने वेबहुक हैंडलर के अंदर से सिर्फ एक बार न जांचें।
छोटा उदाहरण#
curl -X POST https://wbiztool.com/api/v1/whatsapp/connect/ \
-H "Content-Type: application/json" \
-d '{
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"whatsapp_number": "919876543210",
"webhook_url": "https://example.com/wbiztool/connect-events?token=LONG_RANDOM_SECRET"
}'import requests
response = requests.post(
"https://wbiztool.com/api/v1/whatsapp/connect/",
json={
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"whatsapp_number": "919876543210",
"webhook_url": "https://example.com/wbiztool/connect-events?token=LONG_RANDOM_SECRET",
},
timeout=30,
)
result = response.json() # read the body even when the HTTP code is 400 or 403
if result.get("status") == 1:
print("Waiting for QR code, whatsapp_client_id", result["whatsapp_client_id"])
else:
print("Failed:", result.get("message"))// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const response = await fetch("https://wbiztool.com/api/v1/whatsapp/connect/", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
client_id: 12345,
api_key: "YOUR_API_KEY",
whatsapp_number: "919876543210",
webhook_url: "https://example.com/wbiztool/connect-events?token=LONG_RANDOM_SECRET",
}),
});
const result = await response.json(); // read the body even when the HTTP code is 400 or 403
if (result.status === 1) {
console.log("Waiting for QR code, whatsapp_client_id", result.whatsapp_client_id);
} else {
console.error("Failed:", result.message);
}<?php
$payload = [
'client_id' => 12345,
'api_key' => 'YOUR_API_KEY',
'whatsapp_number' => '919876543210',
'webhook_url' => 'https://example.com/wbiztool/connect-events?token=LONG_RANDOM_SECRET',
];
$ch = curl_init('https://wbiztool.com/api/v1/whatsapp/connect/');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
if (($result['status'] ?? 0) === 1) {
echo 'Waiting for QR code, whatsapp_client_id ' . $result['whatsapp_client_id'];
} else {
echo 'Failed: ' . ($result['message'] ?? 'no response');
}12345 और YOUR_API_KEY की जगह अपनी वैल्यू डालें। ये कहां मिलेंगी, यह जानने के लिए ऑथेंटिकेशन देखें।
रिक्वेस्ट पैरामीटर#
client_idintegerआवश्यकसेटिंग्स → API Keys से आपका API क्लाइंट ID।
api_keystringआवश्यकउसी पेज से आपकी API की। नंबर उसी वर्कस्पेस में जोड़ा जाता है जिसमें यह की बनाई गई थी।
whatsapp_numberstringआवश्यककनेक्ट करने वाला WhatsApp नंबर, कंट्री कोड के साथ, जैसे
919876543210। यह ठीक वैसे ही सेव होता है जैसे आप भेजते हैं (20 अक्षरों तक), इसलिए केवल अंक भेजें, बिना+, स्पेस या डैश के। इससे लंबी वैल्यू HTTP500के साथ फेल होती हैं। अलग तरह से लिखा गया वही नंबर एक अलग नंबर माना जाता है।webhook_urlstringQR कोड पाने के लिए ज़रूरीआपका
httpयाhttpsURL, जिस पर QR कोड और कनेक्शन अपडेट आते हैं, 250 अक्षरों तक (इससे लंबे URL HTTP500के साथ फेल होते हैं)। API इसके बिना भी रिक्वेस्ट स्वीकार कर लेता है, लेकिन तब आपको कुछ नहीं भेजा जाता और API के ज़रिए QR कोड पाने का आपके पास कोई तरीका नहीं रहता। वेबहुक इवेंट देखें।
आधिकारिक क्लाइंट का इस्तेमाल#
Python क्लाइंट आपके लिए /api/v1/whatsapp-client/create/ कॉल करता है।
from wbiztool_client import WbizToolClient
client = WbizToolClient(api_key="YOUR_API_KEY", client_id=12345)
result = client.create_whatsapp_client(
whatsapp_number="919876543210",
webhook_url="https://example.com/wbiztool/connect-events?token=LONG_RANDOM_SECRET",
)
print(result)जब API HTTP 400 या 403 लौटाता है, तो Python क्लाइंट requests.exceptions.HTTPError रेज़ करता है, इसलिए कॉल को try/except में रखें।
रिस्पॉन्स#
कनेक्शन रिक्वेस्ट बन जाने पर API HTTP 200 लौटाता है:
{
"message": "Whatsapp Client Created",
"whatsapp_client_id": 678,
"status": 1
}
| फील्ड | टाइप | विवरण |
|---|---|---|
status | integer | कनेक्शन रिक्वेस्ट बनी हो तो 1, फेल हुई हो तो 0। |
message | string | सफल होने पर Whatsapp Client Created, वरना एरर। |
whatsapp_client_id | integer | WhatsApp नंबर का ID। दूसरे API कॉल में इसे whatsapp_client के रूप में इस्तेमाल करें। केवल सफल होने पर मौजूद होता है। |
"status": 1 का मतलब है कि रिक्वेस्ट बन गई है, यह नहीं कि नंबर कनेक्ट हो गया है। अगर आप किसी ऐसे नंबर के लिए API दोबारा कॉल करते हैं जो पहले जोड़ा गया था लेकिन कनेक्टेड नहीं है, तो आपको वही whatsapp_client_id वापस मिलता है और कनेक्ट करने की नई कोशिश शुरू होती है।
एरर#
| संदेश | HTTP | कैसे ठीक करें |
|---|---|---|
whatsapp_number cant be null | 200 | whatsapp_number भेजें। यह सबसे पहले जांचा जाता है, इसलिए JSON बॉडी गलत होने पर भी यही संदेश आता है। |
Auth Error | 200 | client_id और api_key दोनों भेजें। |
Invalid Client Id | 403 | client_id को पूर्ण संख्या के रूप में भेजें, जैसे 12345। |
Auth Error: invalid api key | 400 | जांचें कि की मौजूद है, डिलीट नहीं हुई है और इसी client_id की है। |
Higher Subscription Required | 200 | आपके प्लान में यह API शामिल नहीं है। अपना प्लान अपग्रेड करें। |
WhatsApp Account Limit Reached. Upgrade your account to get more whatsapp limit | 200 | आपके प्लान में जितने कनेक्टेड नंबरों की अनुमति है, उतने नंबर पहले से हैं। एक नंबर डिसकनेक्ट करें या अपग्रेड करें। |
Already Connected With Given Number | 200 | यह नंबर इस वर्कस्पेस में पहले से कनेक्टेड है। कुछ करने की ज़रूरत नहीं है। अगर आप पहले से अपने प्लान की नंबर सीमा पर हैं, तो पहले से कनेक्टेड नंबर के लिए भी आपको इसकी जगह WhatsApp Account Limit Reached मिलता है। |
जो रिक्वेस्ट POST नहीं है, वह HTTP 200 के साथ खाली ऑब्जेक्ट {} लौटाती है।
अगर उसी अकाउंट मालिक ने यह नंबर पहले किसी दूसरे वर्कस्पेस में जोड़ा है, तो रिक्वेस्ट HTTP 500 के साथ फेल हो सकती है। जिस वर्कस्पेस में चाहिए, वहां WhatsApp सेटिंग्स से नंबर कनेक्ट करें, या सपोर्ट से संपर्क करें।
वेबहुक इवेंट#
Wbiztool हर स्टेप पर आपके webhook_url पर POST भेजता है। बॉडी फॉर्म-एन्कोडेड (application/x-www-form-urlencoded) होती है, JSON नहीं।
QR कोड तैयार (स्कैन का इंतज़ार करते समय हर कुछ सेकंड में दोबारा भेजा जाता है, अक्सर उसी URL के साथ):
status=qr_generated&whatsapp_client_id=678&qr_image=...
नंबर कनेक्ट हुआ (एक ही कनेक्शन के लिए एक से ज़्यादा बार भेजा जा सकता है):
status=connected&whatsapp_client_id=678
कनेक्शन फेल हुआ, उदाहरण के लिए क्योंकि QR कोड समय पर स्कैन नहीं हुआ:
status=not_connected&whatsapp_client_id=678
| फील्ड | वैल्यू |
|---|---|
status | qr_generated, connected या not_connected |
whatsapp_client_id | API से लौटाया गया whatsapp_client_id। |
qr_image | केवल qr_generated के साथ। या तो base64 इमेज वाला data: URL, या इमेज का https URL। दोनों को संभालें। एक ही नंबर के हर रिफ्रेश के लिए https URL वही रहता है, जबकि उसके पीछे की इमेज बदल जाती है। इसे दिखाते समय cache-busting query जोड़ें (जैसे ?t=<timestamp>), वरना ब्राउज़र एक्सपायर हो चुका कोड दिखाता रह सकता है। |
आपका URL सार्वजनिक रूप से पहुंच योग्य होना चाहिए और कुछ सेकंड में जवाब देना चाहिए। Wbiztool बिना किसी टाइमआउट के आपके जवाब का इंतज़ार करता है। अगर आपके सर्वर तक नहीं पहुंचा जा सकता, तो नंबर के कनेक्टेड के रूप में सेव होने से पहले ही कनेक्शन की कोशिश रुक सकती है। कोई भी HTTP स्टेटस कोड स्वीकार होता है। फेल हुई डिलीवरी दोबारा नहीं भेजी जाती, और बाद में नंबर डिसकनेक्ट होने पर कुछ नहीं भेजा जाता। कनेक्ट होने के बाद नंबर पर नज़र रखने के लिए कनेक्शन स्टेटस को बार-बार कॉल (poll) करें।
वेबहुक के बजाय पोलिंग#
अगर आपका सर्वर वेबहुक प्राप्त नहीं कर सकता, तब भी QR कोड पाने के लिए वेबहुक ज़रूरी है, लेकिन नतीजे के लिए आपको उस पर निर्भर रहने की ज़रूरत नहीं है। QR कोड स्कैन होने के बाद, whatsapp_client_id के साथ हर कुछ सेकंड में कनेक्शन स्टेटस कॉल करें, जब तक वह Connected न लौटाए। अकाउंट की सूची आपके सभी नंबरों के लिए यही जानकारी दिखाता है।
सुझाव#
- डुप्लिकेट इवेंट संभालें:
connectedदो बार आ सकता है। अपने हैंडलर को ऐसा बनाएं कि उसे एक से ज़्यादा बार चलाना सुरक्षित हो। - सबसे नया QR कोड दिखाएं: हर बार नया
qr_generatedइवेंट आने पर इमेज बदल दें, औरhttpsURL में cache-busting query जोड़ें। पुराने कोड काम करना बंद कर देते हैं। - लगभग दो मिनट के अंदर स्कैन करें: उसके बाद आपको
not_connectedमिलता है। नए कोड के लिए API फिर से कॉल करें। - 10 मिनट बाद भी QR कोड नहीं आया? रिक्वेस्ट एक्सपायर हो गई है। API दोबारा कॉल करें।
- डैशबोर्ड से कनेक्ट करना आसान है जब आप अपना ही नंबर लिंक कर रहे हों। WhatsApp सेटिंग्स खोलें और वहीं कोड स्कैन करें।
