फ़ोन-नंबर इंटेलिजेंस। लाइन टाइप, कैरियर, ported-from, फ़्रॉड सिग्नल।
उन्हीं तारों पर MNP-अवेयर कैरियर लुकअप जो Bird के SMS और Voice ट्रैफ़िक को ले जाते हैं। एक endpoint, वही auth, हर दूसरे Bird चैनल जैसा ही error envelope — क्योंकि इन सबको एक ही इंजीनियरिंग टीम ने बनाया है।
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.lookup.get({
phone: "+14155550172",
}).safe();
if (error) throw error;
console.log(data);
// → {
// phone: "+14155550172",
// line_type: "mobile",
// carrier: "T-Mobile USA",
// country: "US",
// ported_from: "AT&T Mobility",
// fraud_score: 0.07,
// valid: true,
// }
npm install से पहले lookup तक सिर्फ़ 5 मिनट
जिस भाषा का आप पहले से इस्तेमाल करते हैं, उसी से नंबर लुकअप करें।
हर प्रमुख runtime के लिए SDKs। Lookup मीडियन पर 300ms से कम में जवाब देता है — इतना तेज़ कि आप इस पर SMS भेजने को गेट कर सकें।
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.lookup.get({
phone: "+14155550172",
}).safe();दस फ़ील्ड जिन्हें अन्यथा आप तीन वेंडरों से जोड़ रहे होते।
ठोस डेटा पॉइंट, नामित और ऑडिट-योग्य। हर एक किसी असली स्रोत से आता है, किसी अनुमान लगाते मॉडल से नहीं।
- 01
लाइन-टाइप डिटेक्शन
Mobile, landline, VoIP, toll-free, premium, pager. भेजने से पहले तय करें कि SMS संभव भी है या नहीं।
- 02
कैरियर पहचान
प्रति E.164 इनपुट वर्तमान कैरियर का नाम और country code। MNP रजिस्ट्री के मुकाबले लगातार अपडेट किया जाता है।
- 03
Ported-from इतिहास
पिछला कैरियर जिससे नंबर पोर्ट किया गया था। रूटिंग-लागत पूर्वानुमान और फ़्रॉड heuristics के लिए उपयोगी।
- 04
देश और क्षेत्र फ़ॉर्मैट
E.164, national और international फ़ॉर्मैटिंग लौटाता है; और वे country तथा region codes जो एक router को चाहिए।
- 05
फ़्रॉड सिग्नल
प्रति नंबर 0-1 का एक fraud_score, जो velocity, लाइन-टाइप heuristics, हाल के पोर्ट फ़्लैग और known-bad लिस्ट को मिलाता है।
- 06
वैधता और पहुँच-योग्यता
एक boolean valid और एक reachable विंडो — कुछ नंबर ठीक से पार्स हो जाते हैं पर कैरियर उन्हें अब असाइन नहीं करता।
- 07
Batch lookup
एक ही कॉल में 1,000 तक नंबरों की लिस्ट POST करें। वही प्रति-नंबर प्राइसिंग लागू होती है; आप राउंड ट्रिप बचाते हैं।
- 08
Cache-अवेयर प्राइसिंग
समान इनपुट पर 24h का cache मुफ़्त है। आप तभी भुगतान करते हैं जब जवाब वाकई अलग होता।
- 09
Batch jobs के लिए webhooks
बड़े batches के लिए, lookup.completed को subscribe करें और HTTP कनेक्शन बनाए रखने के बजाय रिज़ल्ट फ़ाइल पढ़ें।
- 10
वही auth, वही error envelope
Lookup, SMS, Email, WhatsApp, Voice के लिए एक API key। इन सबमें एक ही error type registry।
हम Lookup क्यों बनाते हैं
क्योंकि आपको यह SMS फ़ेल होते देखकर नहीं जानना चाहिए कि कोई नंबर landline है।
हम Bird SMS रूटिंग के अंदर पहले से ही MNP लुकअप चला रहे थे — हमें चलाने ही पड़ते थे, ताकि रियल टाइम में सबसे सस्ता कैरियर रूट चुन सकें। Lookup वही query है, जिसे एक first-class endpoint के रूप में सामने लाया गया है, ताकि आप एक भी SMS भेजे बिना signups गेट कर सकें, जोखिम स्कोर कर सकें और रूटिंग लागत का पूर्वानुमान लगा सकें। बाकी प्लेटफ़ॉर्म जैसा ही auth, वही error envelope, वही webhooks।
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.lookup.get({
phone: "+14155550172",
}).safe();
if (error) throw error;
console.log(data);
// → {
// phone: "+14155550172",
// line_type: "mobile",
// carrier: "T-Mobile USA",
// country: "US",
// ported_from: "AT&T Mobility",
// fraud_score: 0.07,
// valid: true,
// }
हर state change एक webhook है।
HMAC-signed payloads, replay-protected, idempotent। सिंगल-नंबर लुकअप synchronous होते हैं; batch लुकअप webhooks के रूप में fan out होते हैं।
{
"type": "lookup.completed",
"id": "evt_2qB72y...",
"created_at": "2026-05-19T15:42:01.221Z",
"data": {
"lookup_id": "lkp_4hQ8m2nT",
"phone": "+14155550172",
"line_type": "mobile",
"carrier": "T-Mobile USA",
"country": "US",
"ported_from": "AT&T Mobility",
"fraud_score": 0.07,
"valid": true
}
}
Retry शेड्यूल: 5s, 30s, 5m, 30m, 2h, 6h, 12h. आख़िरी प्रयास के बाद dead-letter; हर dead-lettered इवेंट dashboard या API से replay किया जा सकता है।
lookup.completedएक lookup (सिंगल या batch) पूरा हुआ। Payload में पूरा response शामिल है।lookup.failedLookup नहीं किया जा सका; payload में error envelope शामिल है।
नंबर लुकअप करें, फिर उसी पर भेजें।
वही auth, वही idempotency कॉन्ट्रैक्ट, वही error envelope। Lookup हर दूसरे endpoint की तरह ही आकार का है — फ़र्क सिर्फ़ इतना है कि यह मैसेज भेजने के बजाय डेटा लौटाता है।
Lookup.
await bird.lookup.get({
phone: "+14155550172",
});
कैरियर, लाइन टाइप, ported-from, फ़्रॉड सिग्नल — 300ms से कम में synchronously लौटाए जाते हैं।
SMS.
await bird.sms.send({
from: "Bird",
to: "+14155550172",
text: `Your code is ${code}.`,
category: "authentication",
});
वही auth, वही error envelope। लुकअप रिज़ल्ट पर send को गेट करें — landlines को उससे पहले ड्रॉप करें जब वे आपको महँगे पड़ें।