ip.rbn.gr — what is my IP Two choices: which fields, and what shape. Fields ?fields=ip,rdns or /ip,rdns default: ip family scope public ?fields=all or /all Format ?format=json or /json default: text, html for browsers Examples: curl -s https://ip.rbn.gr curl -s https://ip.rbn.gr/json curl -s https://ip.rbn.gr/json/all/pretty curl -s https://ip.rbn.gr/rdns curl -s https://ip.rbn.gr/ip,family,scope eval "$(curl -s https://ip.rbn.gr/sh)" curl -4 -s https://ipv4.rbn.gr curl -6 -s https://ipv6.rbn.gr Formats (the format has to be the FIRST path segment): text one value per line (just the IP when no fields are named) json object, keys in the order you asked for sh shell exports, safe for eval; errors are comments plus `false` html browser page help this text Fields: ip family scope public rdns rdns_verified rdns and rdns_verified cost a DNS lookup, so they are never in the default set, and they are resolved fresh on every request — no cache, no rate limit. Modifiers (query params, or extra path segments): pretty pretty-printed JSON strict 404 instead of an empty body when nothing you asked for has a value cors Access-Control-Allow-Origin: * Scopes — public is true only for global: global this-network private cgnat loopback link-local site-local ula multicast broadcast unspecified documentation benchmarking reserved teredo 6to4 nat64 as112 amt srv6 discard ipv4-mapped rdns_verified is forward-confirmed rDNS: the PTR name was resolved back and it points at this address. false means the name is unverified, null means there is no PTR record at all. The HTML page is a fixed, minimal view (address, rdns, rdns_verified, one row per family) and ignores ?fields=/path fields entirely — that selection is a curl-only feature. The page always resolves both, for both address families; a plain curl request never pays for that unless it names the fields itself.