Make API requests to 1.1.1.1
Cloudflare offers a DNS over HTTPS resolver at:
https://cloudflare-dns.com/dns-queryCloudflare's DNS over HTTPS (DoH) endpoint supports POST and GET for DNS wireformat, and GET for JSON format.
When making requests using POST, the DNS query is included as the message body of the HTTP request, and the MIME type (application/dns-message) is sent in the Content-Type request header. Cloudflare will use the message body of the HTTP request as sent by the client, so the message body should not be encoded.
When making requests using GET, the DNS query is encoded into the URL.
If you use JSON format, set application/dns-json, and if you use DNS wireformat, use application/dns-message.
Refer to DNS wireformat and JSON for cURL examples.
Each DNS query maps to exactly one HTTP request. To send multiple queries concurrently, use HTTP/2 or HTTP/3, which supports multiplexing multiple requests over a single connection.
HTTP/2 is the minimum recommended version of HTTP for use with DoH. This is not specific to 1.1.1.1, but rather how DoH operates per RFC 8484 ↗.
Example request:
curl --http2 --header "accept: application/dns-json" "https://one.one.one.one/dns-query?name=cloudflare.com" --next --http2 --header "accept: application/dns-json" "https://one.one.one.one/dns-query?name=example.com"No authentication is required to send requests to this API.
Cloudflare's DNS over HTTPS resolver supports TLS 1.2 and TLS 1.3.
| HTTP Status | Meaning |
|---|---|
400 | DNS query not specified or too small. |
413 | DNS query is larger than maximum allowed DNS message size. |
415 | Unsupported content type. |
504 | Resolver timeout while waiting for the query response. |