API v1

IP Cleanliness API

Use one endpoint for IP cleanliness scores, network type, proxy, VPN, Tor, location, and ASN. Web checks, batch jobs, and the API use the same detection standard.

Request

FieldTypeRequiredDescription
ipstringYesPublic IPv4 address, up to 15 characters
StandardAPI key + IP
curl -X POST https://iprisk.top/v1/check \
  -H "Authorization: Bearer ipr_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{"ip":"1.1.1.1"}'
Retry-safeIdempotency-Key
IDEMPOTENCY_KEY="$(uuidgen | tr '[:upper:]' '[:lower:]')"

curl -X POST https://iprisk.top/v1/check \
  -H "Authorization: Bearer ipr_live_xxx" \
  -H "Idempotency-Key: $IDEMPOTENCY_KEY" \
  -H "Content-Type: application/json" \
  -d '{"ip":"1.1.1.1"}'

Reuse the same Idempotency-Key when retrying one lookup; generate a new value for a new lookup.

Success response

{ "success": true, "request_id": "7f3e8d21-...", "credits_remaining": 9999, "data": { "ip": "1.1.1.1", "score": 45, "cleanliness_level": "low", "ip_type": "datacenter", "proxy": false, "vpn": false, "tor": false, "hosting": true, "country": null, "country_code": null, "city": null, "asn": "AS13335", "organization": "Cloudflare, Inc.", "checked_at": "2026-09-25T12:00:00.000Z" } }

Response fields

FieldTypeDescription
ipstringNormalized public IPv4 address
score / cleanliness_levelnumber / string0–100 cleanliness score and its level; higher is cleaner
ip_typestringNetwork type, such as residential, mobile, or datacenter
proxy / vpn / tor / hostingbooleanProxy, VPN, Tor, and datacenter detection results
country / country_code / citystring | nullConsensus geolocation; null when an Anycast address has no unique location
asn / organizationstring | nullAutonomous system number and network organization
checked_atstringISO 8601 completion timestamp
credits_remainingnumber | nullRemaining credits after this request; null for unlimited accounts

Billing

Each API request that successfully returns a complete result uses one credit. Incomplete checks return a retryable error and do not use a credit.

Web checks, batch lookups, and the API use the same success standard.

Status codes

HTTPcodeMeaningAction
200—Check completedRead data
400invalid_ip / unsupported_ip / invalid_json / invalid_idempotency_keyInvalid request or parameterFix the request
401invalid_api_keyInvalid API keyCheck the key
402insufficient_creditsInsufficient creditsAdd credits
403account_inactive / plan_requiredAccount or plan unavailableCheck the account
409idempotency_request_in_progress / idempotency_key_reused / idempotency_key_conflictIdempotency key is processing, used, or conflictingWait if processing; generate a new value for a new check
413payload_too_largeRequest body too largeReduce the request body
429rate_limitedRate limit exceededRetry after Retry-After
503check_incomplete / engine_busy / engine_recovering / service_restarting / backend_timeout / backend_unavailable / rate_limiter_unavailable / database_errorCheck incomplete or service temporarily unavailableNo credit used; retry later

Usage notes

  • For automatic retries, reuse the same Idempotency-Key for one lookup and generate a new value for a new lookup.
  • For 429 or retryable errors, retry after Retry-After.
  • Keep the API key secure on your server. Share request_id, never the key, when requesting support.