Donutwork Docs

DNS

Resolve DNS records across multiple resolvers and inspect lookup capabilities.

DNS API

Use DNS endpoints for diagnostic and propagation checks across public resolvers.

DNS Capabilities

GET
/2026-02-01/dns/capabilities.json
Required permissiondns:readApiAccessPermission::DNS_READ

Query Parameters

No query parameters required.

Responses

Supported record types, default record types, and resolver catalog.

{
  "recordTypes": [
    "A",
    "AAAA",
    "CNAME",
    "TXT",
    "MX",
    "NS",
    "SOA",
    "CAA",
    "SRV"
  ],
  "defaultRecordTypes": [
    "A",
    "AAAA",
    "CNAME",
    "TXT"
  ],
  "resolvers": [
    {
      "id": "cloudflare_primary",
      "label": "Cloudflare (1.1.1.1)",
      "server": "1.1.1.1"
    },
    {
      "id": "google_primary",
      "label": "Google (8.8.8.8)",
      "server": "8.8.8.8"
    }
  ]
}

DNS Lookup (GET)

GET
/2026-02-01/dns/lookup.json
Required permissiondns:readApiAccessPermission::DNS_READ

Query Parameters

targetstringRequired
Hostname or IP to resolve.
recordTypesarray|string
Record types list (for example A, MX, TXT).
resolverPresetarray|string
Resolver preset filter.
customResolversstring
Space/comma separated custom resolvers.

Responses

DNS lookup completed.

{
  "target": "example.com",
  "generated_at": "2026-04-15T10:00:00+00:00",
  "recordTypes": [
    "A",
    "AAAA"
  ],
  "resolver_count": 2,
  "resolvers": [
    {
      "id": "cloudflare_primary",
      "label": "Cloudflare (1.1.1.1)",
      "server": "1.1.1.1"
    },
    {
      "id": "google_primary",
      "label": "Google (8.8.8.8)",
      "server": "8.8.8.8"
    }
  ],
  "propagation": {
    "A": {
      "is_consistent": true,
      "distinct_statuses": 1,
      "distinct_answers": 1
    }
  },
  "queries": {
    "A": [
      {
        "resolver_label": "Cloudflare (1.1.1.1)",
        "resolver": "1.1.1.1",
        "record_type": "A",
        "status": "NOERROR",
        "server": "1.1.1.1#53",
        "query_time_ms": 12,
        "answers": [
          {
            "name": "example.com.",
            "ttl": 300,
            "class": "IN",
            "type": "A",
            "value": "93.184.216.34"
          }
        ],
        "answer_signature": "A|93.184.216.34",
        "error": null
      }
    ]
  }
}

Invalid or missing target.

{
  "error": "target is required"
}

DNS Lookup (POST)

POST
/2026-02-01/dns/lookup.json
Required permissiondns:writeApiAccessPermission::DNS_WRITE

Query Parameters

No query parameters required.

Request Body

JSON
{
  "target": "example.com",
  "recordTypes": [
    "A",
    "AAAA"
  ],
  "resolverPreset": [
    "public"
  ],
  "customResolvers": "1.1.1.1 8.8.8.8",
  "resolvers": [
    "9.9.9.9"
  ]
}
targetstringRequired
Hostname or IP to resolve.
recordTypesarray|string
Record types list (for example A, MX, TXT).
resolverPresetarray|string
Resolver preset filter.
customResolversstring
Space/comma separated custom resolvers.
resolversarray
Additional custom resolver list.

Responses

DNS lookup completed.

{
  "target": "example.com",
  "generated_at": "2026-04-15T10:00:00+00:00",
  "recordTypes": [
    "A",
    "AAAA"
  ],
  "resolver_count": 2,
  "resolvers": [
    {
      "id": "cloudflare_primary",
      "label": "Cloudflare (1.1.1.1)",
      "server": "1.1.1.1"
    },
    {
      "id": "google_primary",
      "label": "Google (8.8.8.8)",
      "server": "8.8.8.8"
    }
  ],
  "propagation": {
    "A": {
      "is_consistent": true,
      "distinct_statuses": 1,
      "distinct_answers": 1
    }
  },
  "queries": {
    "A": [
      {
        "resolver_label": "Cloudflare (1.1.1.1)",
        "resolver": "1.1.1.1",
        "record_type": "A",
        "status": "NOERROR",
        "server": "1.1.1.1#53",
        "query_time_ms": 12,
        "answers": [
          {
            "name": "example.com.",
            "ttl": 300,
            "class": "IN",
            "type": "A",
            "value": "93.184.216.34"
          }
        ],
        "answer_signature": "A|93.184.216.34",
        "error": null
      }
    ]
  }
}

On this page