Free, keyless IP trust-score API. Send an IP address, get back a multi-source trust score, risk signals (VPN / proxy / Tor / hosting / bot), data confidence, and a per-source breakdown — the same intelligence that powers ipaudit.dev.
curl "https://ipaudit.dev/api/analyze?ip=8.8.8.8"{
"ip": "8.8.8.8",
"score": { "score": 95, "grade": "high",
"signals": [ { "key": "hosting", "verdict": "disputed", "hits": 1, "healthy": 7, "deduct": 5 }, ... ] },
"confidence": { "score": 100, "grade": "high", "healthySources": 7, "totalSources": 7 },
"perSource": [ ... ]
}A full annotated response lives in docs/response-schema.md.
| Endpoint | Description |
|---|---|
GET /api/analyze?ip=<ip>&mode=remote|self |
Full audit: trust score, risk signals, confidence, per-source detail |
GET /api/ip |
The caller's own IP address ({ "ip": "...", "mode": "self", "cf": true }) |
GET /api/badge/<ip>.svg?theme=light|dark |
Embeddable SVG badge (image/svg+xml) |
GET /api/share/<ip> |
Shareable SVG result card |
GET /og/ip/<ip> |
Social preview card (PNG) |
Interactive playground: https://ipaudit.dev/api
None. The API is free and keyless — requests are rate-limited per client IP instead of being authenticated with tokens.
- 1,000 audits per client IP per day, shared across the web tool, the API and the badge endpoints.
- Repeated audits of the same IP are served from a one-hour cache: polling an unchanged IP costs almost nothing and does not count against fresh upstream lookups.
- Exceeding the quota returns
429with{ "error": "rate limit exceeded", "limit": 1000 }. - Responses may include a per-source error row (e.g. an upstream rate-limiting us); treat each
perSourcerow'scontributedflag as the signal of whether that source answered.
See docs/rate-limits.md for client best practices (backoff, caching, Retry-After).
| Status | Meaning | Body |
|---|---|---|
400 |
Missing or invalid ip parameter |
{ "error": "missing or invalid ip" } |
429 |
Daily quota exhausted | { "error": "rate limit exceeded", "limit": 1000 } |
502 |
Upstream data sources unavailable (image endpoints) | text |
[](https://ipaudit.dev/ip/8.8.8.8)More snippets in examples/github-badge.md.
Scoring is consensus-weighted: a risk signal claimed by every contributing source deducts in full; a signal claimed by only a minority deducts half, capped at 20 points, and is reported as verdict: "disputed" with the vote counts (hits/healthy). One noisy feed can never zero an IP — see docs/scoring.md for the full rules.
Results aggregate (and cross-check) public data from IPinfo, DB-IP, IP2Location, ip-api.com, MaxMind GeoLite2, Google DNS (DoH reverse DNS) and AbuseIPDB. Source terms and attribution requirements: docs/data-sources.md.
openapi.yaml— OpenAPI 3.1 spec, the single source of truth for these endpoints. Import it into Postman, Insomnia or Apifox, or generate a client SDK with OpenAPI Generator.- The spec is linted in CI (Spectral) on every push.
- API bugs / feature requests → open an issue with the
api-bug/featuretemplate. - "This IP's data looks wrong" → open an issue with the
data-correctiontemplate and include the queried IP.
- Website & playground: https://ipaudit.dev
- API playground: https://ipaudit.dev/api
- Terms: https://ipaudit.dev/terms · Privacy: https://ipaudit.dev/privacy
Documentation and spec are licensed under CC BY 4.0. Using the API does not grant ownership of the returned data — see docs/data-sources.md for upstream attribution.