IP Check API, Terminal Usage and Accuracy
Run an IP check from the terminal with curl or PowerShell, read the JSON and plain-text API, and understand IPv4/IPv6 probe hosts, geolocation accuracy limits and privacy behaviour.
Methodology and signal boundaries
This service separates server-observed network facts, local Geo datasets and browser-side evidence so that one signal is never presented as another.
- The displayed public IP is the address observed by the service for that HTTP connection.
- Country, region, city, timezone, coordinates, ASN and organization come from a local dataset. The result shows its precision radius; source, build-time and health diagnostics are restricted to authenticated administrators.
- WebRTC, DNS, language, timezone and IPv6 tests are independent browser-side observations. Sensitive tests are not silently converted into a security score.
- Unavailable, unknown, no observation and mismatch are different states. A failed or unconfigured test is never reported as a pass.
Accuracy and freshness
IP geolocation describes a network allocation, not a device or household. A city and coordinate may be far from the user; the precision radius is an uncertainty estimate, not a guarantee. Dataset freshness and quality are monitored internally and are available only to authenticated administrators.
HTTP and JSON API
Core endpoints require no account or cookie. Dynamic responses use Cache-Control: no-store and rate-limit headers. Address-family probe hosts are first-party and fail closed when the request arrives over the wrong family.
| Path | Response |
|---|---|
GET / | Plain current IP for command-line clients; SSR HTML when the client requests text/html. |
GET /ip | Canonical current IP followed by one LF. |
GET /info[/{ip}] | Rich UTF-8 plain text with stable labels, field order and no ANSI control bytes. |
GET /ansi[/{ip}] | The /info view with explicit, allowlisted SGR color. |
GET /field/{field}[/{ip}] | One allowlisted scalar followed by LF; 204 when the value is unavailable. |
GET /json | Structured current-IP result containing public network, location and ASN fields. |
GET /json/{ip} | Structured lookup for one validated IPv4 or IPv6 address. |
GET /ip/{ip} | Canonical target IP for machine clients; the noindex lookup page only for an explicit HTML request. |
GET /api/v1/self | Versioned snake_case JSON for self and target lookups. |
GET /api/v1/lookup/{ip} | Versioned snake_case JSON for self and target lookups. |
curl -4 https://iprapid.com
curl -6 https://iprapid.com
curl -fsS https://iprapid.com/ip
curl -fsS https://iprapid.com/info
curl -fsS https://iprapid.com/ansi
curl -fsS https://iprapid.com/field/country-code
curl -sS https://iprapid.com/json
curl -sS https://iprapid.com/json/8.8.8.8
curl -sS https://iprapid.com/api/v1/self
curl.exe --fail --silent --show-error https://iprapid.com/info
Invoke-RestMethod -Uri 'https://iprapid.com/api/v1/self'
JSON and text responses include RateLimit-Limit and RateLimit-Remaining. A 429 response includes Retry-After; invalid input is text on terminal routes and application/problem+json on v1 routes.
Privacy and retention
The lookup path does not write raw IP addresses, request URIs, headers or fingerprints to the PostgreSQL aggregate tables. Caddy access logs remain subject to the documented restricted rotation policy. Diagnostic share links contain only redacted status values in a URL fragment, are signed, expire after 24 hours and are not stored as share records.
Frequently asked questions
Is the displayed city my exact location?
No. IP geolocation is an approximate network-level estimate. Use the displayed accuracy radius, and do not treat coordinates as a device or street address.
Does this service save my IP lookup in its database?
The application does not store raw IP addresses in its PostgreSQL usage aggregates. Restricted web access logs are retained and rotated separately as documented in the privacy policy.
Why can IPv6 be unknown instead of unavailable?
An unconfigured probe, blocked request or inconclusive browser signal cannot prove that IPv6 is absent. The result stays unknown until a first-party IPv6-only test succeeds or fails conclusively.
What is inside a diagnostic share link?
Only redacted status values, issue and expiry times, and a signature. It contains no IP address, coordinates or DNS resolver address. The fragment is submitted only for signature verification and no share record is stored.