Phone number lookup

जानिए नंबर क्या है। भेजने से पहले।

एक POST, एक जवाब, कोई रिसोर्स बनाने या पोल करने की ज़रूरत नहीं। बेस lookup नंबर का देश, आज उसे सर्व करने वाला नेटवर्क, उसकी रेंज जारी करने वाला नेटवर्क, दोनों के बीच मूव हुआ है या नहीं यह बताने वाला फ़्लैग, और लाइन का प्रकार लौटाता है। पाँच और प्रॉपर्टीज़ उनका नाम देकर आपकी हैं।

phone-number.ts
200
const answer = await bird.lookup.phoneNumber({
  phone_number: "+31612345678",
  type: ["classification", "porting"],
});

console.log(answer.country_code, answer.line_type);
// → "NL" "mobile"
console.log(answer.network_info?.carrier_name);
// → "KPN"
console.log(answer.original_network_info?.carrier_name);
// → "Vodafone"
console.log(answer.flags);
// → ["ported"]

if (answer.porting?.status === "ok") {
  console.log(answer.porting.ported, answer.porting.last_ported_at);
  // → true "2021-04-18T00:00:00Z"
}

दो नेटवर्क, और उनके बीच का अंतर।

यही अंतर रिस्पॉन्स में पोर्टिंग जैसा दिखता है।

Phone number lookup, Bird Lookup API के दो ऑपरेशनों में से एक है। इंटरनेशनल फ़ॉर्मेट में नंबर भेजें, शुरुआत में प्लस के साथ या बिना, और आपको country_code, आज नंबर सर्व करने वाले कैरियर के लिए एक network_info ब्लॉक, और उसकी रेंज आवंटित करने वाले कैरियर के लिए एक original_network_info ब्लॉक मिलता है। जब ये दोनों अलग-अलग हों तो नंबर पोर्ट हो चुका है, और flags यही बताता है। केवल राष्ट्रीय नंबर अनुमान लगाने के बजाय अस्वीकार कर दिए जाते हैं, ताकि ग़लत इनपुट चुपचाप ग़लत देश का जवाब देने के बजाय स्पष्ट रूप से विफल हो।

क्या लौटता है, और कब।

पहले तीन हर lookup के साथ आते हैं। बाकी तब आते हैं जब आप उन्हें type में नाम देते हैं।

  1. 01

    देश और दोनों कैरियर।

    country_code रेंज का ISO देश कोड है, और नॉन-जियोग्राफ़िक नंबरों के लिए अनुमान लगाने के बजाय अनुपस्थित रहता है। network_info और original_network_info दोनों में कैरियर का नाम और मोबाइल कंट्री व नेटवर्क कोड होते हैं, जो तब काम आते हैं जब आप नाम के बजाय MCC और MNC पर रूटिंग करते हैं।

  2. 02

    लाइन टाइप, एक बंद सूची से।

    mobile, fixed_line, voip, toll_free, premium_rate, satellite, pager, payphone, m2m, service, other, या unknown। सूची बंद है, इसलिए इस पर switch संपूर्ण बना रहता है, और यह वह फ़ील्ड है जिसे SMS संभव है या नहीं यह तय करने से पहले जाँचना चाहिए।

  3. 03

    पोर्टेड फ़्लैग, बिना अतिरिक्त शुल्क के।

    flags में ported तब आता है जब नंबर ने किसी भी समय नेटवर्क बदला हो। यह बेस जवाब के साथ आता है, इसलिए नंबर कभी पोर्ट हुआ है या नहीं यह सस्ता सवाल किसी प्रॉपर्टी की ज़रूरत ही नहीं रखता।

  4. 04

    classification, लाइन पर एक दूसरी राय।

    एक अलग स्रोत से बारीक रीडिंग, जिसमें line_type में न मिलने वाली वैल्यूज़ हैं: fixed_line_or_mobile, shared_cost, national_rate, personal_number, isp, voice_mail, short_codes, और अन्य। यह रिस्पॉन्स में line_type को रिप्लेस करने के बजाय उसके बगल में बैठती है, ताकि जब कोई नंबर असामान्य लगे तो आप दोनों की तुलना कर सकें।

  5. 05

    porting, तारीखों और इतिहास के साथ।

    ported एक boolean के रूप में, last_ported_at एक timestamp के रूप में, last_ported_at_is_approximate जब रजिस्ट्री को केवल महीना पता हो, और history पोर्टिंग इवेंट्स की सूची पुराने से नए क्रम में। हर इवेंट में एक रजिस्ट्री-विशिष्ट ऐक्शन कोड होता है, जिसे दिखाना उपयोगी है लेकिन उस पर ब्रांचिंग नहीं करनी चाहिए।

  6. 06

    presence और roaming, लाइव नेटवर्क से।

    presence नेटवर्क से क्वेरी करके reachable रिपोर्ट करता है, जो यह पूछने के सबसे क़रीब है कि लाइन चालू है या नहीं। roaming, is_roaming के साथ विज़िटेड नेटवर्क का MCC और MNC रिपोर्ट करता है, ताकि विदेशी नेटवर्क पर बैठे नंबर से साइनअप को अनुमान लगाने के बजाय सीधे देखा जा सके।

  7. 07

    score, 0 से 100 तक एक संख्या।

    एक समग्र क्रेडिबिलिटी स्कोर। यह अन्य प्रॉपर्टीज़ से निकाला नहीं जा सकता, इसे माँगने का यही मतलब है: एक पूर्णांक जिस पर आप साइनअप फ़्लो में थ्रेशोल्ड लगा सकते हैं, बिना ख़ुद कैरियर नामों और लाइन टाइप पर नियम लिखे।

हर प्रॉपर्टी बताती है कि उसने जवाब दिया या नहीं।

हर ब्लॉक अपना status रखता है: ok, unavailable, या inconclusive। केवल ok में वैल्यू होती है, इसलिए आपको रिस्पॉन्स की जाँच करके यह पता लगाने की ज़रूरत नहीं कि वह खाली है, और बिना वैल्यू वाली फ़ील्ड null सेट करने के बजाय हटा दी जाती है। बिलिंग भी इसी तर्ज़ पर चलती है। बेस lookup एक बार बिल होता है, प्रॉपर्टी केवल तब बिल होती है जब उसका status ok हो, और विफल lookup का कोई बिल नहीं आता।

properties.ts
200 · partial
const answer = await bird.lookup.phoneNumber({
  phone_number: "+31612345678",
  type: ["presence", "roaming", "score"],
});

// Only a block whose status is ok carries a value.
if (answer.presence?.status === "ok") {
  console.log(answer.presence.reachable);
}

if (answer.roaming?.status === "ok") {
  console.log(answer.roaming.is_roaming, answer.roaming.mcc, answer.roaming.mnc);
}

// unavailable and inconclusive both mean no value, and no charge.
if (answer.score?.status !== "ok") {
  console.log("no credibility score on this answer");
}

प्रति अनुरोध एक नंबर।

कोई बैच फ़ॉर्म नहीं है, जानबूझकर: lookup कैरियर डेटा पर लाइव क्वेरी है, और बैच यह छिपा देता कि हज़ार में से किस पंक्ति का जवाब मिला और किसका नहीं। अनुरोध दर सीमा प्रति ऐक्टिंग क्रेडेंशियल 10 अनुरोध प्रति मिनट से शुरू होती है और Lookup का अपना बजट है, इसलिए नंबर स्क्रीनिंग आपकी सेंडिंग सीमा नहीं खाती। Idempotency-Key भेजें और फिर से प्रयास करने पर दूसरा ख़रीदने के बजाय पहले से चुकाए गए जवाब को दोहराया जाता है।

डॉक्स में और गहराई से जानें।

Phone number लुकअप करें अनुरोध और उसके हर संभव फ़ील्ड की व्याख्या करता है। Lookup ओवरव्यू दोनों ऑपरेशन और प्रॉपर्टी स्टेटस एक पेज में कवर करता है, अनुरोध दर सीमाएँ lookup ग्रुप का दस्तावेज़ देता है, और idempotency बताता है कि दोहराए गए जवाब की क्या लागत है।

Phone number lookup के सवाल, उत्तर सहित।

फ़ॉर्मेटिंग, लाइन टाइप, पोर्टिंग, और lookup क्या नहीं करता।

फ़ोन नंबर लुकअप क्या बताता है?
बेस लुकअप नंबर का देश, उसे वर्तमान में सर्व करने वाला नेटवर्क, उसकी रेंज जारी करने वाला नेटवर्क, क्या वह कभी नेटवर्क बदल चुका है, और एक मोटा लाइन टाइप बताता है। यह हमेशा चलता है, और अगर इसका उत्तर नहीं मिल पाता तो पूरा अनुरोध विफल हो जाता है बजाय आधा-खाली उत्तर लौटाने के।
नंबर कैसे लिखना चाहिए?
पहले कंट्री कॉलिंग कोड, फिर राष्ट्रीय नंबर। शुरू में प्लस वैकल्पिक है और 00 भी उसकी जगह काम करता है, इसलिए +31612345678, 31612345678 और 0031612345678 सभी एक ही नंबर हैं।
मेरा नंबर क्यों अस्वीकार हुआ?
किसी एक देश के भीतर डायलिंग के लिए लिखा गया नंबर, बिना कंट्री कोड के, अनुमान लगाने के बजाय E22000 लौटाता है। 0612345678 के आगे कंट्री कोड जोड़ने से कहीं और का एक असली नंबर बन जाएगा और आपसे उसे लुकअप करने का शुल्क लिया जाएगा।
यह कौन-कौन से लाइन टाइप लौटा सकता है?
mobile, fixed_line, voip, toll_free, premium_rate, satellite, pager, payphone, m2m, service, other, या unknown। unknown का मतलब है कि कैरियर प्लेटफ़ॉर्म के पास उस रेंज का कोई वर्गीकरण नहीं है, और other का मतलब है कि उसके पास एक है जिसका यहाँ कोई समतुल्य नहीं है। अधिक सटीक जानकारी के लिए आवंटित सेवा की classification प्रॉपर्टी का अनुरोध करें।
मुझे कैसे पता चलेगा कि कोई नंबर पोर्ट हुआ है?
network_info वह नेटवर्क है जो वर्तमान में नंबर को सर्व कर रहा है और original_network_info वह नेटवर्क है जिसने उसकी रेंज जारी की थी। एक बार नंबर पोर्ट होने पर दोनों अलग-अलग होते हैं, और उस स्थिति में flags में ported होता है। जब आपको तारीख और पूरा रिकॉर्ड भी चाहिए तो porting प्रॉपर्टी का अनुरोध करें।
मेरे उत्तर में country_code क्यों नहीं है?
क्योंकि वह नंबर किसी एक देश से संबंधित नहीं है, जैसा कि नॉन-जियोग्राफ़िक रेंज के साथ होता है। बिना मान वाले फ़ील्ड null लौटाने के बजाय हटा दिए जाते हैं, इसलिए उत्तर में मौजूद हर फ़ील्ड रिज़ॉल्व किया गया था।
क्या लुकअप नंबर पर कॉल या मैसेज करता है?
नहीं। लुकअप कभी भी नंबर से संपर्क नहीं करता। यह कैरियर और नंबर-इंटेलिजेंस डेटा पढ़ता है, और presence तथा roaming प्रॉपर्टीज़ उस नेटवर्क से पूछताछ करती हैं जिस पर नंबर रजिस्टर्ड है, इसलिए न कोई रिंग होती है और न हैंडसेट पर कुछ आता है।

व्यवहार में लाएँ।

इस विषय के लिए डॉक्यूमेंटेशन, गाइड और उदाहरणों के साथ आगे बढ़ें। संसाधन अंग्रेज़ी में हैं।

इम्प्लीमेंटेशन ब्रीफ़ पाएँ

किसी जाने-पहचाने नंबर पर अपना पहला lookup चलाएँ।

डैशबोर्ड एक बार में एक नंबर पर वही ऑपरेशन चलाता है — कोई भी कोड लिखने से पहले जवाब देखने का यह सबसे तेज़ तरीका है।

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

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

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

Cursor