उन डेवलपर्स के लिए SMS API जिन्हें वाकई शिप करना है।

इतने में सेट अप करें:
Cursor

150+ countries, 240 direct-to-carrier connections, one auth model. About 40% of the world's commercial SMS volume transits the Bird network. We've been at this a decade. 95% of messages delivered in under 2.5 seconds.

send-otp.ts
200 · 0.4s
import { BirdClient } from "@messagebird/sdk";

const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });

const code = generateOtp();

const { data, error } = await bird.sms.send({
  from:     "Bird",
  to:       "+15005550006",
  text:     `Your Bird verification code is ${code}. Reply STOP to opt out.`,
  category: "authentication",
}).safe();

if (error) throw error;
console.log(data.id);
// → "sms_4kT01Lq2m..."

Today at 2:14 PM

Hey Ada, your Bird sign-in code is 482917. It'll expire in 10 minutes. Don't share it with anyone.
482917
Delivered

5 minutes from npm install to first send

उसी भाषा से SMS भेजें जो आप पहले से इस्तेमाल करते हैं।

हर प्रमुख runtime में SDKs। पहला send एक मंज़ूरशुदा टेस्ट रिसीपिएंट (+15005550006) को जाता है, ताकि नंबर प्रोविज़न करने से पहले ही आप एक CI चेक शिप कर सकें।

1
2
3
4
5
6
7
const msg = await bird.sms.send({
  from: "MyBrand",
  to: "+14155550100",
  text: "Your verification code is 123456.",
  category: "authentication",
});
console.log(msg.id, msg.status);

दस चीज़ें जो हम फ़ाइल करते हैं, कॉन्फ़िगर करते हैं, और रूट करते हैं ताकि आपको न करना पड़े।

रूटिंग, अनुपालन, और inbound प्रिमिटिव्स — नामित और ऑडिट-योग्य।

  1. 01

    150+ देश कवरेज

    One unified API, one billing relationship. No per-region contracts to chase down.

  2. 02

    240 direct-to-carrier लिंक

    बीच में कोई aggregator नहीं जो मार्जिन खाए या हमारे और MNO के बीच रसीदें गिराए।

  3. 03

    Operator-ग्रेड रूटिंग

    जब कोई carrier पथ खराब होता है तो रीयल-टाइम रूट री-सिलेक्शन; failover आपके ध्यान में आने से पहले हो जाता है।

  4. 04

    दो-तरफ़ा SMS inbound

    Inbound संदेश आपके प्रोविज़न किए नंबर पर HMAC-signed webhooks के रूप में आते हैं।

  5. 05

    हर तरह के नंबर

    Long codes, short codes, toll-free, and alphanumeric sender IDs, provisioned via one endpoint.

  6. 06

    dashboard में A2P 10DLC

    Brand और campaign रजिस्ट्रेशन console में संभाला जाता है; स्टेटस API से क्वेरी किया जा सकता है।

  7. 07

    send से पहले MNP lookup

    हम हर send पर रिसीपिएंट का मौजूदा carrier हल कर लेते हैं ताकि रूट हमेशा सही हो।

  8. 08

    STOP / HELP अनुपालन

    Opt-out कीवर्ड हर रिसीपिएंट के लिए अपने आप माने जाते हैं; suppression list क्वेरी-योग्य है।

  9. 09

    webhooks के रूप में डिलीवरी रसीदें

    Every state transition fires a signed event: sms.accepted through sms.delivered or sms.failed.

  10. 10

    Segment और Unicode सुरक्षा

    SDK send से पहले segments गिनता है और उन encoding बदलावों पर चेतावनी देता है जो किसी संदेश को तोड़ देंगे।

SMS एक बड़े टूलकिट का एक चैनल है। Verifications के ज़रिए one-time passcodes से यूज़र्स को verify करें, Lookup के साथ send करने से पहले किसी नंबर का line type और carrier जाँचें, या RCS के ज़रिए उसी handset तक रिच कार्ड्स पहुँचाएँ।

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

SMS एक झमेले वाला चैनल है। हमने वह API बनाई जो इसे उबाऊ बना देती है।

हर देश के अलग नियम हैं, हर carrier के अलग रूट हैं, हर क्षेत्र की अलग sender-ID परंपराएँ हैं। हम दस साल से SMS चला रहे हैं, इसलिए वह ज्ञान एक endpoint, एक auth मॉडल, एक webhook कॉन्ट्रैक्ट के पीछे रहता है। ऊपर चाहे जो भी बदले, bird.sms.send के ख़िलाफ़ आपने जो कॉल लिखी है वह नहीं बदलती।

send-otp.ts
200 · 0.4s
import { BirdClient } from "@messagebird/sdk";

const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });

const code = generateOtp();

const { data, error } = await bird.sms.send({
  from:     "Bird",
  to:       "+15005550006",
  text:     `Your Bird verification code is ${code}. Reply STOP to opt out.`,
  category: "authentication",
}).safe();

if (error) throw error;
console.log(data.id);
// → "sms_4kT01Lq2m..."

हर state बदलाव एक webhook है।

HMAC-signed payloads, replay-protected, idempotent. The same envelope on every Bird channel: learn one, you've learned them all.

POST /webhooks/bird
signed
{
  "type": "sms.delivered",
  "timestamp": "2026-05-19T15:42:01.221Z",
  "data": {
    "sms_id":       "sms_4kT01Lq2m",
    "workspace_id": "ws_8KQ2",
    "to":           "+15005550006",
    "from":         "Bird",
    "tags":         [{ "name": "campaign", "value": "otp" }],
    "metadata":     { "user_id": "usr_12345" },
    "carrier":      "Verizon",
    "mcc_mnc":      "311480"
  }
}

Retry शेड्यूल: 5s, 30s, 5m, 30m, 2h, 6h, 12h। आख़िरी प्रयास के बाद dead-letter; हर dead-lettered event dashboard या API से replay किया जा सकता है।

  • sms.acceptedAPI द्वारा स्वीकार किया गया और carrier हैंड-ऑफ़ के लिए queue किया गया।
  • sms.sentगंतव्य carrier के SMSC को सबमिट किया गया।
  • sms.deliveredcarrier से डिलीवरी रसीद मिली (DLR)।
  • sms.rejectedRejected before carrier hand-off: invalid destination, suppression, or a content policy guard.
  • sms.undeliveredCarrier reported a non-permanent failure to deliver.
  • sms.failedTerminal failure: the message will not be delivered.

अगर आपने SMS इंटीग्रेट किया है, तो आपने WhatsApp इंटीग्रेट कर लिया है।

वही auth मॉडल, वही idempotency कॉन्ट्रैक्ट, वही error envelope, वही webhook आकार। फ़र्क़ इसमें है कि हर एक क्या करता है, इसमें नहीं कि आप उसे कैसे कॉल करते हैं।

SMS

एक verb। सादा टेक्स्ट। numeric to/from। वही आकार जिसकी हर डेवलपर को पहले से आदत है।

otp.ts
await bird.sms.send({
  to:       "+15005550006",
  text:     `Your code is ${code}.`,
  category: "authentication",
});

WhatsApp

Same verb. Different payload: templated, opted-in, in the channel two billion people open daily.

otp.ts
await bird.whatsapp.send({
  from: "+15551234567",
  to:   "+15005550006",
  template: { name: "otp", variables: { code } },
});

मूल्य निर्धारण

प्रति segment एक सेंट से कम से लेकर कुछ सेंट तक

उपयोग और गंतव्य देश के आधार पर मूल्य तय होता है। पूरा प्रति-देश ग्रिड pricing पेज पर है, और वॉल्यूम डिस्काउंट account स्तर पर अपने आप लागू होते हैं। कोई प्लेटफ़ॉर्म फ़ीस नहीं, कोई seat फ़ीस नहीं, कोई tier फ़ीचर जो सालाना कमिटमेंट के पीछे बंद हो, नहीं।

उन टीमों द्वारा हर दिन भरोसा किया जाता है जो विश्व-स्तरीय सॉफ़्टवेयर बनाती हैं

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

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

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

Cursor