IP Intelligence
IP intelligence for agents that see client addresses, verify infrastructure or investigate abuse. One call combines: ASN and the network holder's name (who actually operates this address space), the announced BGP prefix, the RIR-registered country of the address block, the registered abuse contact (where to report bad traffic), and reverse DNS via DNS-over-HTTPS. Private and reserved ranges are detected locally and answered instantly without touching the network. Data comes from RIPEstat — the RIPE NCC's official public data API covering all five regional registries — so answers reflect registry records rather than commercial geolocation heuristics; the country is the block's registration location, not a device geolocation, and the output says so honestly. IPv4 and IPv6. Pairs with dns-inspect and domain-intel for a complete infrastructure picture.
Call with x402
1. Send the request. 2. Receive 402 with accepts[]. 3. Sign the payment and retry with the X-PAYMENT header.
curl -X POST https://agentbit.app/v1/ip/intel \
-H 'Content-Type: application/json' \
-d '{"ip":"1.1.1.1"}'
Input schema
{
"type": "object",
"properties": {
"ip": {
"type": "string",
"description": "IPv4 or IPv6 address"
}
},
"required": [
"ip"
]
}Output schema
{
"type": "object",
"properties": {
"ip": {
"type": "string"
},
"public": {
"type": "boolean"
},
"version": {
"type": "integer"
},
"asn": {
"type": [
"integer",
"null"
]
},
"network_holder": {
"type": [
"string",
"null"
]
},
"prefix": {
"type": [
"string",
"null"
]
},
"country": {
"type": [
"string",
"null"
]
},
"reverse_dns": {
"type": [
"string",
"null"
]
},
"abuse_contacts": {
"type": "array",
"items": {
"type": "string"
}
}
}
}Code examples
// JavaScript (x402-fetch)
import { wrapFetchWithPayment } from "x402-fetch";
const fetchWithPay = wrapFetchWithPayment(fetch, wallet);
const r = await fetchWithPay("https://agentbit.app/v1/ip/intel", {
method: "POST",
headers: {"Content-Type": "application/json"},
body: JSON.stringify({"ip":"1.1.1.1"})
});
console.log(await r.json());
# Python (x402 client)
from x402.clients.requests import x402_requests
s = x402_requests(account)
r = s.post("https://agentbit.app/v1/ip/intel",
json={"ip":"1.1.1.1"})
print(r.json())
// PHP
$r = Http::withHeaders(['X-PAYMENT' => $signedPayment])
->post('https://agentbit.app/v1/ip/intel',
array (
'ip' => '1.1.1.1',
));
$data = $r->json();