Skip to content

GeoIP API

The GeoIP site exposes a small public API for IP lookup and service discovery. No OAuth flow is required: the endpoints are public, read-only and keyless.

Endpoints

Four GET routes. Ask over IPv4 or IPv6 and the JSON describes the address the request actually arrived with; it does not test the other family.

Public GeoIP endpoints
MethodEndpointReturns
GET/api/jsonThe full record: address, location, timezone and request metadata.
GET/api/ipThe IPv4 address as plain text. 404 when this request has no IPv4 address.
GET/api/ipv6The IPv6 address as plain text. 404 when this request did not arrive over IPv6.
GET/api/healthService status for monitors and automated checks.
curl https://geoip.echovalue.dev/api/json
curl https://geoip.echovalue.dev/api/ip
curl https://geoip.echovalue.dev/api/ipv6
curl https://geoip.echovalue.dev/api/health

Response fields

/api/json returns one flat object. Values the edge did not report are the string Unknown or an empty string.

Fields in the JSON response
FieldTypeDescription
ipstringThe IPv4 address, or an empty string.
ipv6stringThe IPv6 address, or an empty string.
isCurrentIpv6booleanWhether this request arrived over IPv6.
citystringApproximate city from the edge lookup.
region / regionCodestringRegion name and code.
country / continentstringISO country code and continent.
latitude / longitudestringCoordinates for the block.
timezonestringIANA timezone name, for example Europe/Rome.
postalCodestringPostal code when the edge reports one.
userAgent / acceptLanguagestringHeaders as sent.

Discovery

Documents that describe the service to clients and agents. The homepage also answers Accept: text/markdown with a plain-text version of the record.

Authentication

No key, token or account is needed. OAuth discovery documents are intentionally not published: the API is public, and metadata for an authorization server that does not exist would misrepresent the service contract to agents.

Rate limits. There is no published quota. If you build on these routes, cache the response rather than polling the edge for every page view.

contact

Questions, feedback, or something not working? Get in touch.

Email

support at echovalue dot dev