WhatsApp को अपग्रेड किया जा रहा है

WhatsApp Business API, बिना BSP की झंझट के।

जब से यह API मौजूद है, तब से आधिकारिक Meta Business Solution Provider। Template अप्रूवल, session windows, media, interactive messages — सब कुछ संभाला जाता है। दो अरब से ज़्यादा मासिक WhatsApp यूज़र्स, एक ही endpoint से पहुँच में — जो हर दूसरे Bird channel जैसा ही दिखता है।

order-shipped.ts
200 · 480ms
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 शिप कर सकें।

1
2
3
4
5
6
7
8
9
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 में चुपके से घुसा दिए जाएँ। हमने कोड चुना।

  1. 01

    आधिकारिक Meta Business Solution Provider (BSP)

    जब से यह API मौजूद है, तब से Meta के साथ सीधा रिश्ता। न कोई रीसेल किया गया transit, न कोई तीसरे-पक्ष का hop।

  2. 02

    Template प्रबंधन

    सबमिट करें, अप्रूवल की स्थिति ट्रैक करें, और जिस पल Meta अप्रूव या रिजेक्ट करे, उसी पल एक webhook पाएँ।

  3. 03

    Session-window की जानकारी

    send करने से पहले ही SDK आपको बता देता है कि free-form अनुमति है या template।

  4. 04

    Interactive messages

    Buttons, lists, product cards, और WhatsApp Flows — सब उसी payload में घोषित किए गए।

  5. 05

    Media और rich content

    Images, video, documents, location, contacts, link previews, reactions, और replies।

  6. 06

    WhatsApp Flows

    backend validation वाले multi-step in-app forms, JSON के रूप में परिभाषित, Meta द्वारा निष्पादित।

  7. 07

    Click-to-WhatsApp Ads

    Meta Ads Manager के साथ इंटीग्रेशन ताकि ad clicks एक ऐसी बातचीत में पहुँचें जिसका आप जवाब दे सकें।

  8. 08

    Cross-channel fallback

    किसी भी send में fallback: "sms" जोड़ें — session खत्म होने पर रास्ता अपने-आप SMS से होकर जाता है।

  9. 09

    Inbound message webhooks

    inbound messages, read receipts, reactions, और template state के लिए HMAC-signed events।

  10. 10

    एक endpoint पर 2B+ यूज़र्स

    एक ही bird.whatsapp.send कॉल से दो अरब से ज़्यादा मासिक WhatsApp यूज़र्स तक पहुँच।

हम WhatsApp क्यों बनाते हैं

हम पहले WhatsApp BSPs में से एक थे। हम आज भी उन गिने-चुने में से हैं जो आपके साथ कोड शिप करते हैं।

WhatsApp पर गेट लगा है। आपको एक अप्रूव्ड template चाहिए; आपको एक opted-in session window चाहिए; आपको एक Meta business verification चाहिए। वह हिस्सा नहीं बदलता — और न बदलेगा। जो बदलता है वह यह है कि आपका BSP इन गेट्स को पार करना आसान बनाता है या मुश्किल — उन्हें आपके कोड में दिखाकर, उन webhooks पर जिन्हें आप subscribe कर सकते हैं, उन errors में जो ठीक-ठीक बताते हैं कि क्या गड़बड़ है। हमने पहला रास्ता चुना।

order-shipped.ts
200 · 480ms
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 — एक सीख लिया, तो सब सीख लिया।

POST /webhooks/bird
signed
{
  "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।

whatsapp + fallback
await bird.whatsapp.send({
  to:       "+15005550009",
  template: "order_shipped",
  variables: { order_id: "BRD-49217" },
  fallback: "sms",
});

एक payload, एक auth। Session खत्म होना, opt-in गैप, बिना-अप्रूव्ड template — सब अपने-आप SMS से होकर रूट होते हैं।

SMS सीधे।

sms
await bird.sms.send({
  from:     "Bird",
  to:       "+15005550006",
  text:     `Your order BRD-49217 has shipped.`,
  category: "transactional",
});

वही तार, सीधे संबोधित। इसे तब इस्तेमाल करें जब आप स्पष्ट रूप से SMS रास्ता चाहते हों।

$0.005 प्रति message से शुरू + Meta का conversation fee लागत पर।

उपयोग के हिसाब से कीमत। हम Meta का conversation fee लागत पर आगे बढ़ाते हैं — कोई markup नहीं। Volume discounts 100K/mo से ऊपर और फिर 1M/mo से ऊपर अपने-आप लागू होते हैं। न कोई seat fee, न ही सालाना कमिटमेंट के पीछे बंद tier features।

एक चैनल से शुरुआत करें।
तैयार होने पर बाकी जोड़ें।

एक test API key तुरंत आपकी है। जब आप payment method जोड़ते हैं और sender verify करते हैं, तब production अनलॉक हो जाता है।

Claude Code, Cursor या Codex इस्तेमाल कर रहे हैं? एक setup prompt कॉपी करें और आपका agent आपके लिए Bird CLI और skills इंस्टॉल कर देगा। अपना चुनें:

Cursor