DNS resolve
package main
import ( "fmt" "net/http" "io")
func main() {
url := "https://api.dazrik.net/resolve?target=example.com&record=MX"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close() body, _ := io.ReadAll(res.Body)
fmt.Println(res) fmt.Println(string(body))
}HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://api.dazrik.net/resolve?target=example.com&record=MX")) .method("GET", HttpRequest.BodyPublishers.noBody()) .build();HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());System.out.println(response.body());OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder() .url("https://api.dazrik.net/resolve?target=example.com&record=MX") .get() .build();
Response response = client.newCall(request).execute();import axios from 'axios';
const options = { method: 'GET', url: 'https://api.dazrik.net/resolve', params: {target: 'example.com', record: 'MX'}};
try { const { data } = await axios.request(options); console.log(data);} catch (error) { console.error(error);}const url = 'https://api.dazrik.net/resolve?target=example.com&record=MX';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}use reqwest;
#[tokio::main]pub async fn main() { let url = "https://api.dazrik.net/resolve";
let querystring = [ ("target", "example.com"), ("record", "MX"), ];
let client = reqwest::Client::new(); let response = client.get(url) .query(&querystring) .send() .await;
let results = response.unwrap() .json::<serde_json::Value>() .await .unwrap();
dbg!(results);}curl --request GET \ --url 'https://api.dazrik.net/resolve?target=example.com&record=MX'Without a record param, resolves the hostname to all of its A/AAAA addresses split by family. With a record param, returns that record type’s values.
Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Hostname to target. Raw IP addresses are rejected.
Example
example.comDNS record type to look up (case-insensitive). Omit to return A/AAAA addresses split by family.
Example
MXResponses
Section titled “Responses”Either the address split (no record) or the requested record’s structured values.
Address resolution result, returned when no record param is supplied.
object
object
DNS record lookup result, returned when a record param is supplied. The shape of result depends on the record type.
object
A, AAAA, NS, CNAME, TXT
MX
A single MX record.
object
SRV
A single SRV record.
object
An SOA record.
object
Examples
No record param addresses split by family
{ "ok": true, "query": "example.com", "addresses": { "v4": [ "93.184.216.34" ], "v6": [ "2606:2800:220:1:248:1893:25c8:1946" ] }}record=MX one object per mail server
{ "ok": true, "query": "example.com", "record": "MX", "result": [ { "priority": 10, "exchange": "mail.example.com" }, { "priority": 20, "exchange": "mail2.example.com" } ]}record=SOA single object (null when absent)
{ "ok": true, "query": "example.com", "record": "SOA", "result": { "nsname": "ns.example.com", "hostmaster": "hostmaster.example.com", "serial": 2024010101, "refresh": 7200, "retry": 3600, "expire": 1209600, "minttl": 3600 }}Headers
Section titled “Headers”IETF-draft combined rate-limit header for the current window: limit, remaining, and reset (seconds until the window resets). Sent on every response from a known endpoint.
Example
limit=60, remaining=59, reset=42Maximum requests allowed per client IP per window (60 requests per 60s).
Example
60Requests remaining in the current window before the limit is hit.
Example
59Seconds until the current window resets.
Example
42Missing or invalid parameter
Error response.
object
Example
{ "ok": false, "msg": "query param target is required"}Headers
Section titled “Headers”IETF-draft combined rate-limit header for the current window: limit, remaining, and reset (seconds until the window resets). Sent on every response from a known endpoint.
Example
limit=60, remaining=59, reset=42Maximum requests allowed per client IP per window (60 requests per 60s).
Example
60Requests remaining in the current window before the limit is hit.
Example
59Seconds until the current window resets.
Example
42Target resolves to a private/reserved address
Error response.
object
Example
{ "ok": false, "msg": "target doesn't resolve to a public addr"}Headers
Section titled “Headers”IETF-draft combined rate-limit header for the current window: limit, remaining, and reset (seconds until the window resets). Sent on every response from a known endpoint.
Example
limit=60, remaining=59, reset=42Maximum requests allowed per client IP per window (60 requests per 60s).
Example
60Requests remaining in the current window before the limit is hit.
Example
59Seconds until the current window resets.
Example
42Rate limit exceeded: either the per-client request limit (60 requests per minute) or, for endpoints that connect to the target, the per-destination outbound connection limit.
Error response.
object
Example
{ "ok": false, "msg": "you're being rate limited, try again later."}Headers
Section titled “Headers”IETF-draft combined rate-limit header for the current window: limit, remaining, and reset (seconds until the window resets). Sent on every response from a known endpoint.
Example
limit=60, remaining=59, reset=42Maximum requests allowed per client IP per window (60 requests per 60s).
Example
60Requests remaining in the current window before the limit is hit.
Example
59Seconds until the current window resets.
Example
42Seconds to wait before retrying. Sent only on a 429 response.
Example
42Unexpected server error
Error response.
object
Example
{ "ok": false, "msg": "unknown error"}Headers
Section titled “Headers”IETF-draft combined rate-limit header for the current window: limit, remaining, and reset (seconds until the window resets). Sent on every response from a known endpoint.
Example
limit=60, remaining=59, reset=42Maximum requests allowed per client IP per window (60 requests per 60s).
Example
60Requests remaining in the current window before the limit is hit.
Example
59Seconds until the current window resets.
Example
42