Appearance
DNS resolver
A public DNS-over-HTTPS (DoH) resolver. It answers DNS queries over an ordinary HTTPS request, so any client that speaks DoH can use it, and so can a plain curl.
DNS is the internet's address book: it turns a name like example.com into the numeric IP address a computer actually connects to. Resolving over HTTPS keeps those lookups private and unmodified in transit.
- Base path:
https://ws.latency.app/v1/dns - Auth: none (public)
- Privacy: query names are not logged.
- Rate limit: per client IP, default 600 requests/minute. Over the limit returns
429.
On the house
The DNS resolver is free and unmetered. Its 600/min per-IP budget exists only to keep abuse out, not to push you onto a plan: DoH queries are never counted against your monitor, function, or API quotas, on any plan or none. Point a tool, a script, or your whole browser at it and go. The other public primitives are held to a stricter shared budget (see rate limits).
Endpoints
The resolver accepts queries in two interchangeable forms at the same path. /v1/dns/query is the canonical path; /v1/dns/dns-query is an alias for clients that follow the RFC 8484 naming convention.
JSON form
The simplest way to ask. Pass a name and record type as query parameters and get JSON back.
bash
curl "https://ws.latency.app/v1/dns/query?name=example.com&type=A"| Parameter | Meaning | Default |
|---|---|---|
name | The domain to resolve. Required. | — |
type | Record type: A, AAAA, MX, TXT, CNAME, NS, … | A |
The response is application/dns-json, the same shape Google and Cloudflare return:
json
{
"Status": 0,
"Answer": [
{ "name": "example.com", "type": 1, "TTL": 300, "data": "93.184.216.34" }
]
}type: 1 is an A record; Status: 0 means success (NOERROR).
Wire form (RFC 8484)
For DoH clients and libraries. The DNS message is carried as raw bytes and the response is a binary DNS packet (application/dns-message).
bash
# GET: base64url-encoded query in the ?dns= parameter
curl "https://ws.latency.app/v1/dns/query?dns=<base64url-encoded-query>"
# POST: the raw query as the request body
curl -H 'content-type: application/dns-message' \
--data-binary @query.bin \
https://ws.latency.app/v1/dns/queryPoint a DoH-capable client at the endpoint directly:
https://ws.latency.app/v1/dns/queryRecord types
Common types you can request with the JSON form:
| Type | Use |
|---|---|
A | IPv4 address |
AAAA | IPv6 address |
CNAME | Alias to another name |
MX | Mail servers |
TXT | Text records (SPF, verification, …) |
NS | Authoritative name servers |
Why use it
- Confirm what a name resolves to right now, from our network's vantage point, useful when debugging a propagation delay or a split-horizon setup.
- Feed other primitives. The inspector uses this resolver internally to turn a bare domain into an IP before geolocating it.
- A private, uncensored resolver for scripts and tools, with no query logging.