Endpoint

POST https://api.bunny.build/api/v1/ip/check

Authentication

HeaderRequiredValue
X-API-KeyYesYour API key (sec4_...)
Content-TypeYesapplication/json
AcceptRecommendedapplication/json

Request body

FieldTypeRequiredDescription
ipstringYesValid IPv4 or IPv6 address

Example

{
  "ip": "203.0.113.42"
}

Response

200 OK

FieldTypeDescription
ipstringThe IP that was checked
classificationstringOne of: hosting, residential, mobile, vpn, tor, proxy, unknown
confidencenumber0.0 to 1.0
signalsobjectBoolean flags (see below)
networkobjectASN, org, provider (see below)
geoobjectcountry, region (see below)
signals
FieldType
is_hostingboolean
is_residentialboolean
is_mobileboolean
is_vpnboolean
is_torboolean
is_proxyboolean
network
FieldTypeDescription
asnint | nullAutonomous System Number
orgstring | nullOrganization name
providerstring | nullFriendly name (e.g. “AWS”)
geo
FieldTypeDescription
countrystring | nullISO country code (e.g. “US”)
regionstring | nullRegion/state
Example
{
  "ip": "203.0.113.42",
  "classification": "hosting",
  "confidence": 0.95,
  "signals": {
    "is_hosting": true,
    "is_residential": false,
    "is_mobile": false,
    "is_vpn": false,
    "is_tor": false,
    "is_proxy": false
  },
  "network": {
    "asn": 16509,
    "org": "Amazon.com, Inc.",
    "provider": "AWS"
  },
  "geo": {
    "country": "US",
    "region": null
  }
}

401 Unauthorized

{
  "detail": "Missing API key. Include X-API-Key header."
}

402 Payment Required

{
  "detail": "Monthly quota exceeded. Upgrade your plan."
}

422 Unprocessable Entity

Invalid IP format.
{
  "detail": "Invalid IP address format"
}

429 Too Many Requests

{
  "detail": "Rate limit exceeded. Try again in 60 seconds."
}

cURL example

curl -X POST https://api.bunny.build/api/v1/ip/check \
  -H "X-API-Key: sec4_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"ip": "203.0.113.42"}'