उन डेवलपर्स के लिए SMS API जिन्हें वाकई शिप करना है।
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.
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
5 minutes from npm install to first send
उसी भाषा से SMS भेजें जो आप पहले से इस्तेमाल करते हैं।
हर प्रमुख runtime में SDKs। पहला send एक मंज़ूरशुदा टेस्ट रिसीपिएंट (+15005550006) को जाता है, ताकि नंबर प्रोविज़न करने से पहले ही आप एक CI चेक शिप कर सकें।
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 प्रिमिटिव्स — नामित और ऑडिट-योग्य।
- 01
150+ देश कवरेज
One unified API, one billing relationship. No per-region contracts to chase down.
- 02
240 direct-to-carrier लिंक
बीच में कोई aggregator नहीं जो मार्जिन खाए या हमारे और MNO के बीच रसीदें गिराए।
- 03
Operator-ग्रेड रूटिंग
जब कोई carrier पथ खराब होता है तो रीयल-टाइम रूट री-सिलेक्शन; failover आपके ध्यान में आने से पहले हो जाता है।
- 04
दो-तरफ़ा SMS inbound
Inbound संदेश आपके प्रोविज़न किए नंबर पर HMAC-signed webhooks के रूप में आते हैं।
- 05
हर तरह के नंबर
Long codes, short codes, toll-free, and alphanumeric sender IDs, provisioned via one endpoint.
- 06
dashboard में A2P 10DLC
Brand और campaign रजिस्ट्रेशन console में संभाला जाता है; स्टेटस API से क्वेरी किया जा सकता है।
- 07
send से पहले MNP lookup
हम हर send पर रिसीपिएंट का मौजूदा carrier हल कर लेते हैं ताकि रूट हमेशा सही हो।
- 08
STOP / HELP अनुपालन
Opt-out कीवर्ड हर रिसीपिएंट के लिए अपने आप माने जाते हैं; suppression list क्वेरी-योग्य है।
- 09
webhooks के रूप में डिलीवरी रसीदें
Every state transition fires a signed event: sms.accepted through sms.delivered or sms.failed.
- 10
Segment और Unicode सुरक्षा
SDK send से पहले segments गिनता है और उन encoding बदलावों पर चेतावनी देता है जो किसी संदेश को तोड़ देंगे।
SMS प्लेटफ़ॉर्म एक्सप्लोर करें
हर क्षमता गहराई से। एक API, keys का एक ही सेट।
Sending.
send API: segments, Unicode सुरक्षा, batch, और idempotency।
Numbers.
Long codes, short codes, toll-free, और alphanumeric sender IDs।
Two-way.
Inbound SMS और conversational जवाब HMAC-signed webhooks के रूप में।
Compliance.
A2P 10DLC रजिस्ट्रेशन, STOP/HELP opt-out, और sender-ID नियम।
Routing.
150+ देश, 240 direct-to-carrier लिंक, और failover।
Analytics.
carrier डिलीवरी रसीदों से डिलीवरी और engagement मेट्रिक्स।
Destinations.
प्रति-देश sender प्रकार, रजिस्ट्रेशन नियम, और कवरेज।
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 के ख़िलाफ़ आपने जो कॉल लिखी है वह नहीं बदलती।
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.
{
"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। वही आकार जिसकी हर डेवलपर को पहले से आदत है।
await bird.sms.send({
to: "+15005550006",
text: `Your code is ${code}.`,
category: "authentication",
});
Same verb. Different payload: templated, opted-in, in the channel two billion people open daily.
await bird.whatsapp.send({
from: "+15551234567",
to: "+15005550006",
template: { name: "otp", variables: { code } },
});
मूल्य निर्धारण
प्रति segment एक सेंट से कम से लेकर कुछ सेंट तक
उपयोग और गंतव्य देश के आधार पर मूल्य तय होता है। पूरा प्रति-देश ग्रिड pricing पेज पर है, और वॉल्यूम डिस्काउंट account स्तर पर अपने आप लागू होते हैं। कोई प्लेटफ़ॉर्म फ़ीस नहीं, कोई seat फ़ीस नहीं, कोई tier फ़ीचर जो सालाना कमिटमेंट के पीछे बंद हो, नहीं।