Command line

Every tool answers curl in plain text. Bare paths like curl ipq.sh/dns print their own usage.

This list is also plain text, or curl ipq.sh/cli.

Your request

curl ipq.shyour IP address
curl ipq.sh/ipthe same, by name
curl ipq.sh/ip.jsonIP, version and country as JSON
curl -4 ipq.shyour IPv4 address (-6 for IPv6)
curl ipq.sh/headersthe headers your client sent
curl ipq.sh/headers.jsonthe same as JSON
curl ipq.sh/uayour user agent (/ua.json)
curl ipq.sh/timethe current time in UTC (/time.json)

Check a site

curl ipq.sh/check/example.comDNS, TCP, TLS and one HEAD / from every region
curl ipq.sh/check/example.com?port=80plain HTTP on port 80 instead of 443

Traceroute

curl ipq.sh/tracetraceroute to you from every region
curl ipq.sh/trace/methe same, by name
curl ipq.sh/trace/example.comtraceroute to a site or address

Ping

curl ipq.sh/ping/example.comfive pings to a site or address from every region
curl ipq.sh/ping/mefive pings to you

DNS

curl ipq.sh/dns/example.comA records, as each region's resolver sees them
curl ipq.sh/dns/example.com?type=MXany of A AAAA CNAME MX NS TXT SOA CAA SRV PTR
curl ipq.sh/dns/example.com?mailMX, SPF and DMARC together
curl ipq.sh/dns/8.8.8.8an address looks up its PTR

Ports

curl ipq.sh/port/22,443are your own TCP ports reachable from outside (up to five)
curl -6 ipq.sh/port/443test your IPv6 address (-4 for IPv4)

Only ever tests the address you connect from.

GeoIP

curl ipq.sh/geowhere you are and who routes you
curl ipq.sh/geo/8.8.8.8location, network and reverse name of an address
curl ipq.sh/geo/example.comthe same for each address a name resolves to
curl ipq.sh/asn/8.8.8.8the same lookup, by another name

Heartbeats

curl -d period=1h -d grace=15m -d ntfy=mytopic ipq.sh/heartbeatcreate a check; prints its ping and manage URLs
curl -d period=1d -d webhook=https://… ipq.sh/heartbeatalert a webhook instead; also -d name=…, -d remind=6h
curl ipq.sh/hb/<id>ping: the job ran
curl ipq.sh/hb/<id>/startthe job started
curl ipq.sh/hb/<id>/failthe job failed
curl ipq.sh/hb/<id>/$?report an exit code; non-zero is a failure
curl ipq.sh/heartbeat/<manage>status and recent pings
curl -d action=test ipq.sh/heartbeat/<manage>send a test alert
curl -d period=2h ipq.sh/heartbeat/<manage>change settings
curl -d action=delete ipq.sh/heartbeat/<manage>delete the check
curl -d ping=<ping URL> ipq.sh/heartbeat/recoverlost the manage URL: a one-time link goes to the alert destination

Internet health

curl ipq.sh/healthmajor services, as nine regions see them
curl ipq.sh/health.jsonthe same as JSON

Options

?from=nyc,lononly these regions, on /check, /trace, /ping, /dns and /port
?jsonJSON instead of text; so does -H 'Accept: application/json'
curl -4or -6: pick which of your addresses /trace, /ping/me and /port test

Regions: nyc New York, sfo San Francisco, sao São Paulo, lon London, jnb Johannesburg, blr Bangalore, sgp Singapore, tyo Tokyo, syd Sydney. Combine options with &, and quote the URL in your shell: curl 'ipq.sh/dns/example.com?type=TXT&from=lon&json'.