API रेफरेंस
सरल, कंसिस्टेंट एंडपॉइंट्स। CORS इनेबल्ड। कोई ऑथेंटिकेशन ज़रूरी नहीं। पूरी तरह मल्टीलिंगुअल — हर फ़ील्ड की key और value 10+ भाषाओं में ट्रांसलेट होकर आती है।
बेस URL
क्विक स्टार्ट
टर्मिनल शॉर्टकट: curl ipto.to या curl ipto.to/8.8.8.8 (https:// या /v1/ip/ की ज़रूरत नहीं) भी तब काम करता है जब रिक्वेस्ट curl, Wget, या HTTPie से आती है — User-Agent से पहचाना जाता है। यह एक छोटा, ipinfo.io-स्टाइल फ़ील्ड सेट (ip, country, city, asn, org, ...) रिटर्न करता है, नीचे दिया गया पूरा स्कीमा नहीं — इस पेज पर डॉक्यूमेंटेड पूरे रिस्पॉन्स के लिए सीधे /v1/ip पाथ का इस्तेमाल करें।
सिर्फ़ IP: curl ipto.to/ip (या इसे ब्राउज़र में खोलें) सिर्फ़ आपका अपना IP एड्रेस प्लेन टेक्स्ट के रूप में रिटर्न करता है — 73.9.114.155, न कोई JSON, न कोई पेज क्रोम। ipinfo.io/ip का सीधा इक्विवैलेंट। नीचे GET /ip देखें।
डिफ़ॉल्ट रूप से मल्टीलिंगुअल: ?lang= को किसी भी सपोर्टेड कोड पर सेट करें और रिस्पॉन्स की हर JSON key और value ट्रांसलेटेड वापस आती है — सिर्फ़ country/continent नहीं। पूरी भाषा लिस्ट और &localize=0 ऑप्ट-आउट के लिए नीचे लोकलाइज़ेशन देखें।
Lookup Lab
कोई भी ipto अनुरोध बनाएँ, उसे अपनी भाषा में सीधे चलने वाले कोड के रूप में कॉपी करें, या यहीं भेजकर लाइव उत्तर देखें। निःशुल्क प्लान के लिए कुंजी की ज़रूरत नहीं है।
MCP सर्वर
ipto एक MCP (Model Context Protocol) टूल सर्वर के तौर पर भी उपलब्ध है — Claude Desktop, Cursor, या किसी भी MCP-कैपेबल क्लाइंट को नीचे दिए एंडपॉइंट पर पॉइंट करें और यह 14 कॉल करने लायक टूल्स एक्सपोज़ करता है: ip_lookup, bulk_ip_lookup (Pro/Enterprise), asn_lookup, country_lookup, reverse_dns_lookup, user_agent_parse, phone_lookup, email_lookup, fraud_score, language_detect, currency_convert, weather_lookup, trademark_lookup, और patent_lookup। Streamable HTTP पर JSON-RPC 2.0 — सिर्फ़ POST, किसी सेशन/SSE की ज़रूरत नहीं। REST API जैसा ही ऑथ: फ्री टियर के लिए छोड़ दें (IP के हिसाब से 1,000 रिक्वेस्ट/दिन), या एंडपॉइंट URL में ?api_key= जोड़ें।
सिर्फ़ stdio सपोर्ट करने वाले क्लाइंट्स के लिए, इसे ब्रिज करें: npx mcp-remote https://ipto.to/mcp
एंडपॉइंट्स
सिर्फ़ रिक्वेस्ट करने वाले क्लाइंट का अपना पब्लिक IP एड्रेस, प्लेन टेक्स्ट के रूप में रिटर्न करता है (Content-Type: text/plain) — जैसे 73.9.114.155। ipinfo.io/ip का सीधा इक्विवैलेंट: curl, Wget, HTTPie, या सीधे ब्राउज़र से विज़िट करने पर भी बिल्कुल वैसे ही काम करता है (ऊपर वाले curl ipto.to शॉर्टकट के उलट, कोई User-Agent डिटेक्शन नहीं), और ब्राउज़र में खोलने पर सिर्फ़ बेयर IP दिखाता है, कोई पेज क्रोम नहीं।
कोई पैरामीटर नहीं, कोई क्वेरी स्ट्रिंग नहीं। पूरे जियोलोकेशन/थ्रेट-इंटेलिजेंस ऑब्जेक्ट के लिए, इसके बजाय नीचे GET /v1/ip इस्तेमाल करें। यह रूट कनेक्टिंग IP को सीधे पढ़ता है (कोई D1/KV लुकअप नहीं) और प्रति-दिन रिक्वेस्ट बजट के खिलाफ़ मीटर नहीं होता — देखें Rate limits।
रिक्वेस्ट करने वाले IP के लिए जियोलोकेशन और थ्रेट इंटेलिजेंस रिटर्न करता है, जिसमें CF edge ऑब्जेक्ट के ज़रिए सिटी-लेवल डेटा भी शामिल है।
कोई ज़रूरी पैरामीटर नहीं। ?lang=, ?fields=, ?format= स्वीकार करता है — नीचे Localization और Output formats देखें।
किसी भी IPv4 एड्रेस को लुकअप करें। सिटी-लेवल फ़ील्ड्स (city, state, postal_code, latitude, longitude, timezone) तब भरे जाते हैं जब IP दो मर्ज किए गए जियो डेटासेट में से किसी एक में आता है, IP2Location या MaxMind — यह देखने के लिए कि आपको सिटी या कंट्री-लेवल डेटा मिला, रिस्पॉन्स में geo_precision चेक करें। timezone का फ़ॉर्मैट इस बात पर निर्भर करता है कि कौन-सा सोर्स मैच हुआ (IP2Location से UTC-ऑफ़सेट स्ट्रिंग, MaxMind से IANA नाम)। IPv6 लुकअप फ़िलहाल सिर्फ़ कंट्री-लेवल डेटा रिटर्न करते हैं।
| Parameter | In | Description |
|---|---|---|
ip | path | ज़रूरी। कोई भी मान्य IPv4 या IPv6 एड्रेस। |
lang | query | ऑप्शनल। country_name और continent को लोकलाइज़ करता है: en (डिफ़ॉल्ट), pt, fr, de, zh-TW, ko, zh-CN, ja-JP, es-ES, ar-SA, hi-IN। |
fields | query | ऑप्शनल। शामिल करने के लिए फ़ील्ड्स की कॉमा-सेपरेटेड लिस्ट। जैसे ?fields=ip,country_code,is_vpn |
format | query | ऑप्शनल। रिस्पॉन्स फ़ॉर्मैट: json (डिफ़ॉल्ट), csv, text, xml, yaml। |
होमपेज सर्च बार के पीछे यूनिफ़ाइड सर्च एंडपॉइंट। पहचानता है कि :query एक IP है, एक ASN (AS15169 या 15169), 2-लेटर कंट्री कोड, एक ईमेल, या फ़ोन नंबर है, फिर हर संबंधित चेक को एक ही रिस्पॉन्स में इकट्ठा करता है। IP क्वेरी के लिए यह — पैरेलल में, सर्वर-साइड पर — प्राइमरी IP लुकअप के साथ-साथ RPKI, IP-to-company, mobile-carrier, hosted-domains, और places को भी फैन-आउट करता है, इसलिए एक ही सर्च आपके डेली रेट-लिमिट बजट से हर फ़ीचर के लिए अलग-अलग नहीं, सिर्फ़ एक रिक्वेस्ट लेता है।
| Parameter | In | Description |
|---|---|---|
query | path | ज़रूरी। एक IP, ASN, कंट्री कोड, ईमेल, या फ़ोन नंबर। |
| Field | Type | Description |
|---|---|---|
query | string | मिला हुआ डिकोडेड इनपुट, जैसा प्राप्त हुआ। |
detected_type | string | "ip", "asn", "country", "email", या "phone"। |
ip | object|null | मौजूद होता है जब detected_type "ip" हो — GET /v1/ip/:ip जैसा ही शेप। |
rpki | object|null | IP क्वेरीज़ के लिए मौजूद — GET /v1/ip/:ip/rpki जैसा ही शेप। |
company | object|null | IP क्वेरीज़ के लिए मौजूद — GET /v1/ip/:ip/company जैसा ही शेप। |
whois | object|null | IP क्वेरीज़ के लिए मौजूद — GET /v1/ip/:ip/whois जैसा ही शेप। |
carrier | object|null | IP क्वेरीज़ के लिए मौजूद — GET /v1/ip/:ip/carrier जैसा ही शेप। |
asn / country / email / phone | object|null | जब detected_type मैच करे तो ऊपर वाले छह फ़ील्ड्स की जगह मौजूद होता है — उस टाइप के अपने डेडिकेटेड एंडपॉइंट जैसा ही शेप। |
हर सब-फ़ील्ड अलग-अलग डिग्रेड होता है — कोई धीमा या फ़ेल हुआ अपस्ट्रीम (RIPEstat, कोई RDAP सर्वर, crt.sh) सिर्फ़ उस एक फ़ील्ड के null होने के तौर पर दिखता है, कभी पूरे सर्च के फ़ेल होने के तौर पर नहीं। सिर्फ़ अमान्य प्राइमरी क्वेरी (जैसे कोई बिगड़ा हुआ IP) पूरी रिक्वेस्ट के लिए एरर स्टेटस रिटर्न करता है।
रिवर्स DNS — DNS-over-HTTPS के ज़रिए एक सिंगल लाइव PTR लुकअप, कोई डोमेन-एन्यूमरेशन डेटाबेस नहीं। अगर IP का कोई PTR रिकॉर्ड नहीं है तो null रिटर्न करता है।
| Parameter | In | Description |
|---|---|---|
ip | path | ज़रूरी। कोई भी मान्य IPv4 या IPv6 एड्रेस। |
किसी IP के फ़िलहाल-अनाउंस्ड रूट के लिए RPKI रूट-ओरिजिन वेलिडेशन, RIPEstat के ज़रिए लाइव रिज़ॉल्व होता है (कोई ROA डेटाबेस लोकली इनजेस्ट या सिंक नहीं किया जाता)। status हमेशा सिर्फ़ "valid", "invalid", या "unknown" होता है — किसी और सिग्नल से कभी सिंथेसाइज़ नहीं किया जाता; कोई भी RIPEstat फ़ेलियर या टाइमआउट एक reason स्ट्रिंग के साथ "unknown" रिटर्न करता है, एरर नहीं।
| Parameter | In | Description |
|---|---|---|
ip | path | ज़रूरी। कोई भी मान्य IPv4 या IPv6 एड्रेस। |
| Field | Type | Description |
|---|---|---|
asn | integer|null | फ़िलहाल-अनाउंस करने वाला ASN, लाइव रिज़ॉल्व होता है — इस साइट के अपने ASN डेटासेट से नहीं निकाला जाता। |
prefix | string|null | फ़िलहाल-अनाउंस्ड CIDR प्रीफ़िक्स। |
status | string | "valid", "invalid", या "unknown"। |
validating_roas | array | RIPEstat ने जो specific ROA(s) मैच किए, हर एक origin/prefix/max_length/validity के साथ। |
validator | string|null | RIPEstat ने कौन-सा RPKI validator इस्तेमाल किया (जैसे "routinator")। |
reason | string|null | "unknown" रिज़ल्ट को समझाता है — जैसे कोई कवरिंग ROA मौजूद नहीं है, या RIPEstat तक पहुंचा नहीं जा सका। |
स्पष्ट (ASN, prefix) RPKI वेलिडेशन — उस स्थिति के लिए जब आपको पहले से पता हो कि आप कौन-सा एग्ज़ैक्ट रूट चेक करवाना चाहते हैं, ऊपर वाली IP-से-निकाली गई सुविधा के बजाय।
| Parameter | In | Description |
|---|---|---|
asn | query | ज़रूरी। ASN नंबर, AS प्रीफ़िक्स के साथ या बिना। जैसे 15169 या AS15169। |
prefix | query | ज़रूरी। CIDR प्रीफ़िक्स, जैसे 8.8.8.0/24। |
RDAP (स्ट्रक्चर्ड WHOIS) रजिस्ट्रेंट डेटा को ASN के अपने ऑर्गेनाइज़ेशन नाम के साथ मिलाकर, वह ऑर्गेनाइज़ेशन पहचानता है जिसके पास IP रजिस्टर्ड है, एक कैटेगोरिकल कॉन्फ़िडेंस के रूप में, कभी न्यूमेरिक स्कोर के रूप में नहीं।
| Parameter | In | Description |
|---|---|---|
ip | path | ज़रूरी। कोई भी मान्य IPv4 या IPv6 एड्रेस। |
| Field | Type | Description |
|---|---|---|
company_name | string|null | रिज़ॉल्व की गई कंपनी का नाम — जब confidence "low" हो (दोनों सोर्स असहमत हैं, इसलिए किसी को भी अथॉरिटेटिव नहीं दिखाया जाता) या "none" हो तो null। |
rdap_org_name | string|null | RDAP रजिस्ट्रेंट नाम, company_name से स्वतंत्र। |
asn_org_name | string|null | ASN का अपना ऑर्गेनाइज़ेशन नाम, company_name से स्वतंत्र। |
confidence | string | "high" (सोर्स सहमत हैं), "medium" (सिर्फ़ एक सोर्स उपलब्ध है), "low" (सोर्स असहमत हैं — दोनों दिखाए गए हैं), या "none"। |
reason | string | confidence टियर की सरल भाषा में व्याख्या। |
अंदर का असली RDAP रजिस्ट्रेशन रिकॉर्ड — network block, registration/last-changed dates, और RDAP के पास मौजूद हर contact। ऊपर वाले /company से अलग, जो इसी रजिस्ट्रेंट डेटा को ASN के org नाम के साथ मिलाकर एक confidence-scored जवाब में बदल देता है; यह एंडपॉइंट रॉ रिकॉर्ड को जैसा है वैसा ही रिटर्न करता है, क्लासिक WHOIS आउटपुट के करीब। IPv6 एड्रेस भी सपोर्टेड हैं।
| Parameter | In | Description |
|---|---|---|
ip | path | ज़रूरी। कोई भी मान्य IPv4 या IPv6 एड्रेस। |
| Field | Type | Description |
|---|---|---|
available | boolean | अगर कोई RDAP रिकॉर्ड रिज़ॉल्व नहीं हो सका तो false — reason देखें। |
reason | string|null | available: false रिज़ल्ट को समझाता है। |
startAddress / endAddress / cidr | string|null | रजिस्टर्ड नेटवर्क ब्लॉक। |
netName / netHandle / parentHandle | string|null | नेटवर्क ऑब्जेक्ट के लिए RIR-असाइन किए गए आइडेंटिफ़ायर। |
country | string|null | RDAP के अनुसार, रजिस्ट्रेंट का देश। |
allocationType | string|null | जैसे "direct allocation", "reassigned"। |
registeredDate / lastChangedDate | string|null | RDAP रिकॉर्ड से ISO टाइमस्टैम्प। |
rir | string|null | किस रीजनल रजिस्ट्री (ARIN, RIPE, APNIC, LACNIC, AFRINIC) ने रिकॉर्ड सर्व किया। |
contacts | array | RDAP के पास मौजूद हर contact, हर एक roles, name, email, और handle के साथ — सिर्फ़ पहला मैच नहीं। |
मोबाइल नेटवर्क के रूप में क्लासिफ़ाइड IPs के लिए बेस्ट-एफ़र्ट मोबाइल-कैरियर आइडेंटिफ़िकेशन, MCC/MNC ऑपरेटर डायरेक्टरी के खिलाफ़ क्रॉस-रेफ़रेंस किया गया। जानबूझकर इसमें कोई एक carrier फ़ील्ड नहीं है — नीचे matched_carrier_entries और note देखें — क्योंकि एक सीधा carrier नाम एक लाइव पर-सब्सक्राइबर दावे जैसा लगेगा, जिसे यह डेटा ईमानदारी से सपोर्ट नहीं कर सकता।
| Parameter | In | Description |
|---|---|---|
ip | path | ज़रूरी। कोई भी मान्य IPv4 या IPv6 एड्रेस। |
| Field | Type | Description |
|---|---|---|
is_mobile_network | boolean | false होने पर यहीं एक खाली directory के साथ रुक जाता है — non-mobile ASN के लिए कोई अंदाज़ा नहीं लगाया जाता। |
asn_organization | string|null | ASN का अपना ऑर्गेनाइज़ेशन नाम। |
matched_carrier_entries | array | MCC/MNC डायरेक्टरी की वे रो जिनका carrier नाम asn_organization से fuzzy-match करता है, IP के अपने देश तक सीमित। |
note | string | बताता है कि यह फ़ील्ड क्या दावा कर सकता है और क्या नहीं। |
किसी IP के reverse-DNS (PTR) hostname और certificate-transparency logs (crt.sh) के ज़रिए उससे जुड़े डोमेन ढूंढता है — कोई सामान्य reverse-IP लुकअप नहीं। रिस्पॉन्स का अपना limitations फ़ील्ड बिल्कुल बताता है कि यह क्या ढूंढ सकता है और क्या नहीं।
| Parameter | In | Description |
|---|---|---|
ip | path | ज़रूरी। कोई भी मान्य IPv4 या IPv6 एड्रेस। |
| Field | Type | Description |
|---|---|---|
ptr_hostname | string|null | IP का reverse-DNS hostname, या null अगर इसका कोई PTR रिकॉर्ड नहीं है। |
root_domain | string|null | ptr_hostname से निकाला गया registrable डोमेन। |
subdomains_seen | array|null | certificate transparency के ज़रिए मिले सबडोमेन। null का मतलब है कि crt.sh सर्च खुद पूरी नहीं हो सकी — यह एक खाली array से अलग है, जिसका मतलब है कि सर्च चली लेकिन कुछ नहीं मिला। |
limitations | string | बताता है कि यह फ़ीचर स्ट्रक्चरल रूप से क्या डिटेक्ट नहीं कर सकता (no PTR, shared hosting, uncertified डोमेन)। |
बैच लुकअप — प्रति रिक्वेस्ट 100 IPs तक, सिर्फ़ Pro/Enterprise। हर IP को की के तौर पर लेकर एक keyed ऑब्जेक्ट रिटर्न करता है। पैरेलल कैश और डेटाबेस रीड्स की वजह से सीक्वेंशियल कॉल्स से तेज़। बैच में हर IP आपके डेली रिक्वेस्ट बजट में गिना जाता है, अलग-अलग लुकअप करने जैसा ही। Free-tier रिक्वेस्ट्स को 403 मिलता है — देखें pricing।
| Parameter | In | Description |
|---|---|---|
body | body (JSON) | IP स्ट्रिंग्स का JSON array। जैसे ["1.1.1.1","8.8.8.8"] |
नंबर के ज़रिए किसी Autonomous System को लुकअप करें। org नाम, देश, महाद्वीप, IP रेंज काउंट, क्लासिफ़िकेशन टाइप, एक्सचेंज रेट, और locale रेफरेंस डेटा (languages, tld, capital, borders) रिटर्न करता है।
| Parameter | In | Description |
|---|---|---|
asn | path | AS प्रीफ़िक्स के बिना ASN नंबर। जैसे Google के लिए 15169। |
lang | query | ऑप्शनल। country_name और continent को लोकलाइज़ करता है: en (डिफ़ॉल्ट), pt, fr, de, zh-TW, ko, zh-CN, ja-JP, es-ES, ar-SA, hi-IN। |
format | query | ऑप्शनल। रिस्पॉन्स फ़ॉर्मैट: json (डिफ़ॉल्ट), csv, text, xml, yaml। |
किसी IP की मौजूदा सिटी-लेवल लोकेशन को reverse-geocode करता है, फिर आस-पास के पॉइंट्स ऑफ़ इंटरेस्ट (रेस्टोरेंट, पार्क, स्कूल, ट्रांज़िट, notable लैंडमार्क), जहां कोई सोर्स मौजूद हो वहां लोकल क्राइम डेटा (सिर्फ़ UK और US), और एक ऑप्शनल ऑन-डिमांड ड्राइविंग कम्यूट एस्टिमेट रिटर्न करता है।
| Parameter | In | Description |
|---|---|---|
ip | path | ज़रूरी। कोई भी मान्य IPv4 एड्रेस। IPv6 अभी सपोर्टेड नहीं है। |
dest_lat | query | ऑप्शनल। कम्यूट एस्टिमेट के लिए destination latitude — dest_lon के साथ पेयर करें। |
dest_lon | query | ऑप्शनल। कम्यूट एस्टिमेट के लिए destination longitude — dest_lat के साथ पेयर करें। |
dest_address | query | ऑप्शनल। कम्यूट एस्टिमेट के लिए फ़्री-टेक्स्ट destination एड्रेस, ऑटोमैटिकली forward-geocoded होता है। अगर dest_lat/dest_lon भी दिए गए हों तो इसे अनदेखा किया जाता है। |
| Field | Type | Description |
|---|---|---|
geocode | object|null | country, countryCode, region, city, neighbourhood, displayName — null अगर IP के पास geocode करने के लिए कोई सिटी-लेवल लोकेशन नहीं है। |
locality.restaurants / .parks / .schools / .transit | array | हर कैटेगरी में 4 तक सबसे नज़दीकी एंट्रीज़, हर एक name और distanceMeters के साथ। |
locality.notable | array | Wikidata के ज़रिए, एक छोटे विवरण के साथ आस-पास के notable लैंडमार्क। |
locality.usCrime | object|null | सबसे नज़दीकी एजेंसी के violent/property crime टोटल — सिर्फ़ US, डिप्लॉयमेंट पर एक FBI_CRIME_API_KEY ज़रूरी है। बाकी हर जगह null। |
locality.ukCrime | object|null | 1 मील के अंदर स्ट्रीट-लेवल इंसिडेंट समरी — सिर्फ़ GB। |
locality.caCrime | null | हमेशा null — कोई Canada-wide क्राइम सोर्स वायर्ड-अप नहीं है (docs/places.md देखें)। |
commute | object|null | durationMinutes और distanceKm, सिर्फ़ तब जब कोई destination दिया गया हो और OpenRouteService ने कोई route रिटर्न किया हो। बाकी हर स्थिति में null — कभी अटकल से कैलकुलेट नहीं किया जाता। |
कंट्री-लेवल एग्रीगेट स्टैटिस्टिक्स के साथ locale रेफरेंस डेटा (currency, exchange rate, languages, tld, capital, borders)।
| Parameter | In | Description |
|---|---|---|
code | path | ISO 3166-1 alpha-2 कंट्री कोड। जैसे US, DE, JP। |
lang | query | ऑप्शनल। country_name और continent को लोकलाइज़ करता है: en (डिफ़ॉल्ट), pt, fr, de, zh-TW, ko, zh-CN, ja-JP, es-ES, ar-SA, hi-IN। |
format | query | ऑप्शनल। रिस्पॉन्स फ़ॉर्मैट: json (डिफ़ॉल्ट), csv, text, xml, yaml। |
एक User-Agent स्ट्रिंग को पार्स करें। browser, OS, device टाइप, और बॉट डिटेक्शन रिटर्न करता है। डिफ़ॉल्ट रूप से कॉलर का User-Agent हेडर पढ़ता है, या ?ua= के ज़रिए कोई भी स्ट्रिंग पास करें।
| Parameter | In | Description |
|---|---|---|
ua | query | ऑप्शनल। पार्स करने के लिए URL-encoded User-Agent स्ट्रिंग। डिफ़ॉल्ट रूप से रिक्वेस्ट के User-Agent हेडर पर सेट होता है। |
एक फ़ोन नंबर को हमेशा फ्री में validate और format करता है: region, line type, और E.164/national/international फ़ॉर्मैटिंग एक self-hosted पार्सर के ज़रिए, कोई vendor कॉल नहीं। जब per-IP/key मंथली प्रीमियम budget उपलब्ध हो (Free पर 100/महीना, paid टियर्स पर ज़्यादा — देखें pricing), तो वही रिक्वेस्ट एक रियल-टाइम carrier-lookup सर्विस से लाइव carrier नाम, porting स्टेटस, और एक provider-classified phone type भी रिटर्न करती है — देखें source और नीचे दिए फ़ील्ड्स। एक लोकलाइज़्ड country_name और lang/lang_source टियर की परवाह किए बिना हमेशा शामिल होते हैं — देखें Localization। प्रीमियम budget ख़त्म होने पर, या किसी upstream इश्यू पर, ऊपर वाले फ्री फ़ील्ड्स पर सहजता से fall back करता है; इसकी वजह से रिक्वेस्ट कभी fail नहीं होती। प्रति-नंबर lookup की बजाय country-level network-operator रेफरेंस के लिए इसके बजाय GET /v1/carriers देखें।
| Parameter | In | Description |
|---|---|---|
number | path | ज़रूरी। कोई भी फ़ोन नंबर, आइडियली E.164 फ़ॉर्मैट में (जैसे +14155552671)। शुरुआती + को URL-encode करें। |
country | query | ऑप्शनल। अस्पष्ट national-format नंबर्स को पार्स करने के लिए 2-लेटर कंट्री कोड hint, जैसे ?country=US। |
mode | query | Optional। ?mode=current नंबर का रियल-टाइम (SIM-issued की बजाय) carrier मांगता है, जब प्रीमियम टियर उपलब्ध हो। रिक्वेस्ट के फ्री टियर पर fall back होने पर इसे इग्नोर किया जाता है। |
| Field | Type | Description |
|---|---|---|
valid | boolean | true अगर नंबर अपने region के लिए मान्य numbering-plan पैटर्न से मैच करता है। |
country_code | string|null | ISO 3166-1 alpha-2 region जिससे नंबर संबंधित है। |
national_format | string|null | region के अपने national कन्वेंशन में फ़ॉर्मैटेड। |
international_format | string|null | कंट्री कोड और स्पेसिंग के साथ फ़ॉर्मैटेड, जैसे "+1 415 555 2671"। |
e164 | string|null | कैनोनिकल E.164 फ़ॉर्म, जैसे "+14155552671"। |
line_type | string|null | FIXED_LINE, MOBILE, FIXED_LINE_OR_MOBILE, VOIP, TOLL_FREE, PREMIUM_RATE, या इनके जैसा कुछ। कई numbering plans (North America के प्लान समेत) सिर्फ़ नंबर से fixed और mobile में फ़र्क़ नहीं कर पाते। |
source | string | "premium" अगर इस रिक्वेस्ट के लिए लाइव carrier-lookup budget उपलब्ध था, "local" अगर यह ऊपर वाले फ्री पार्सर पर fall back हुआ। नीचे दिए carrier, phone_type, original_carrier, is_ported, phone_region, और country_prefix सिर्फ़ तभी भरे जाते हैं जब source "premium" हो — इससे आगे country_name और lang/lang_source टियर की परवाह किए बिना हमेशा भरे जाते हैं। |
phone_type | string|null | लाइव carrier-lookup प्रोवाइडर की अपनी categories में से एक: mobile, fixed_line, voip, toll_free, premium_rate, shared_cost, personal_number, pager, uan, voicemail, या unknown — सिर्फ़ पहले चार नहीं, जो केवल सबसे आम उदाहरण हैं। जब source "local" हो तो null — ऊपर वाले line_type से अलग, जो लोकल पार्सर से आता है और categories का एक अलग सेट इस्तेमाल करता है। |
carrier | string|null | नंबर के मौजूदा network operator का नाम। जब source "local" हो तो null। |
original_carrier | string|null | वह network operator जिस पर नंबर मूल रूप से issue हुआ था, अगर तब से यह port हो चुका है। जब source "local" हो या नंबर port नहीं हुआ हो तो null। |
is_ported | boolean|null | true अगर नंबर अपने original carrier से port हो चुका है। जब source "local" हो तो null। |
phone_region | string|null | नंबर के लिए locality/state-level डिटेल (जैसे "California"), ऊपर वाले country_code से ज़्यादा फ़ाइन-ग्रेन्ड। जब source "local" हो तो null। |
country_prefix | string|null | नंबर का calling code बिना आगे "+" के (जैसे Germany के लिए "49")। जब source "local" हो तो null। |
country_name | string|null | पूरा country डिस्प्ले नाम (जैसे "Germany") — ऊपर वाला country_code सिर्फ़ ISO alpha-2 फ़ॉर्म है ("DE"), कोई डिस्प्ले नाम नहीं। ऊपर वाले प्रीमियम-ओनली फ़ील्ड्स के उलट, यह हमेशा भरा जाता है (जब भी country_code भरा हो) और ?lang=/Accept-Language के ज़रिए बिल्कुल वैसे ही लोकलाइज़ होता है जैसे किसी भी दूसरे endpoint का country_name फ़ील्ड पहले से होता है — नीचे lang/lang_source देखें। |
lang | string | वह भाषा जो असल में ऊपर वाले country_name पर लागू हुई — resolved ?lang= वैल्यू, या "en" अगर कोई भाषा रिक्वेस्ट नहीं की गई थी या रिक्वेस्ट की गई भाषा सपोर्टेड नहीं है। |
lang_source | string | "param" अगर रिक्वेस्ट पर ?lang= मौजूद था, "header" अगर इसके बजाय Accept-Language इस्तेमाल हुआ, या "default" अगर दोनों में से कोई नहीं था और English इस्तेमाल हुई। GET /v1/asn/:asn और GET /v1/country/:code पर मौजूद इसी नाम वाले फ़ील्ड जैसा ही मतलब। |
बैच वेलिडेशन। हर टियर को बल्क एक्सेस मिलता है (/v1/ip/bulk के उलट) — Free को बाउंडेड रखने का काम per-tier बैच cap करता है, कोई 403 नहीं। Free: 10/रिक्वेस्ट, 100/दिन। Pro: 100/रिक्वेस्ट, 1,000/दिन। Enterprise: 1,000/रिक्वेस्ट, 10,000/दिन। यह बजट आपकी सामान्य डेली रिक्वेस्ट लिमिट से अलग है — देखें Rate limits।
| Parameter | In | Description |
|---|---|---|
body | body (JSON) | फ़ोन नंबर स्ट्रिंग्स का JSON array। |
रेफरेंस लुकअप: किसी दिए गए देश के लिए कौन-से mobile network operators (MCC/MNC) जाने जाते हैं — किसी specific फ़ोन नंबर से नहीं जुड़ा। एक community-maintained MCC/MNC कलेक्शन (MIT-लाइसेंस्ड, आख़िरी बार 2026 में सिंक हुआ — डिटेल्स के लिए docs repo देखें) से लिया गया; एक स्टैटिक रेफरेंस टेबल, कोई लाइव फ़ीड नहीं, क्योंकि numbering-plan असाइनमेंट इतनी बार नहीं बदलते कि लाइव फ़ीड ज़रूरी हो।
| Parameter | In | Description |
|---|---|---|
country | query | ज़रूरी। 2-लेटर कंट्री कोड, जैसे ?country=US। |
ईमेल syntax वेलिडेशन, DNS-over-HTTPS के ज़रिए एक लाइव MX-रिकॉर्ड चेक, और एक community-maintained blocklist (CC0-लाइसेंस्ड, रोज़ाना सिंक होता है) के खिलाफ़ disposable/temporary-डोमेन डिटेक्शन। यह वेरिफ़ाई नहीं करता कि mailbox खुद मौजूद है या नहीं — इसके लिए एक SMTP handshake चाहिए जो यह API नहीं करता (has_mx वाकई क्या साबित करता है और क्या नहीं, इसके लिए नीचे फ़ील्ड रेफरेंस देखें)।
| Parameter | In | Description |
|---|---|---|
email | path | ज़रूरी। कोई भी ईमेल एड्रेस, URL-encoded (@ को %40 के रूप में encode करना ज़रूरी है)। |
| Field | Type | Description |
|---|---|---|
valid_syntax | boolean | true अगर एड्रेस एक स्टैंडर्ड ईमेल syntax पैटर्न से मैच करता है। यह वेरिफ़ाई नहीं करता कि mailbox मौजूद है। |
domain | string|null | डोमेन वाला हिस्सा, lowercase में। अगर valid_syntax false है तो null। |
has_mx | boolean|null | true अगर डोमेन के पास अभी कम-से-कम एक MX रिकॉर्ड है। अगर syntax अमान्य था या DNS क्वेरी खुद फ़ेल/टाइमआउट हुई तो null — null को unknown मानें, false नहीं। |
disposable | boolean|null | true अगर डोमेन किसी जाने-पहचाने disposable/temporary-ईमेल प्रोवाइडर से मैच करता है। has_mx जैसी ही कंडीशंस में null। |
source | "premium"|"local" | अगर इस अनुरोध के लिए लाइव जाँच चली तो "premium", नहीं तो "local" (सीमा पूरी हो गई, या फ़ीचर सक्षम नहीं है) — ऊपर दिए गए फ़ील्ड (valid_syntax से disposable तक) दोनों ही स्थितियों में हमेशा मौजूद रहते हैं। |
is_reachable | string|null | एक वैकल्पिक लाइव जाँच का समग्र निर्णय: "safe" (डिलिवरेबल), "invalid" (अस्वीकृत), "risky" (अनिश्चित), या "unknown" (अनिर्णायक — फिर से प्रयास करें)। इस अनुरोध के लिए लाइव जाँच नहीं चली तो null (नीचे source देखें)। |
is_catch_all | boolean|null | अगर डोमेन किसी भी पते के लिए मेल स्वीकार करता है, जिसका मतलब है कि इस विशेष मेलबॉक्स का अस्तित्व पुष्ट नहीं किया जा सका, तो true। लाइव जाँच न चलने पर null। |
mailbox_full | boolean|null | अगर लाइव जाँच में मेलबॉक्स भरा हुआ पाया गया तो true। लाइव जाँच न चलने पर null। |
is_role_account | boolean|null | अगर पता किसी व्यक्ति के मेलबॉक्स के बजाय भूमिका खाते (जैसे support@, admin@) जैसा दिखता है तो true। लाइव जाँच न चलने पर null। |
is_disabled | boolean|null | अगर लाइव जाँच में मेलबॉक्स स्पष्ट रूप से निष्क्रिय पाया गया तो true। लाइव जाँच न चलने पर null। |
आप जो भी IP, email, phone, और User-Agent देते हैं उन्हें मिलाकर एक 0–100 स्कोर बनाता है — यह वह एक चीज़ है जो ip-api.com, ipapi.co, ipgeolocation.io, ipify.org, ipregistry.co, ip2location.io, AbstractAPI, IPLocate.io, या BigDataCloud में से कोई भी एक फ़्यूज़्ड सिग्नल के तौर पर ऑफ़र नहीं करता (सीधे चेक किया गया)। चारों इनपुट ऑप्शनल और स्वतंत्र हैं — इनमें से कोई भी सबसेट पास करें। अगर छोड़ा जाए तो ip डिफ़ॉल्ट रूप से आपका अपना IP लेता है और ua आपका अपना User-Agent हेडर, GET /v1/ip और GET /v1/ua जैसा ही कन्वेंशन। जो सिग्नल आप पास नहीं करते वह सिर्फ़ रिस्पॉन्स से गायब होता है, उसे क्लीन के तौर पर स्कोर नहीं किया जाता — उसका वेट उन सिग्नल्स में फिर से बांट दिया जाता है जो आपने दिए थे।
| Parameter | In | Description |
|---|---|---|
ip | query | ऑप्शनल। डिफ़ॉल्ट रूप से आपका अपना IP। IPv6 अभी स्कोर नहीं किया जाता (बाकी threat-data API जैसी ही लिमिटेशन)। |
email | query | ऑप्शनल। कोई भी ईमेल एड्रेस। |
phone | query | ऑप्शनल। कोई भी फ़ोन नंबर। |
ua | query | ऑप्शनल। डिफ़ॉल्ट रूप से आपका अपना User-Agent हेडर। |
| Field | Type | Description |
|---|---|---|
score | integer | जो भी सिग्नल दिए गए उन सबका 0-100 weighted कंपोज़िट। |
risk_tier | string | "low" (<20), "medium" (20-44), "high" (45-69), या "critical" (70+)। |
signals | object | प्रति-इनपुट ब्रेकडाउन — सिर्फ़ उन इनपुट की keys मौजूद होती हैं जो आपने वाकई दी थीं: ip, email, phone, user_agent। हर एक में अपना कंपोनेंट स्कोर, साथ ही वही फ़ील्ड्स होते हैं जो GET /v1/ip/:ip, /v1/email/:email, /v1/phone/:number, और /v1/ua उस इनपुट के लिए पहले से रिटर्न करते हैं। |
एक असली headless Chrome इंस्टेंस (Cloudflare Browser Rendering, कोई थर्ड-पार्टी स्क्रीनशॉट वेंडर नहीं) में एक URL को रेंडर करता है और एक PNG रिटर्न करता है। इंटरनल/प्राइवेट टारगेट्स (localhost, RFC 1918 रेंज, link-local/cloud-metadata एड्रेस) को ब्राउज़र लॉन्च होने से पहले ही रिजेक्ट कर दिया जाता है। Browser Rendering की अपनी प्लेटफ़ॉर्म-लेवल लिमिट्स लागू होती हैं, जो इस बाकी API से कहीं ज़्यादा टाइट हैं — लोअर Cloudflare प्लान्स पर उम्मीद करें कि यह आपके सामान्य डेली रिक्वेस्ट बजट से काफ़ी पहले थ्रॉटल हो जाएगा।
| Parameter | In | Description |
|---|---|---|
url | query | ज़रूरी। http या https होना चाहिए। |
लोकल trigram-frequency एनालिसिस के ज़रिए किसी टेक्स्ट की भाषा पहचानता है — कोई एक्सटर्नल वेंडर कॉल नहीं, कोई AI-मॉडल इन्फ़रेंस नहीं, कोई लॉगिंग नहीं। 10 कैरेक्टर से कम इनपुट पर null language रिटर्न होता है; ~30 कैरेक्टर से कम पर अब भी एक best guess मिल सकता है लेकिन reliable false होगा।
| Parameter | In | Description |
|---|---|---|
text | query | ज़रूरी। 5,000 कैरेक्टर तक — इससे लंबा इनपुट ट्रंकेट किया जाता है, रिजेक्ट नहीं। |
| Field | Type | Description |
|---|---|---|
language | object|null | बेस्ट मैच के लिए code (ISO 639-1), iso639_3, name, और local_name। अगर टेक्स्ट बहुत छोटा है या पहचाना नहीं गया ("und") तो null। |
reliable | boolean | छोटे इनपुट के लिए false — रिज़ल्ट को एक अंदाज़ा मानें, कॉन्फ़िडेंट मैच नहीं। |
candidates | array | नज़दीकी से जुड़ी भाषाओं के लिए, रिलेटिव स्कोर के साथ 5 तक runner-up भाषाएं। |
उसी डेली reference-rate फ़ीड का इस्तेमाल करते हुए दो करेंसी (154 सपोर्टेड) के बीच एक अमाउंट कन्वर्ट करता है जो हर IP, ASN, और कंट्री लुकअप पर currency_code/exchange_rate_usd को पहले से पावर करती है — यहां एक स्टैंडअलोन कन्वर्शन एंडपॉइंट के तौर पर एक्सपोज़्ड है, किसी जियोलोकेशन रिस्पॉन्स के अंदर nested होने के बजाय।
| Parameter | In | Description |
|---|---|---|
from | query | ज़रूरी। 3-लेटर ISO 4217 करेंसी कोड। |
to | query | ज़रूरी। 3-लेटर ISO 4217 करेंसी कोड। |
amount | query | ऑप्शनल। डिफ़ॉल्ट रूप से 1। |
| Field | Type | Description |
|---|---|---|
result | number | कन्वर्ट किया गया अमाउंट। |
rate | number | 1 from के बदले to की यूनिट्स। |
updated | string | reference-rate सिंक का ISO टाइमस्टैम्प जो इस कन्वर्शन ने इस्तेमाल किया। |
सिर्फ़ USD नहीं, किसी भी सपोर्टेड करेंसी के खिलाफ़ rebase किया गया पूरा एक्सचेंज-रेट टेबल (154 करेंसी)।
| Parameter | In | Description |
|---|---|---|
base | query | ऑप्शनल। डिफ़ॉल्ट रूप से USD। |
| Field | Type | Description |
|---|---|---|
rates | object | currency code → base के मुकाबले rate का मैप। |
एक करेंसी पेयर के लिए 90 दिन पीछे तक की डेली reference-rate history — currency converter टूल पर rate-trend चार्ट के पीछे का डेटा। एक बार backfill किया जाता है, फिर उसी cron के ज़रिए रोज़ाना append होता है जो GET /v1/currency/convert को अपडेट करता है। यह समय के साथ एक सिंगल डेली reference rate है, कोई bid/ask ट्रेडिंग स्प्रेड नहीं।
| Parameter | In | Description |
|---|---|---|
target | query | ज़रूरी। चार्ट करने के लिए 3-लेटर ISO 4217 करेंसी कोड। |
base | query | ऑप्शनल। डिफ़ॉल्ट रूप से USD। |
days | query | ऑप्शनल। 30, 60, 90 में से एक। डिफ़ॉल्ट रूप से 30। |
| Field | Type | Description |
|---|---|---|
series | array | { date, rate } पॉइंट्स का ascending-date array। |
stats | object | रिटर्न की गई series में min, avg, max, और current। |
किसी जगह के नाम, पोस्टल कोड, "lat,lon" पेयर, या lat + lon अथवा ip के लिए मौजूदा कंडीशंस — और, detail=1 के साथ, एक hourly outlook और मल्टी-डे फ़ोरकास्ट। अमेरिका के स्थानों के लिए नेशनल वेदर सर्विस (National Weather Service) और बाकी दुनिया के लिए MET Norway जवाब देता है। यूनिट्स, 9 दिन तक, सूर्य और चंद्रमा, आधिकारिक चेतावनियों और बहुत कुछ वाले पूरे दस्तावेज़ के लिए include= जोड़ें — नीचे दिया include कार्ड देखें। weather-lookup टूल इस एंडपॉइंट को स्पष्ट रूप से कॉल करने से पहले ब्राउज़र में कॉलर की अपनी लोकेशन भी अपने-आप पहचान लेता है।
| Parameter | In | Description |
|---|---|---|
q | query | शहर का नाम, पोस्टल कोड, या "lat,lon" (ज़्यादा से ज़्यादा 100 कैरेक्टर)। या इसके बजाय lat और lon, या ip दें। तीनों में से एक ज़रूरी है। |
detail | query | ऑप्शनल। "1" weather में pressure_mb/visibility_km/dewpoint_c/sunrise/sunset/आदि जोड़ता है, साथ ही एक forecast ऑब्जेक्ट (hourly + daily)। डिफ़ॉल्ट रूप से छोड़ा जाता है। |
| Field | Type | Description |
|---|---|---|
condition | string|null | छोटा टेक्स्ट विवरण। |
temp_c / temp_f | number|null | मौजूदा तापमान। |
feels_like_c | number|null | सेल्सियस में "Feels like" तापमान। |
humidity_pct | number|null | सापेक्ष आर्द्रता (humidity)। |
wind_kmph / wind_dir | number|null / string|null | हवा की गति और 16-पॉइंट कम्पास दिशा। |
uv_index | number|null | UV इंडेक्स। |
location | object|null | क्वेरी की गई जगह के लिए रिज़ॉल्व किया गया name, region, country, और lat/lon — सिर्फ़ रॉ इनपुट नहीं। |
forecast.hourly[] | array | सिर्फ़ detail=1। अगले 24 घंटे 3-घंटे के स्टेप्स में: hour_label, temp_c/temp_f, weather_code, chance_of_rain_pct। |
forecast.daily[] | array | सिर्फ़ detail=1। 3-दिन का outlook: date, day_label, weather_code, condition, chance_of_rain_pct, max/min temp_c/temp_f। |
8-digit serial नंबर से case status के लिए USPTO के Trademark Status & Document Retrieval (TSDR) सिस्टम का लाइव प्रॉक्सी — एक डायरेक्ट प्रति-रिक्वेस्ट कॉल, कोई कैश्ड या resold कॉपी नहीं। Case-status डेटा एक U.S. सरकारी work है और USPTO की अपनी terms of use के अनुसार पब्लिक डोमेन है, इसलिए हर रिस्पॉन्स में इसे चुपचाप कैश या resell करने के बजाय एक source/attribution फ़ील्ड होती है। Trademark लोगो/इमेज डेटा जानबूझकर scope से बाहर है — USPTO की terms इमेज लाइसेंसिंग को इस एंडपॉइंट के रिटर्न किए गए case-status टेक्स्ट डेटा से अलग रखती हैं। Registration-number लुकअप अभी सपोर्टेड नहीं है; आज सिर्फ़ serial-number path ही USPTO द्वारा डॉक्यूमेंटेड है। इसे Trademark Lookup टूल पर आज़माएं।
| Parameter | In | Description |
|---|---|---|
serial | path | ज़रूरी। बिल्कुल 8 अंक, जैसे 98267877। |
| Field | Type | Description |
|---|---|---|
source | string | हमेशा "USPTO TSDR"। |
attribution | string | USPTO की terms of use के अनुसार ज़रूरी attribution लाइन। |
data | object | USPTO द्वारा रिटर्न किया गया रॉ case-status payload, reshape किए बिना पास-थ्रू किया गया — 2026-08-12 को लाइव कन्फ़र्म किया गया। data.trademarks[0] के अंदर: status (filing/registration dates, markElement, descOfMark, tm5StatusDesc), parties.ownerGroups (role के हिसाब से owner name/address), gsList[] (goods/services विवरण और classes), और prosecutionHistory[] (पूरी case टाइमलाइन)। फ़ील्ड की मौजूदगी application स्टेटस के हिसाब से अलग-अलग होती है — जैसे किसी pending एप्लिकेशन में अभी usRegistrationNumber नहीं होता। |
7-8 अंकों के utility patent नंबर से grant status के लिए USPTO के Patent File Wrapper API (Open Data Portal) का लाइव प्रॉक्सी — एक डायरेक्ट प्रति-रिक्वेस्ट कॉल, कोई कैश्ड या resold कॉपी नहीं। मूल रूप से टारगेट किया गया सोर्स (PatentsView का Search API) 2026-03-20 को बंद होना कन्फ़र्म हुआ; इसकी जगह यह इसके लाइव उत्तराधिकारी को प्रॉक्सी करता है। Patent File Wrapper डेटा एक U.S. सरकारी work है और USPTO की अपनी terms of use के अनुसार पब्लिक डोमेन है, इसलिए हर रिस्पॉन्स में एक source/attribution फ़ील्ड होती है। Scope application/prosecution-केंद्रित है — Lens.org, Espacenet, या Google Patents जैसा कोई citation graph, patent family, legal-status फ़ील्ड, या इमेज नहीं। कवरेज 2001 में फ़ाइल की गई applications से शुरू होती है। Design, plant, और reissue patents अभी सपोर्टेड नहीं हैं; सिर्फ़ granted patent नंबर से utility patents। इसे Patent Lookup टूल पर आज़माएं।
| Parameter | In | Description |
|---|---|---|
number | path | ज़रूरी। 7-8 अंक, जैसे 12393227। सिर्फ़ granted utility patent नंबर, कोई application नंबर नहीं। |
| Field | Type | Description |
|---|---|---|
source | string | हमेशा "USPTO Patent File Wrapper"। |
attribution | string | USPTO की terms of use के अनुसार ज़रूरी attribution लाइन। |
data | object | USPTO द्वारा रिटर्न किया गया रॉ prosecution-record payload, reshape किए बिना पास-थ्रू किया गया — असली patents (12393227, 9935534) के खिलाफ़ 2026-08-12 को लाइव कन्फ़र्म किया गया। मुख्य फ़ील्ड्स: applicationMetaData (inventionTitle, filingDate, applicationStatusDescriptionText, applicationStatusDate, patentNumber, inventorBag[]), recordAttorney.attorneyBag[], applicationNumberText, और eventDataBag[] (पूरी prosecution टाइमलाइन)। अगर नंबर मौजूद नहीं है, कोई design/plant/reissue patent है, या 2001 कवरेज से पहले का है तो 404 रिटर्न करता है। |
पेजिनेटेड VPN, Tor, और थ्रेट इंटेलिजेंस फ़ीड। प्रति पेज 200 एंट्रीज़। हर एंट्री में IP/CIDR, provider attribution, ISP, देश, और क्लासिफ़िकेशन टाइप शामिल है।
| Parameter | In | Description |
|---|---|---|
page | query | 0-indexed पेज नंबर। डिफ़ॉल्ट: 0। |
type | query | टाइप से फ़िल्टर करें: VPN, Tor Exit Node, Tor Node, High-Risk Threat Intel। |
q | query | IP या CIDR सबस्ट्रिंग से फ़िल्टर करें। |
सिर्फ़ मेटाडेटा — कुल एंट्री काउंट, प्रति-सोर्स काउंट, और आख़िरी सिंक टाइम। कोई IP डेटा रिटर्न नहीं करता।
पेजिनेटेड abusive नेटवर्क रेंज। cross-feed corroboration से 1-10 स्कोर किया गया। रिस्क टियर: critical (8-10), high (5-7), medium (3-4)।
| Parameter | In | Description |
|---|---|---|
page | query | 0-indexed पेज नंबर। डिफ़ॉल्ट: 0। |
tier | query | रिस्क टियर से फ़िल्टर करें: critical, high, medium। |
q | query | नेटवर्क रेंज सबस्ट्रिंग से फ़िल्टर करें। |
source | query | वैकल्पिक। source_feed में लौटाए गए स्रोत फ़ीड नाम के ठीक वैसे ही मान से फ़िल्टर करें, जैसे 'Spamhaus DROP' या 'IPsum Threat Intel'। |
सिर्फ़ मेटाडेटा — कुल नेटवर्क काउंट, प्रति-सोर्स काउंट, रिस्क टियर ब्रेकडाउन, और आख़िरी सिंक टाइम।
उन ओपन डेटासेट्स का डाउनलोड करने लायक CSV एक्सपोर्ट जिन पर यह API पहले से बना है — वही डेटा, कोई नया लाइसेंस नहीं। asn और ranges हमेशा उपलब्ध होते हैं; geo-city तब तक 503 रिटर्न करता है जब तक किसी दिए गए डिप्लॉयमेंट पर उस सोर्स का डेटासेट एक्टिव न हो। geo-city एक बार में एक जियो सोर्स की रॉ रो एक्सपोर्ट करता है, कोई merged व्यू नहीं — ?source=primary (डिफ़ॉल्ट) या ?source=secondary पास करें।
| Parameter | In | Description |
|---|---|---|
kind | path | इनमें से एक: asn, ranges, geo-city। |
source | query | सिर्फ़ geo-city। primary (डिफ़ॉल्ट) या secondary। |
तुरंत एक API की जारी करता है — कोई ईमेल नहीं, कोई साइनअप नहीं। हर की Free टियर पर शुरू होती है (1,000 रिक्वेस्ट/दिन; bulk लुकअप शामिल नहीं)। Pro और Enterprise की ज़्यादा डेली लिमिट और bulk लुकअप (प्रति-रिक्वेस्ट 100 IPs तक) अनलॉक करती हैं — देखें pricing। की को सुरक्षित रख लें — इसे बाद में दोबारा नहीं लाया जा सकता।
चेक करें कि किसी की ने कितनी रिक्वेस्ट की हैं। इसे काउंट करवाने के लिए, की को किसी भी /v1/* रिक्वेस्ट पर X-API-Key हेडर या ?api_key= के ज़रिए पास करें।
| Parameter | In | Description |
|---|---|---|
key | query | ज़रूरी। POST /v1/keys से रिटर्न की गई एक की। |
किसी IP के स्वामी नेटवर्क का दुरुपयोग-रिपोर्ट संपर्क, RDAP से: RIR, नेटवर्क हैंडल, उसे कवर करने वाला CIDR और abuse मेलबॉक्स। रिपोर्ट कहाँ भेजनी है, यह जानने के लिए इस्तेमाल करें।
| Parameter | In | Description |
|---|---|---|
ip | path | IPv4 या IPv6 पता। |
रजिस्ट्री तक न पहुँचने पर available false होता है (कारण failure में)।
किसी ASN द्वारा वास्तव में घोषित IP रेंज, पेज के रूप में, हर रेंज के साथ उसका देश और होस्टिंग / मोबाइल / आवासीय / बॉट / ब्लैकलिस्ट फ़्लैग।
| Parameter | In | Description |
|---|---|---|
asn | path | AS उपसर्ग के बिना ASN संख्या, जैसे 15169। |
limit | query | प्रति पेज रेंज। डिफ़ॉल्ट 50, अधिकतम 200। |
offset | query | छोड़ी जाने वाली रेंज। डिफ़ॉल्ट 0। |
किसी ASN का रजिस्ट्री (RDAP) रिकॉर्ड: हैंडल, नाम, देश, आवंटन प्रकार, पंजीकरण तिथियाँ, RIR और उसके संपर्क।
| Parameter | In | Description |
|---|---|---|
asn | path | AS उपसर्ग के बिना ASN संख्या, जैसे 15169। |
रजिस्ट्री पहुँच से बाहर होने पर available false होता है और reason साथ आता है।
कोई ASN वास्तव में कहाँ स्थित है: उसकी सबसे बड़ी रेंज के नमूने से शहर-स्तर पर निर्धारित बिंदु, साथ में सबसे आम शहर। ASN पेज के वितरण मानचित्र को यही डेटा चलाता है।
| Parameter | In | Description |
|---|---|---|
asn | path | AS उपसर्ग के बिना ASN संख्या, जैसे 15169। |
यह एक नमूना है, पूरी रेंज सूची नहीं। सभी रेंज के लिए /v1/asn/:asn/ranges इस्तेमाल करें।
किसी ASN में होस्ट किए गए डोमेन, उसके पतों के एक नमूने पर रिवर्स-DNS (PTR) से खोजे गए। हर प्रविष्टि में रूट डोमेन, PTR होस्टनाम और नमूने वाला IP होता है।
| Parameter | In | Description |
|---|---|---|
asn | path | AS उपसर्ग के बिना ASN संख्या, जैसे 15169। |
नमूने पर आधारित, इसलिए यह संकेत भर है कि ASN क्या होस्ट करता है, पूरी सूची नहीं। एक IP के लिए /v1/ip/:ip/hosted-domains इस्तेमाल करें।
किसी ASN के BGP संबंध: पीयर, अपस्ट्रीम प्रदाता और डाउनस्ट्रीम ग्राहक, गिनती के साथ।
| Parameter | In | Description |
|---|---|---|
asn | path | AS उपसर्ग के बिना ASN संख्या, जैसे 15169। |
BGP डेटा स्रोत तक न पहुँचने पर available false होता है। available: true के साथ खाली सरणी का मतलब है कि उस ASN के लिए कुछ रिपोर्ट नहीं हुआ।
IPv4 स्पेस की निर्देशिका: हर /8 ब्लॉक के लिए एक प्रविष्टि, जिसमें उसकी रेंज, देशों और ASN की संख्या तथा शीर्ष देश होता है। यहाँ से शुरू करें, फिर /v1/ip-ranges/:a और /v1/ip-ranges/:a/:b से आगे गहराई में जाएँ।
किसी एक /8 (उदाहरण के लिए 8.0.0.0/8) के भीतर के /16 ब्लॉक, प्रति ब्लॉक रेंज, देश और ASN की उसी गिनती के साथ।
| Parameter | In | Description |
|---|---|---|
a | path | पहला ऑक्टेट, 0-255। |
किसी एक /16 (उदाहरण के लिए 8.8.0.0/16) के भीतर आवंटित रेंज, हर रेंज के साथ वह ASN जिससे वह संबंधित है, और प्रति ब्लॉक गिनती।
| Parameter | In | Description |
|---|---|---|
a | path | पहला ऑक्टेट, 0-255। |
b | path | दूसरा ऑक्टेट, 0-255। |
किसी निर्देशांक के लिए Nearby पेलोड का एक हिस्सा, ताकि क्लाइंट हर हिस्सा आते ही दिखा सके: रिवर्स जियोकोड, रुचि के स्थान या स्थानीय अपराध आँकड़े।
| Parameter | In | Description |
|---|---|---|
lat | query | अक्षांश, आवश्यक। |
lon | query | देशांतर, आवश्यक। |
part | query | कौन सा हिस्सा: geocode, poi या crime। अज्ञात मान पर 400 लौटता है। |
country | query | केवल part=crime के लिए: ISO देश कोड। अपराध डेटा US और GB के लिए उपलब्ध है। |
region | query | केवल part=crime के लिए: राज्य या क्षेत्र का नाम, जैसे Utah। |
city | query | केवल part=crime के लिए: शहर का नाम, जैसे Orem। |
lang | query | वैकल्पिक। स्थान के लेबल स्थानीयकृत करता है (ऊपर की स्थानीयकरण तालिका वाले ही कोड)। |
दो बिंदुओं के बीच ड्राइविंग समय और दूरी। एक तेज़ रास्ता: यह उस रिवर्स जियोकोडिंग और रुचि-स्थान खोज को छोड़ देता है जो /v1/places/:ip करता है।
| Parameter | In | Description |
|---|---|---|
from_lat | query | प्रारंभ बिंदु का अक्षांश, आवश्यक। |
from_lon | query | प्रारंभ बिंदु का देशांतर, आवश्यक। |
dest_lat | query | गंतव्य का अक्षांश। dest_lon के साथ इस्तेमाल करें, या इसके बजाय dest_address दें। |
dest_lon | query | गंतव्य का देशांतर। |
dest_address | query | मुक्त पाठ के रूप में गंतव्य, जिसे आपके लिए जियोकोड किया जाता है। dest_lat/dest_lon न होने पर इस्तेमाल होता है। |
कोई गंतव्य हल न होने पर प्रतिक्रिया में to: null, commute: null और एक reason स्ट्रिंग होती है।
IP की जगह टाइप किए गए पते पर आधारित /v1/places/:ip पेलोड: जियोकोड, स्थान की जानकारी और वैकल्पिक आवागमन-समय अनुमान।
| Parameter | In | Description |
|---|---|---|
q | query | मुक्त पाठ में पता, आवश्यक। |
dest_lat | query | वैकल्पिक गंतव्य अक्षांश, आवागमन-समय अनुमान शामिल करने के लिए (dest_lon के साथ)। |
dest_lon | query | वैकल्पिक गंतव्य देशांतर। |
dest_address | query | dest_lat/dest_lon के बजाय मुक्त पाठ में वैकल्पिक गंतव्य। |
part | query | part=geo केवल लेबल और निर्देशांक लौटाता है, ताकि पहली बार तेज़ी से दिखे। |
lang | query | वैकल्पिक। स्थान के लेबल स्थानीयकृत करता है (ऊपर की स्थानीयकरण तालिका वाले ही कोड)। |
पते को जियोकोड न किया जा सकने पर found false होता है।
पता ऑटोकम्प्लीट: अधूरे पते से मेल खाने वाले कुछ स्थान, वैकल्पिक रूप से किसी बिंदु को प्राथमिकता देते हुए।
| Parameter | In | Description |
|---|---|---|
q | query | पते का अधूरा पाठ, आवश्यक। |
near_lat | query | वैकल्पिक अक्षांश, जिसके पास के परिणामों को प्राथमिकता मिले। |
near_lon | query | वैकल्पिक देशांतर, जिसके पास के परिणामों को प्राथमिकता मिले। |
किसी स्थान के नाम, पोस्टल कोड, निर्देशांक या IP के लिए पूरा मौसम दस्तावेज़। include से आवश्यक ब्लॉक चुनें: current, hourly, daily, astro (सूर्य और चंद्रमा), solar, indicators, alerts, marine, air_quality, nowcast, या all। अमेरिका के स्थानों का डेटा नेशनल वेदर सर्विस (National Weather Service) से और बाकी दुनिया का MET Norway से आता है; कौन-सा स्रोत है, यह meta.source बताता है। include न देने पर ऊपर वर्णित सरल रूप { query, weather } मिलता है।
| Parameter | In | Description |
|---|---|---|
q / lat+lon / ip | query | कहाँ: q (शहर, पोस्टल कोड या "lat,lon"), या lat और lon, या ip। तीनों में से एक आवश्यक है। |
country | query | वैकल्पिक। अस्पष्ट q को स्पष्ट करने के लिए ISO कोड या देश का नाम, जैसे पोस्टल कोड 75001 के लिए country=FR। |
include | query | इस रूप के लिए आवश्यक। अल्पविराम से अलग: current, hourly, daily, astro, solar, indicators, alerts, marine, air_quality, nowcast, या all। |
units | query | metric (डिफ़ॉल्ट) या imperial। फ़ील्ड के नाम इकाई के अनुसार बदलते हैं: temp_c बनता है temp_f, wind_kmph बनता है wind_mph, precip_mm बनता है precip_in। |
wind_unit | query | kmh, ms, mph या kn। केवल हवा की इकाई बदलता है। |
hours | query | लौटाई जाने वाली प्रति-घंटा प्रविष्टियाँ, 1-240। डिफ़ॉल्ट 48। निकट की प्रविष्टियाँ प्रति घंटा और आगे की हर 6 घंटे की होती हैं; step_hours यह बताता है। |
days | query | लौटाई जाने वाली दैनिक प्रविष्टियाँ, 1-9। डिफ़ॉल्ट 7। अमेरिका का डेटा 7 दिन को कवर करता है। |
meta.coverage बताता है कि उस स्थान के लिए कौन-से फ़ील्ड उपलब्ध हैं: बारिश की संभावना, तेज़ झोंके और आँधी-तूफ़ान की संभावना केवल अमेरिका और नॉर्डिक देशों में हैं, और अन्यत्र null रहते हैं (कभी शून्य नहीं)। alerts अमेरिका और नॉर्वे की आधिकारिक चेतावनियाँ हैं; marine, air_quality और nowcast केवल नॉर्वे और निकट के जल क्षेत्र को कवर करते हैं और अन्यत्र available: false देते हैं। meta.derived में जो कुछ है वह ipto.to का अनुमान है, और indicators व्युत्पन्न संकेत हैं, आधिकारिक चेतावनियाँ नहीं। डेटा दिखाते समय meta.attribution बनाए रखें (MET Norway का डेटा CC BY 4.0 है)।
पहले देखे जा चुके स्थानों के लिए ipto.to का अपना दैनिक रिकॉर्ड: उस दिन के पूर्वानुमान स्नैपशॉट में दिखा सबसे ऊँचा अधिकतम तापमान, सबसे नीचा न्यूनतम तापमान और सबसे अधिक वर्षा। डेटा केवल उन्हीं स्थानों का है जिन्हें पहले माँगा जा चुका है, और यह समय के साथ जमा होता है।
| Parameter | In | Description |
|---|---|---|
q / lat+lon / ip | query | कहाँ: q (शहर, पोस्टल कोड या "lat,lon"), या lat और lon, या ip। तीनों में से एक आवश्यक है। |
days | query | लौटाए जाने वाले हाल के दिन, 1-400। डिफ़ॉल्ट 30। |
ये पूर्वानुमान स्नैपशॉट हैं, स्टेशन के अवलोकन या पुनर्विश्लेषण नहीं, इसलिए इन्हें देखे गए इतिहास के रूप में उपयोग न करें। 404 का अर्थ है कि उस स्थान के लिए अभी कोई स्नैपशॉट दर्ज नहीं हुआ है।
उपलब्ध रडार एनिमेशन फ़्रेम, सबसे पुराना पहले, हर एक के साथ Unix टाइमस्टैम्प और रडार टाइल URL में इस्तेमाल होने वाला फ़्रेम id।
मानक वेब-मानचित्र z/x/y स्थिति पर एक फ़्रेम की रडार मानचित्र टाइल (PNG)। समान-origin से परोसी जाती है ताकि मानचित्र बिना किसी तृतीय-पक्ष अनुरोध के उसे लोड कर सके।
| Parameter | In | Description |
|---|---|---|
frame | path | /v1/weather/radar/frames से फ़्रेम id (छोटे अक्षरों में हेक्स)। |
z | path | ज़ूम स्तर। |
x | path | टाइल का स्तंभ। |
y | path | टाइल की पंक्ति। |
मानक वेब-मानचित्र z/x/y स्थिति के लिए उपग्रह चित्र मानचित्र टाइल, समान-origin से परोसी जाती है।
| Parameter | In | Description |
|---|---|---|
z | path | ज़ूम स्तर। |
x | path | टाइल का स्तंभ। |
y | path | टाइल की पंक्ति। |
/v1/email/:email के लिए मशीन-पठनीय OpenAPI 3.1 अनुबंध, इस तरह लिखा गया कि LLM और MCP एजेंट इस दस्तावेज़ को पढ़े बिना ईमेल एंडपॉइंट को कॉल कर सकें।
IP लुकअप फ़ील्ड रेफरेंस
| Field | Type | Description |
|---|---|---|
ip | string | क्वेरी किया गया IP एड्रेस। |
version | string | "v4" या "v6"। |
bogon | boolean | true अगर यह एक प्राइवेट, रिज़र्व्ड, या non-routable एड्रेस है। |
bogon_type | string|null | bogon होने पर reason कोड: "loopback", "private", "link-local", "multicast", "reserved", "documentation", "unspecified"। |
asn | integer|null | Autonomous System Number जो इस IP को अनाउंस करता है। |
asn_name | string|null | ASN का छोटा नाम (जैसे "GOOGLE")। |
asn_org | string|null | ASN के नाम रजिस्टर्ड ऑर्गेनाइज़ेशन (जैसे "Google LLC")। |
asn_type | string|null | ASN कैटेगरी: "hosting", "isp", "business", "education", "government", "mobile", "residential"। |
continent | string|null | महाद्वीप का पूरा नाम (जैसे "North America")। |
continent_code | string|null | दो-लेटर वाला महाद्वीप कोड: AF AS EU NA SA OC AN। |
country_code | string|null | उस देश का ISO 3166-1 alpha-2 कंट्री कोड (जैसे "US") जहाँ IP स्थित है, शहर और अक्षांश/देशांतर वाले जियोलोकेशन डेटा से ही। जियोलोकेशन मिलान न होने पर ASN का पंजीकरण देश (asn_country_code) उपयोग होता है; देश का नाम, ध्वज, मुद्रा आदि भी इसी से निकाले जाते हैं। |
country_name | string|null | देश का पूरा अंग्रेज़ी नाम (जैसे "United States")। |
country_flag | string|null | देश का इमोजी फ़्लैग (जैसे "🇺🇸")। |
is_eu | boolean | true अगर देश एक EU सदस्य राष्ट्र है (27 सदस्य)। |
city | string|null | शहर का नाम। self-lookup पर, और उन explicit लुकअप पर भरा जाता है जहां दोनों merged जियो सोर्स (IP2Location या MaxMind) में से किसी एक में मैच मिलता है — geo_precision चेक करें। |
state | string|null | प्रशासनिक region/subdivision। city जैसी ही उपलब्धता। |
postal_code | string|null | Postal/ZIP कोड। self-lookup पर, और उन explicit लुकअप पर भरा जाता है जहां IP2Location (प्रिफ़र्ड) या MaxMind में मैच मिलता है — city जैसी ही उपलब्धता। |
latitude | number|null | दशमलव latitude। city जैसी ही उपलब्धता। |
longitude | number|null | दशमलव longitude। city जैसी ही उपलब्धता। |
timezone | string|null | Timezone — city जैसी ही उपलब्धता। self-lookup पर एक IANA आइडेंटिफ़ायर (जैसे "America/New_York")। explicit लुकअप पर फ़ॉर्मैट इस पर निर्भर करता है कि कौन-सा सोर्स मैच हुआ: IP2Location से "-08:00" जैसी UTC-offset स्ट्रिंग, या MaxMind से एक IANA नाम। |
geo_precision | string | लोकेशन डेटा कितना सटीक है: "city", "country" (city-level लुकअप में कोई मैच नहीं मिला), या "none"। |
geo_country_code | string|null | वह देश जहाँ IP स्थित है, जियोलोकेशन डेटा के अनुसार (ISO 3166-1 alpha-2)। सेट होने पर यह country_code के बराबर होता है। जियोलोकेशन मिलान न होने पर null। |
asn_country_code | string|null | ASN धारक का पंजीकरण देश (ISO 3166-1 alpha-2)। जिन CDN, VPN, होस्टिंग या एनीकास्ट नेटवर्क की घोषणा धारक के पंजीकृत देश से अलग देश से होती है, उनके लिए यह country_code से अलग हो सकता है। IP की ASN प्रविष्टि न होने पर null। |
currency_code | string|null | देश के लिए ISO 4217 करेंसी कोड (जैसे "USD")। |
exchange_rate_usd | number|null | 1 USD के बदले लोकल करेंसी की यूनिट्स, 154 करेंसी कवर करने वाली एक डेली-सिंक्ड reference-rate फ़ीड से। उस सेट से बाहर की करेंसी के लिए null। |
calling_code | string|null | + प्रीफ़िक्स समेत कंट्री कॉलिंग कोड (जैसे "+1")। |
languages | string[] | देश की आधिकारिक/मान्यता प्राप्त भाषाएं, अंग्रेज़ी में। |
tld | string[] | कंट्री-कोड टॉप-लेवल डोमेन, जैसे [".us"]। |
capital | string|null | राजधानी शहर का नाम। |
borders | string[] | सीमावर्ती देशों के ISO alpha-2 कोड। |
is_datacenter | boolean | true अगर IP किसी hosting या cloud प्रोवाइडर का है। |
is_mobile | boolean | true अगर IP किसी mobile carrier के नाम रजिस्टर्ड है। |
is_residential | boolean | true अगर IP को residential broadband के तौर पर क्लासिफ़ाइड किया गया है। |
connection_type | string | "mobile", "datacenter", या "unknown" — is_mobile/is_datacenter जैसी ही क्लासिफ़िकेशन से निकाला गया। जानबूझकर residential-बनाम-corporate का फ़र्क़ करने की कोशिश नहीं करता: यह सिर्फ़ ASN org-name टेक्स्ट से भरोसेमंद तरीक़े से निकाला नहीं जा सकता, इसलिए जिस ASN को mobile या datacenter के तौर पर कॉन्फ़िडेंटली क्लासिफ़ाई नहीं किया जा सका वह अंदाज़ा लगाने के बजाय "unknown" ही रहता है। |
is_bot | boolean | true अगर IP किसी जाने-पहचाने बॉट इन्फ़्रास्ट्रक्चर से जुड़ा है। |
is_proxy | boolean | true अगर IP एक जाना-पहचाना proxy exit पॉइंट है। |
is_vpn | boolean | true अगर IP थ्रेट फ़ीड की किसी जानी-पहचानी VPN सर्वर रेंज में आता है। |
is_tor | boolean | true अगर IP एक कन्फ़र्म्ड Tor exit नोड है। |
is_abuser | boolean | true अगर IP कई abuse intel फ़ीड्स द्वारा फ़्लैग की गई किसी नेटवर्क रेंज में आता है। |
abuse_score | integer|null | जब is_abuser true हो तो cross-feed corroboration से मिला 1-10 severity स्कोर। बाकी स्थितियों में null। |
risk_tier | string|null | "critical" (8-10), "high" (5-7), या "medium" (3-4) — abuse_score से निकाला गया। अगर फ़्लैग नहीं किया गया तो null। |
threat_type | string|null | जब is_tor/is_vpn/is_abuser ओवरलैप करें तो सबसे actionable मैच हुई कैटेगरी: "tor_exit" > "abuser" > "vpn"। अगर कोई भी मैच न हो तो null। |
flags | object | is_* फ़ील्ड्स को मिरर करने वाला backward-compatible ऑब्जेक्ट। Keys: hosting, mobile, residential, bot, blacklisted, vpn, tor, abuser। |
meta.data_version | string | लुकअप के लिए इस्तेमाल की गई डेटासेट डेट (YYYY-MM-DD)। self-lookup के लिए "cf-edge"। प्राइवेट रेंज के लिए "bogon"। |
meta.cached | boolean | true अगर रिस्पॉन्स कैश लेयर से सर्व किया गया। |
meta.lang | string | इस रिस्पॉन्स में वास्तव में इस्तेमाल की गई भाषा — अगर ?lang= दिया गया हो तो उससे मेल खाती है, वरना Accept-Language से रिज़ॉल्व की गई वैल्यू, या "en"। |
meta.lang_source | "param"|"header"|"default" | lang कैसे तय हुआ: "param" (?lang= पास किया गया था), "header" (Accept-Language से रिज़ॉल्व किया गया), या "default" (दोनों में से कोई मौजूद नहीं था)। |
आउटपुट फ़ॉर्मैट
IP, ASN, और country लुकअप सभी ?format= सपोर्ट करते हैं।
| Format | Content-Type | Usage |
|---|---|---|
json | application/json | डिफ़ॉल्ट। पूरा स्ट्रक्चर्ड रिस्पॉन्स। |
csv | text/csv | फ़्लैट key,value पेयर। Nested ऑब्जेक्ट्स छोड़ दिए जाते हैं। |
text | text/plain | key: value लाइनें। प्रति लाइन एक फ़ील्ड। |
xml | application/xml | पूरा nested स्ट्रक्चर, arrays टैग को दोहराते हैं। |
yaml | application/x-yaml | पूरा nested स्ट्रक्चर। |
लोकलाइज़ेशन
country_name और continent को लोकलाइज़ करने के लिए /v1/ip, /v1/asn/:asn, या /v1/country/:code पर ?lang= पास करें। बाकी सब कुछ (ASN org नाम, शहरों के नाम, करेंसी कोड) अपने ओरिजिनल फ़ॉर्म में रहता है — वे आइडेंटिफ़ायर और proper nouns हैं, UI टेक्स्ट नहीं। अनसपोर्टेड कोड एरर देने के बजाय अंग्रेज़ी पर वापस चले जाते हैं।
| Code | Language |
|---|---|
en | English (default) |
pt | Português |
fr | Français |
de | Deutsch |
zh-TW | 繁體中文 |
ko | 한국어 |
zh-CN | 简体中文 |
ja-JP | 日本語 |
es-ES | Español |
ar-SA | العربية |
hi-IN | हिन्दी |
?lang= नहीं है? इसकी जगह Accept-Language हेडर भेजें — वही endpoints इसे भी पढ़ते हैं, तो सिर्फ़ curl -H "Accept-Language: es" https://ipto.to/v1/ip/8.8.8.8 से बिना किसी query string के रिस्पॉन्स लोकलाइज़ हो जाता है। अगर दोनों मौजूद हों, तो explicit ?lang= हमेशा प्राथमिकता लेता है। ध्यान दें: शेल का LANG/LC_ALL एनवायरनमेंट वेरिएबल (जैसे LANG=es_ES.UTF-8 curl ...) सिर्फ़ curl का अपना locale सेट करता है — curl इसे कभी पढ़ता नहीं और न ही हेडर में बदलता है, इसलिए रिस्पॉन्स की भाषा पर इसका कोई असर नहीं पड़ता। असल में सिर्फ़ Accept-Language या ?lang= ही काम करते हैं।
हर /v1/ip, /v1/asn/:asn, और /v1/country/:code रिस्पॉन्स में lang और lang_source शामिल होते हैं (/v1/ip पर meta के अंदर नेस्टेड; बाकी दोनों पर टॉप-लेवल फ़ील्ड के रूप में), ताकि आप हमेशा ठीक-ठीक देख सकें कि कौन-सी भाषा लागू हुई और वह "param", "header", या "default" में से किसके ज़रिए तय हुई — अपनी भेजी गई रिक्वेस्ट से अंदाज़ा लगाने की ज़रूरत के बिना।
जैसे ही आप कोई non-English lang सेट करते हैं, पूरा key+value लोकलाइज़ेशन डिफ़ॉल्ट बिहेवियर बन जाता है — नेस्टेड flags और meta keys सहित हर फ़ील्ड टारगेट भाषा में rename होकर वापस आती है, और तय एनम वैल्यूज़ (risk_tier, threat_type, connection_type, geo_precision, bogon_type, asn_type) का भी अनुवाद होता है। पुराना English-keys फ़ॉर्मेट चाहिए? /v1/ip में &localize=0 जोड़ें, वापस opt-out करने के लिए।
कोड उदाहरण
JavaScript
Python
PHP
Go
रेट लिमिट
लिमिट्स प्रति दिन (UTC) लागू होती हैं, free टियर पर IP एड्रेस से गिनी जाती हैं या Pro/Enterprise पर की से। अपनी लिमिट पार करने पर एक Retry-After हेडर के साथ HTTP 429 रिटर्न होता है। प्रोडक्शन वर्कलोड के लिए, देखें pricing।
यह हर /v1/* एंडपॉइंट, /mcp सर्वर, और curl ipto.to / curl ipto.to/:ip शॉर्टकट्स पर लागू होता है। GET /ip एकमात्र अपवाद है — बिना किसी लुकअप कॉस्ट के एक सीधा header echo, इसलिए यह किसी भी बजट से कुछ नहीं लेता।
| Tier | Requests / day | Auth |
|---|---|---|
| Free | 1,000 | कुछ नहीं |
| Pro | 100,000 | API की (header) |
| Enterprise | Unlimited | API की + डेडिकेटेड एंडपॉइंट्स |
एरर कोड
| Status | Meaning |
|---|---|
200 | OK। रिस्पॉन्स में डेटा शामिल है। |
202 | फ़ीड डेटा सिंक हो रहा है। 45 सेकंड में फिर से कोशिश करें। |
400 | Bad request। अमान्य IP, ASN, या कंट्री कोड। |
404 | ASN या देश डेटासेट में नहीं मिला। |
503 | डेटासेट अभी उपलब्ध नहीं है। शुरुआती ingest चल रहा हो सकता है। |