[{"data":1,"prerenderedAt":378},["ShallowReactive",2],{"doc:\u002Fapi-reference\u002Fendpoints\u002Fip":3},{"page":4,"toc":374},{"path":5,"title":6,"description":7,"blocks":8},"\u002Fapi-reference\u002Fendpoints\u002Fip","Single IP lookup","Resolve a single IPv4 or IPv6 address against the active Radix\u002FLPM snapshot with live BGP\u002FRIPEstat enrichment-on-miss.",[9,15,18,27,37,42,90,93,364,367,369],{"type":10,"method":11,"path":12,"auth":13,"plan":14},"endpoint","GET","\u002Fv1\u002Fip\u002F{ip}","key","scope: lookup · 1 credit",{"type":16,"text":17},"p","Resolves a single IPv4 or IPv6 address (`GET \u002Fv1\u002Fip\u002F:ip`). The address is parsed and normalized via `tryParseIp(ip)` before querying the in-memory `SnapshotLoaderService` Radix\u002FLPM tree. Both full and RFC 5952 compressed IPv6 notations (`2606:4700:4700::1111`) are supported.",{"type":19,"title":20,"fields":21},"fields","Path parameters",[22],{"name":23,"type":24,"text":25,"required":26},"ip","string","The IPv4 (`198.51.100.7`) or IPv6 (`2606:4700:4700::1111`) address to inspect. Returns `400 Bad Request` if malformed.",true,{"type":19,"title":28,"fields":29},"Request headers & metering",[30,33],{"name":31,"type":24,"text":32,"required":26},"Authorization","`Bearer \u003Capi_key>` or `x-api-key: \u003Capi_key>`. Must include the `lookup` scope.",{"name":34,"type":35,"text":36},"Credit debit","1 unit","Debits `1` lookup unit (`100 micro-USD` when using prepaid wallet reservation).",{"type":38,"level":39,"text":40,"id":41},"heading",2,"Code examples","code-examples",{"type":43,"samples":44},"code",[45,50,55,60,65,70,75,80,85],{"label":46,"lang":47,"code":48,"html":49},"curl","bash","curl -sS \"https:\u002F\u002Fapi.ipscope.io\u002Fv1\u002Fip\u002F198.51.100.7\" \\\n  -H \"Authorization: Bearer $IPSCOPE_KEY\"","\u003Cpre class=\"shiki ipscope\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">curl\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> -sS\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"https:\u002F\u002Fapi.ipscope.io\u002Fv1\u002Fip\u002F198.51.100.7\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-string)\">  -H\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"Authorization: Bearer $IPSCOPE_KEY\"\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"label":51,"lang":52,"code":53,"html":54},"Python","python","import asyncio, os\nfrom ipscope import AsyncIpScopeClient\n\nasync def main() -> None:\n    async with AsyncIpScopeClient(api_key=os.environ[\"IPSCOPE_KEY\"]) as client:\n        record = await client.lookup_ip(\"198.51.100.7\")\n        print(record[\"ip\"], record[\"geo\"][\"country_code\"], record[\"security\"][\"is_vpn\"])\n\nasyncio.run(main())","\u003Cpre class=\"shiki ipscope\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">import\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> asyncio\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> os\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">from\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> ipscope \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">import\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> AsyncIpScopeClient\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">async\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> def\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\"> main\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">() \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">->\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> None\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    async\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> with\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\"> AsyncIpScopeClient\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">(api_key\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">=\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">os.environ[\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">\"IPSCOPE_KEY\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">])\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> as\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> client\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">        record \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">=\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> await\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> client\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">lookup_ip\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">\"198.51.100.7\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">        print\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">(record[\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">\"ip\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">], record[\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">\"geo\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">][\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">\"country_code\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">], record[\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">\"security\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">][\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">\"is_vpn\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">])\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">asyncio\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">run\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">main\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">())\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"label":56,"lang":57,"code":58,"html":59},"Node.js","ts","import { IpScopeClient } from '@ipscope\u002Fsdk-node';\n\nconst client = new IpScopeClient({ apiKey: process.env.IPSCOPE_KEY });\nconst record = await client.lookupIp('198.51.100.7');\nconsole.log(record.ip, record.geo?.country_code, record.security?.is_vpn);","\u003Cpre class=\"shiki ipscope\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">import\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> { IpScopeClient } \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">from\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> '@ipscope\u002Fsdk-node'\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">const\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> client\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> =\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> new\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\"> IpScopeClient\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">({ apiKey\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> process\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\">env\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\">IPSCOPE_KEY\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> });\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">const\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> record\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> =\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> await\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> client\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">.lookupIp\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">'198.51.100.7'\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">);\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-constant)\">console\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">.log\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\">record\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">.ip\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> record\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\">geo\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">?.country_code\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> record\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\">security\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">?.is_vpn);\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"label":61,"lang":62,"code":63,"html":64},"Go","go","client := ipscope.NewClient(ipscope.Config{APIKey: os.Getenv(\"IPSCOPE_KEY\")})\ndefer client.Close()\n\nrecord, err := client.LookupIP(ctx, \"198.51.100.7\")\nif err != nil {\n\treturn err\n}\nfmt.Println(record.IP, record.Security.IsVPN)","\u003Cpre class=\"shiki ipscope\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">client \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">:=\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> ipscope.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">NewClient\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">ipscope\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">Config\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">{APIKey: os.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">Getenv\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">\"IPSCOPE_KEY\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">)})\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">defer\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> client.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">Close\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">()\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">record, err \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">:=\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> client.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">LookupIP\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(ctx, \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">\"198.51.100.7\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">if\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> err \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">!=\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> nil\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">\treturn\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> err\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">}\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">fmt.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">Println\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(record.IP, record.Security.IsVPN)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"label":66,"lang":67,"code":68,"html":69},"Rust","rust","use ipscope::{AsyncIpScopeClient, ClientConfig};\n\nlet client = AsyncIpScopeClient::new(ClientConfig::new(std::env::var(\"IPSCOPE_KEY\")?))?;\nlet record = client.lookup_ip(\"198.51.100.7\").await?;\nprintln!(\"{} VPN={}\", record.ip, record.security.is_vpn);","\u003Cpre class=\"shiki ipscope\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">use\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> ipscope\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">::\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">{\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">AsyncIpScopeClient\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">, \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">ClientConfig\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">};\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">let\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> client \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">=\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\"> AsyncIpScopeClient\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">::\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">new\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(ClientConfig\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">::\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">new\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(std\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">::\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">env\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">::\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">var\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">\"IPSCOPE_KEY\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">)\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">?\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">))\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">?\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">let\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> record \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">=\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> client\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">lookup_ip\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">\"198.51.100.7\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">)\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">.await?\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">println!\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">\"{} VPN={}\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">, record\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">ip, record\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">security\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">is_vpn);\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"label":71,"lang":72,"code":73,"html":74},"Java","java","import io.ipscope.sdk.IpScopeClient;\nimport io.ipscope.sdk.IpScopeConfig;\n\nIpScopeConfig config = IpScopeConfig.builder().apiKey(System.getenv(\"IPSCOPE_KEY\")).build();\ntry (IpScopeClient client = new IpScopeClient(config)) {\n    var record = client.lookupIp(\"198.51.100.7\");\n    System.out.println(record.ip() + \" \" + record.geo().countryCode());\n}","\u003Cpre class=\"shiki ipscope\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">import\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> io\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">ipscope\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">sdk\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">IpScopeClient\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">import\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> io\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">ipscope\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">sdk\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">IpScopeConfig\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">IpScopeConfig\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> config \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">=\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> IpScopeConfig\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">builder\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">()\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">apiKey\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\">System\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">getenv\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">\"IPSCOPE_KEY\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">))\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">build\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">();\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">try\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> (\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">IpScopeClient\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> client \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">=\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> new\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\"> IpScopeClient(config)\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">) {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    var\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> record \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">=\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> client\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">lookupIp\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">\"198.51.100.7\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">);\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-constant)\">    System\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\">out\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">println\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\">record\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">ip\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">() \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">+\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \" \"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> +\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> record\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">geo\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">()\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">countryCode\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">());\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"label":76,"lang":77,"code":78,"html":79},".NET","csharp","using IpScope.Sdk;\n\nusing var client = new IpScopeClient(new IpScopeClientOptions {\n    ApiKey = Environment.GetEnvironmentVariable(\"IPSCOPE_KEY\")\n});\nvar record = await client.LookupIpAsync(\"198.51.100.7\");\nConsole.WriteLine($\"{record.Ip} {record.Geo?.CountryCode} VPN={record.Security?.IsVpn}\");","\u003Cpre class=\"shiki ipscope\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">using\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\"> IpScope\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">Sdk\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">using\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> var\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> client \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">=\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> new\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\"> IpScopeClient\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">new\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\"> IpScopeClientOptions\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">    ApiKey \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">=\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> Environment\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">GetEnvironmentVariable\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">\"IPSCOPE_KEY\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">});\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">var\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> record \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">=\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> await\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> client\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">LookupIpAsync\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">\"198.51.100.7\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">);\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-constant)\">Console\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">WriteLine\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">$\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">{\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\">record\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\">Ip\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">}\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> {\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\">record\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\">Geo\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">?\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\">CountryCode\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">}\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> VPN=\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">{\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\">record\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\">Security\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">?\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\">IsVpn\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">}\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">);\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"label":81,"lang":82,"code":83,"html":84},"Ruby","ruby","require \"ipscope\"\n\nclient = IpScope::Client.new(api_key: ENV.fetch(\"IPSCOPE_KEY\"))\nrecord = client.lookup_ip(\"198.51.100.7\")\nputs \"#{record.ip} #{record.geo.country_code} VPN=#{record.security.is_vpn}\"","\u003Cpre class=\"shiki ipscope\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">require\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"ipscope\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">client \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">=\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> IpScope\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">::\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\">Client\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">new\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\">api_key:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> ENV\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">fetch\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">\"IPSCOPE_KEY\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">))\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">record \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">=\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> client\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">lookup_ip\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">\"198.51.100.7\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">puts\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">#{record\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">ip\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">}\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> #{record\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">geo\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">country_code\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">}\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> VPN=\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">#{record\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">security\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">is_vpn\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">}\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">\"\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"label":86,"lang":87,"code":88,"html":89},"PHP","php","\u003C?php\nuse IpScope\\Sdk\\IpScopeClient;\n\n$client = new IpScopeClient(apiKey: getenv('IPSCOPE_KEY') ?: '');\n$record = $client->lookupIp('198.51.100.7');\necho $record->ip . \" \" . $record->geo->countryCode . PHP_EOL;","\u003Cpre class=\"shiki ipscope\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">&#x3C;?\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">php\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">use\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> IpScope\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">\\\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\">Sdk\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">\\\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\">IpScopeClient\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">$client \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">=\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> new\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> IpScopeClient\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">apiKey\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\"> getenv\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">'IPSCOPE_KEY'\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">)\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> ?:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> ''\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">)\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">$record \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">=\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> $client\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">->\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\">lookupIp\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">(\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">'198.51.100.7'\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">)\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">echo\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> $record\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">->\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">ip \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \" \"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> .\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> $record\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">->\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">geo\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">->\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">countryCode \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">.\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> PHP_EOL\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">;\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"type":38,"level":39,"text":91,"id":92},"Responses","responses",{"type":92,"responses":94},[95,285,304,316,328,340,352],{"code":96,"name":97,"description":98,"schema":99,"example":272,"defaultOpen":26,"exampleHtml":284},"200","IpLookupResponse","Resolved IPv4\u002FIPv6 intelligence record projected to your API key’s licensedFamilies.",[100,104,111,116,168,181,208,246,263,267],{"name":23,"type":24,"description":101,"required":26,"format":102,"example":103},"Canonical normalized representation of the queried IPv4 or IPv6 address.","ipv4 | ipv6","198.51.100.7",{"name":105,"type":106,"description":107,"required":26,"enum":108,"example":109},"ip_version","integer","Protocol family (`4` for IPv4, `6` for IPv6).",[109,110],4,6,{"name":112,"type":24,"description":113,"nullable":26,"format":114,"example":115},"matched_network","Longest-matching routed CIDR prefix in the active Radix\u002FLPM snapshot.","cidr","198.51.100.0\u002F24",{"name":117,"type":118,"description":119,"isRef":26,"children":120},"geo","GeoLocation","Country and city geolocation record (`geo_country` and `geo_city` families).",[121,125,128,131,136,145,151,155,159,163],{"name":122,"type":24,"description":123,"nullable":26,"example":124},"country_code","Effective ISO 3166-1 alpha-2 country code (`\"US\"`, `\"DE\"`, `\"TR\"`).","US",{"name":126,"type":24,"description":127,"nullable":26,"example":124},"declared_country_code","Country code registered in RIR WHOIS\u002FRDAP allocation records or RFC 8805 geofeed.",{"name":129,"type":24,"description":130,"nullable":26,"example":124},"physical_country_code","Country code where active BGP routing and latency triangulation place the infrastructure.",{"name":132,"type":133,"description":134,"required":26,"example":135},"is_virtual_location","boolean","`true` when `declared_country_code` differs from `physical_country_code` (cross-border routed or geofeed-relocated prefix).",false,{"name":137,"type":24,"description":138,"required":26,"enum":139,"example":140},"location_type","How the effective location was resolved by the lookup engine.",[140,141,142,143,144],"physical","declared","virtual","anycast","unknown",{"name":146,"type":147,"description":148,"nullable":26,"range":149,"example":150},"confidence","number","Calibrated geolocation confidence score.","0.0 … 1.0",0.94,{"name":152,"type":24,"description":153,"nullable":26,"example":154},"subdivision","First-level administrative region or state. Included when `geo_city` is licensed.","Virginia",{"name":156,"type":24,"description":157,"nullable":26,"example":158},"city","Resolved city name. Included when `geo_city` is licensed.","Ashburn",{"name":160,"type":106,"description":161,"nullable":26,"example":162},"accuracy_radius_km","Estimated accuracy radius in kilometres around the city centroid. Included when `geo_city` is licensed.",10,{"name":164,"type":24,"description":165,"nullable":26,"format":166,"example":167},"timezone","IANA time zone identifier. Included when `geo_city` is licensed.","iana-tz","America\u002FNew_York",{"name":169,"type":170,"description":171,"isRef":26,"children":172},"network","NetworkInfo","BGP origin autonomous system metadata (`network` family).",[173,177],{"name":174,"type":106,"description":175,"nullable":26,"example":176},"asn","Origin Autonomous System Number without the `AS` prefix.",64501,{"name":178,"type":24,"description":179,"nullable":26,"example":180},"organization","Canonical autonomous system or operator organization name.","Example Cloud LLC",{"name":182,"type":183,"description":184,"isRef":26,"children":185},"connection","ConnectionInfo","Access network classification (`connection` and `hosting` families).",[186,196,199,202,205],{"name":187,"type":24,"description":188,"required":26,"enum":189,"example":193},"connection_type","Primary access network classification.",[190,191,192,193,194,195,144],"residential","mobile","business","hosting","education","government",{"name":197,"type":133,"description":198,"required":26,"example":135},"is_residential","`true` for consumer FTTH, cable, and DSL broadband ISPs.",{"name":200,"type":133,"description":201,"required":26,"example":135},"is_mobile","`true` for cellular carrier gateways (4G\u002F5G CGNAT pools).",{"name":203,"type":133,"description":204,"required":26,"example":135},"is_business","`true` for enterprise leased lines and corporate autonomous systems.",{"name":206,"type":133,"description":207,"required":26,"example":26},"is_hosting","`true` for cloud providers, colocation facilities, and VPS networks.",{"name":209,"type":210,"description":211,"isRef":26,"children":212},"security","SecurityInfo","VPN, proxy, Tor, and hosting anonymizer classification (`anonymity` and `hosting` families).",[213,216,218,221,224,236,239],{"name":214,"type":133,"description":215,"required":26,"example":26},"is_vpn","`true` when the IP is an active commercial or self-hosted VPN exit node.",{"name":206,"type":133,"description":217,"required":26,"example":26},"`true` when routed by a datacenter, cloud, or hosting ASN.",{"name":219,"type":133,"description":220,"required":26,"example":135},"is_tor_exit","`true` when listed in the active Tor Project exit consensus.",{"name":222,"type":133,"description":223,"required":26,"example":135},"is_proxy","`true` for open HTTP\u002FSOCKS proxies and residential proxy relays.",{"name":225,"type":24,"description":226,"required":26,"enum":227,"example":228},"anonymizer_type","Primary anonymizer classification.",[228,229,230,231,232,233,234,235,144],"vpn","proxy","tor_exit","tor_relay","hosting_proxy","apple_private_relay","other_relay","none",{"name":146,"type":147,"description":237,"nullable":26,"range":149,"example":238},"Calibrated anonymity confidence score.",0.96,{"name":240,"type":241,"description":242,"required":26,"example":243},"reason_codes","string[]","Deterministic evidence codes explaining why the IP was flagged.",[244,245],"vpn_handshake_confirmed","datacenter_asn_range",{"name":247,"type":248,"description":249,"isRef":26,"children":250},"security_extensions","SecurityExtensions","Extended threat telemetry and scanner recency (`security_extensions` family).",[251,256,259],{"name":252,"type":147,"description":253,"nullable":26,"range":254,"example":255},"abuse_velocity_score","Normalized abuse velocity score from active honeypot and darknet observations.","0 … 100",18,{"name":257,"type":133,"description":258,"nullable":26,"example":135},"is_known_scanner","`true` when the IP has been observed performing internet-wide port or vulnerability scanning.",{"name":260,"type":106,"description":261,"nullable":26,"example":262},"observation_recency_hours","Hours elapsed since the most recent active security or anonymizer observation.",12,{"name":264,"type":24,"description":265,"required":26,"example":266},"dataset_version","Version identifier of the compiled IPScope dataset snapshot serving the response.","2026-10-27T00:00:00Z.crawl-1793088000000",{"name":268,"type":24,"description":269,"nullable":26,"format":270,"example":271},"updated_at","ISO 8601 UTC timestamp when the active dataset snapshot was published.","date-time","2026-10-27T00:00:00Z",{"ip":103,"ip_version":109,"matched_network":115,"geo":273,"network":277,"connection":278,"security":279,"security_extensions":281,"dataset_version":266,"updated_at":271},{"country_code":124,"declared_country_code":124,"physical_country_code":124,"is_virtual_location":135,"location_type":140,"confidence":150,"subdivision":154,"city":158,"postal_code":274,"latitude":275,"longitude":276,"accuracy_radius_km":162,"timezone":167},"20147",39.0438,-77.4874,{"asn":176,"organization":180},{"connection_type":193,"is_hosting":26,"is_residential":135,"is_mobile":135,"is_business":135},{"is_vpn":26,"is_hosting":26,"is_tor_exit":135,"is_proxy":135,"anonymizer_type":228,"confidence":238,"reason_codes":280},[244,245],{"abuse_velocity_score":255,"is_known_scanner":135,"observation_recency_hours":262,"anonymizer_reason":244,"threat_level":282,"abuse_velocity":283,"confidence":238},"medium","low","\u003Cpre class=\"shiki ipscope\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">{\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  \"ip\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"198.51.100.7\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  \"ip_version\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> 4\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  \"matched_network\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"198.51.100.0\u002F24\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  \"geo\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"country_code\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"US\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"declared_country_code\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"US\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"physical_country_code\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"US\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"is_virtual_location\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> false\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"location_type\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"physical\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"confidence\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> 0.94\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"subdivision\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"Virginia\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"city\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"Ashburn\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"postal_code\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"20147\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"latitude\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> 39.0438\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"longitude\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> -77.4874\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"accuracy_radius_km\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> 10\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"timezone\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"America\u002FNew_York\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  }\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  \"network\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"asn\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> 64501\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"organization\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"Example Cloud LLC\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  }\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  \"connection\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"connection_type\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"hosting\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"is_hosting\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> true\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"is_residential\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> false\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"is_mobile\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> false\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"is_business\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> false\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  }\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  \"security\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"is_vpn\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> true\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"is_hosting\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> true\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"is_tor_exit\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> false\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"is_proxy\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> false\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"anonymizer_type\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"vpn\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"confidence\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> 0.96\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"reason_codes\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> [\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-string-expression)\">      \"vpn_handshake_confirmed\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-string-expression)\">      \"datacenter_asn_range\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">    ]\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  }\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  \"security_extensions\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"abuse_velocity_score\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> 18\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"is_known_scanner\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> false\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"observation_recency_hours\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> 12\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"anonymizer_reason\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"vpn_handshake_confirmed\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"threat_level\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"medium\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"abuse_velocity\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"low\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    \"confidence\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> 0.96\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">  }\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  \"dataset_version\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"2026-10-27T00:00:00Z.crawl-1793088000000\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  \"updated_at\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"2026-10-27T00:00:00Z\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"code":286,"name":287,"description":288,"schema":289,"example":302,"exampleHtml":303},"400","ApiError","Malformed IPv4 or IPv6 address in the {ip} path parameter.",[290,294,298],{"name":291,"type":106,"description":292,"required":26,"example":293},"statusCode","HTTP status code returned by the API gateway.",400,{"name":295,"type":24,"description":296,"required":26,"example":297},"message","Human-readable diagnostic message describing the error condition.","Invalid IPv4 or IPv6 address: \"999.0.0.1\"",{"name":299,"type":24,"description":300,"required":26,"example":301},"error","Canonical HTTP error classification.","Bad Request",{"statusCode":293,"message":297,"error":301},"\u003Cpre class=\"shiki ipscope\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">{\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  \"statusCode\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> 400\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  \"message\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"Invalid IPv4 or IPv6 address: \\\"999.0.0.1\\\"\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  \"error\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"Bad Request\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"code":305,"name":287,"description":306,"schema":307,"example":314,"exampleHtml":315},"401","Missing, malformed, or revoked API key.",[308,310,312],{"name":291,"type":106,"description":292,"required":26,"example":309},401,{"name":295,"type":24,"description":296,"required":26,"example":311},"Missing or invalid API key",{"name":299,"type":24,"description":300,"required":26,"example":313},"Unauthorized",{"statusCode":309,"message":311,"error":313},"\u003Cpre class=\"shiki ipscope\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">{\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  \"statusCode\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> 401\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  \"message\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"Missing or invalid API key\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  \"error\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"Unauthorized\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"code":317,"name":287,"description":318,"schema":319,"example":326,"exampleHtml":327},"402","Prepaid credit reservation exhausted (100 micro-USD per lookup).",[320,322,324],{"name":291,"type":106,"description":292,"required":26,"example":321},402,{"name":295,"type":24,"description":296,"required":26,"example":323},"Prepaid credit reservation exhausted. Please top up your wallet.",{"name":299,"type":24,"description":300,"required":26,"example":325},"Payment Required",{"statusCode":321,"message":323,"error":325},"\u003Cpre class=\"shiki ipscope\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">{\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  \"statusCode\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> 402\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  \"message\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"Prepaid credit reservation exhausted. Please top up your wallet.\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  \"error\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"Payment Required\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"code":329,"name":287,"description":330,"schema":331,"example":338,"exampleHtml":339},"403","API key does not have the required lookup scope.",[332,334,336],{"name":291,"type":106,"description":292,"required":26,"example":333},403,{"name":295,"type":24,"description":296,"required":26,"example":335},"API key does not have required scope: lookup",{"name":299,"type":24,"description":300,"required":26,"example":337},"Forbidden",{"statusCode":333,"message":335,"error":337},"\u003Cpre class=\"shiki ipscope\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">{\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  \"statusCode\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> 403\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  \"message\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"API key does not have required scope: lookup\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  \"error\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"Forbidden\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"code":341,"name":287,"description":342,"schema":343,"example":350,"exampleHtml":351},"429","Per-user rate limit exceeded (rl:user:\u003CuserId>).",[344,346,348],{"name":291,"type":106,"description":292,"required":26,"example":345},429,{"name":295,"type":24,"description":296,"required":26,"example":347},"Rate limit exceeded (600 req\u002Fmin). Retry after 14s.",{"name":299,"type":24,"description":300,"required":26,"example":349},"Too Many Requests",{"statusCode":345,"message":347,"error":349},"\u003Cpre class=\"shiki ipscope\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">{\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  \"statusCode\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> 429\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  \"message\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"Rate limit exceeded (600 req\u002Fmin). Retry after 14s.\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  \"error\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"Too Many Requests\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"code":353,"name":287,"description":354,"schema":355,"example":362,"exampleHtml":363},"503","No active dataset snapshot loaded on the API node.",[356,358,360],{"name":291,"type":106,"description":292,"required":26,"example":357},503,{"name":295,"type":24,"description":296,"required":26,"example":359},"No active dataset snapshot loaded",{"name":299,"type":24,"description":300,"required":26,"example":361},"Service Unavailable",{"statusCode":357,"message":359,"error":361},"\u003Cpre class=\"shiki ipscope\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">{\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  \"statusCode\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-constant)\"> 503\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  \"message\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"No active dataset snapshot loaded\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  \"error\"\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"Service Unavailable\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"type":38,"level":39,"text":365,"id":366},"Live BGP & RIPEstat enrichment-on-miss","live-bgp-and-ripestat-enrichment-on-miss",{"type":16,"text":368},"When an IPv4 or IPv6 address does not match a pre-compiled city or ASN record in the active snapshot (or matches a prefix missing ASN\u002Fgeolocation attributes) and `LIVE_ENRICH_ON_MISS=true` is enabled on the API node:",{"type":370,"items":371},"list",[372,373],"The lookup engine queries live **RIPEstat \u002F BGP origin ASN**, **RDAP remarks (`#geofeed`)**, and **active tracepath hints** in real time.","The enriched record is merged into the response (`mergeLiveEnrichment`) and cached in the in-memory hot enrichment cache so subsequent lookups for the same IP or `\u002F24` (`\u002F48` IPv6) resolve instantaneously.",[375,376,377],{"id":41,"text":40,"level":39},{"id":92,"text":91,"level":39},{"id":366,"text":365,"level":39},1793226505513]