WhatsApp Business API, बिना BSP की झंझट के।
जब से यह API मौजूद है, तब से आधिकारिक Meta Business Solution Provider। Template अप्रूवल, session windows, media, interactive messages — सब कुछ संभाला जाता है। दो अरब से ज़्यादा मासिक WhatsApp यूज़र्स, एक ही endpoint से पहुँच में — जो हर दूसरे Bird channel जैसा ही दिखता है।
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.whatsapp.send({
to: "+15005550009",
template: "order_shipped",
locale: "en_US",
variables: {
customer_name: "Ada",
order_id: "BRD-49217",
tracking_url: "https://track.bird.dev/49217",
eta: "Thursday, May 21",
},
}).safe();
if (error) throw error;
console.log(data.id);
// → "wa_msg_8nB91Yk3p..."
npm install से पहली send तक सिर्फ़ 5 मिनट
उसी भाषा से WhatsApp भेजें जो आप पहले से इस्तेमाल करते हैं।
हर बड़े runtime में SDKs। पहली send एक स्वीकृत टेस्ट रिसीपिएंट (+15005550009) को एक पहले से अप्रूव्ड template के साथ जाती है, ताकि आप अपना पहला template अप्रूवल के लिए सबमिट करने से पहले ही एक CI check शिप कर सकें।
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.whatsapp.send({
to: "+15005550009",
template: "hello_world",
locale: "en_US",
}).safe();दस चीज़ें जो BSP का गेट आपसे छुपाता है। हम नहीं छुपाते।
WhatsApp पर Meta का गेट लगा है। BSP चुनना यह तय करता है कि ये गेट आपके कोड में दिखें या किसी dashboard में चुपके से घुसा दिए जाएँ। हमने कोड चुना।
- 01
आधिकारिक Meta Business Solution Provider (BSP)
जब से यह API मौजूद है, तब से Meta के साथ सीधा रिश्ता। न कोई रीसेल किया गया transit, न कोई तीसरे-पक्ष का hop।
- 02
Template प्रबंधन
सबमिट करें, अप्रूवल की स्थिति ट्रैक करें, और जिस पल Meta अप्रूव या रिजेक्ट करे, उसी पल एक webhook पाएँ।
- 03
Session-window की जानकारी
send करने से पहले ही SDK आपको बता देता है कि free-form अनुमति है या template।
- 04
Interactive messages
Buttons, lists, product cards, और WhatsApp Flows — सब उसी payload में घोषित किए गए।
- 05
Media और rich content
Images, video, documents, location, contacts, link previews, reactions, और replies।
- 06
WhatsApp Flows
backend validation वाले multi-step in-app forms, JSON के रूप में परिभाषित, Meta द्वारा निष्पादित।
- 07
Click-to-WhatsApp Ads
Meta Ads Manager के साथ इंटीग्रेशन ताकि ad clicks एक ऐसी बातचीत में पहुँचें जिसका आप जवाब दे सकें।
- 08
Cross-channel fallback
किसी भी send में fallback: "sms" जोड़ें — session खत्म होने पर रास्ता अपने-आप SMS से होकर जाता है।
- 09
Inbound message webhooks
inbound messages, read receipts, reactions, और template state के लिए HMAC-signed events।
- 10
एक endpoint पर 2B+ यूज़र्स
एक ही bird.whatsapp.send कॉल से दो अरब से ज़्यादा मासिक WhatsApp यूज़र्स तक पहुँच।
हम WhatsApp क्यों बनाते हैं
हम पहले WhatsApp BSPs में से एक थे। हम आज भी उन गिने-चुने में से हैं जो आपके साथ कोड शिप करते हैं।
WhatsApp पर गेट लगा है। आपको एक अप्रूव्ड template चाहिए; आपको एक opted-in session window चाहिए; आपको एक Meta business verification चाहिए। वह हिस्सा नहीं बदलता — और न बदलेगा। जो बदलता है वह यह है कि आपका BSP इन गेट्स को पार करना आसान बनाता है या मुश्किल — उन्हें आपके कोड में दिखाकर, उन webhooks पर जिन्हें आप subscribe कर सकते हैं, उन errors में जो ठीक-ठीक बताते हैं कि क्या गड़बड़ है। हमने पहला रास्ता चुना।
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.whatsapp.send({
to: "+15005550009",
template: "order_shipped",
locale: "en_US",
variables: {
customer_name: "Ada",
order_id: "BRD-49217",
tracking_url: "https://track.bird.dev/49217",
eta: "Thursday, May 21",
},
}).safe();
if (error) throw error;
console.log(data.id);
// → "wa_msg_8nB91Yk3p..."
हर state change एक webhook है।
HMAC-signed payloads, replay से सुरक्षित, idempotent। हर Bird channel पर वही envelope — एक सीख लिया, तो सब सीख लिया।
{
"type": "whatsapp.read",
"id": "evt_7kQ02v...",
"created_at": "2026-05-19T15:42:08.114Z",
"data": {
"wa_msg_id": "wa_msg_8nB91Yk3p",
"from": "+15551234567",
"to": "+15005550009",
"conversation_id": "wa_conv_3pX1g7t",
"template": "order_shipped",
"delivered_at": "2026-05-19T15:42:01.802Z",
"read_at": "2026-05-19T15:42:08.020Z"
}
}
Retry शेड्यूल: 5s, 30s, 5m, 30m, 2h, 6h, 12h। आख़िरी प्रयास के बाद dead-letter; हर dead-lettered event dashboard या API से replay किया जा सकता है।
whatsapp.queuedAPI द्वारा स्वीकृत और Meta को भेजने के लिए queue में।whatsapp.sentMeta के Cloud API को सौंप दिया गया।whatsapp.deliveredMeta बताता है कि message रिसीपिएंट के डिवाइस पर पहुँच गया।whatsapp.readरिसीपिएंट ने message खोला (अगर read receipts चालू हों)।whatsapp.failedस्थायी विफलता — payload में reason code।whatsapp.received24 घंटे की session window के भीतर किसी यूज़र से inbound message।whatsapp.template.approvedMeta ने आपके सबमिट किए गए template को अप्रूव किया।whatsapp.template.rejectedMeta ने एक template रिजेक्ट किया — payload में रिजेक्शन की वजह।
SMS पर fallback एक attribute है, कोई दूसरा इंटीग्रेशन नहीं।
अगर WhatsApp डिलीवर नहीं कर पाता — session खत्म हो गया, रिसीपिएंट ने कभी opt-in नहीं किया, template अभी अप्रूव नहीं हुआ — तो Bird उसी request में उसी message को SMS के ज़रिए रूट कर देता है। वही auth, वही idempotency contract, दूसरे छोर पर वही webhook आकार।
fallback के साथ WhatsApp।
await bird.whatsapp.send({
to: "+15005550009",
template: "order_shipped",
variables: { order_id: "BRD-49217" },
fallback: "sms",
});
एक payload, एक auth। Session खत्म होना, opt-in गैप, बिना-अप्रूव्ड template — सब अपने-आप SMS से होकर रूट होते हैं।
SMS सीधे।
await bird.sms.send({
from: "Bird",
to: "+15005550006",
text: `Your order BRD-49217 has shipped.`,
category: "transactional",
});
वही तार, सीधे संबोधित। इसे तब इस्तेमाल करें जब आप स्पष्ट रूप से SMS रास्ता चाहते हों।