Quickstart
First request in 5 minutes
Get an API key, call the endpoint, read quota + rate limit headers, and learn the core response fields.
1) Get an API key
Create an account in the dashboard and copy your API key (looks like prdx_...). The free plan includes 1,000 checks/day (5,000/month) — no card required.
2) Call the API (cURL)
Tip: add -i to see quota/rate-limit headers.
curl -i -sS https://predax.io/api/v1/check/ip \
-H "X-API-Key: prdx_..." \
-H "Content-Type: application/json" \
-d '{"ip":"8.8.8.8"}'3) Use the response (what matters)
classification.risk_score(0–100) +classification.risk_level(minimal<20,low20–49,medium50–79,high≥80)classification.is_proxy,is_vpn,is_tor,is_datacenter,is_crawler— note the flags mean different things: Tor/proxy are strong abuse signals, VPN and datacenter have plenty of legitimate users, andis_crawlermarks a verified search-engine bot you should never blockclassification.flags+classification.reasons(when available)network.asn/network.as_nameandlocation.country_code(best-effort)meta.request_idand response headerX-Request-IDfor debugging/support
4) Read quota + rate limit headers
X-Quota-Limit-Day,X-Quota-Used-Today,X-Quota-Remaining-Today,X-Quota-Reset-DailyX-Quota-Limit-Month,X-Quota-Used-Month,X-Quota-Remaining-Month,X-Quota-MonthX-RateLimit-Limit-Per-Second,X-RateLimit-Remaining-This-SecondX-Quota-Billed—0means the request was free: re-checking the same IP with the same key within 5 minutes is not billed
Hitting the daily/monthly quota returns 402 (daily resets at 00:00 UTC); sending faster than your plan's per-second limit returns 429. Only successful checks are billed.
5) Optional: residential proxy enrichment
If you can pass a stable user_id plus lightweight browser fingerprint data, Predax can add a best-effort residential-proxy suspicion signal.
curl -sS https://predax.io/api/v1/check/ip \
-H "X-API-Key: prdx_..." \
-H "Content-Type: application/json" \
-d '{
"ip":"1.2.3.4",
"user_id":"user_123",
"fingerprint":{
"timezone":"Europe/Dublin",
"languages":["en-IE","en"],
"webrtc_local_ip":"192.168.1.100"
}
}'Look for classification.is_residential_proxy_suspect and classification.residential_proxy_score.
Local dev note (Docker / WordPress)
If your client runs in Docker, localhost points at the container, not your API. Use host.docker.internal (Docker Desktop), your host IP, or the API service name if both containers share a Docker network.