isitdns API

isitdns API as documented publicly: 12 operations. Contract generated from the documentation by API Evangelist (2026-11-12); not the provider's own document.

GitHub OpenAPI

Operations 12

POST /api/check What eleven DNS checks found for a domain, or for the zone a hostname sits in #
GET /api/dnssec-chain DNSSEC chain #
GET /api/query Ask a public resolver, or any public address, for a record #
POST /api/query The same query as a JSON body #
GET /api/status For agents #
GET /api/sweep the zone's servers #
POST /api/sweep Ask each authoritative nameserver of a zone every name x type, recursion off, widen on evidence, and compare #
GET /api/trace delegation #
POST /api/trace Walk the delegation from the root, like dig +trace #
GET /cdn-cgi/trace GET /cdn-cgi/trace #
GET /dns-query GET /dns-query #
GET /root-anchors/root-anchors.xml GET /root-anchors/root-anchors.xml #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/isitdns-net:isitdns-net-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

isitdns-net-openapi-generated.yml Raw ↑
openapi: 3.1.0
info:
  title: isitdns API
  version: '2026-11-12'
  description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-11-12: 12 operation(s) read from 9 public documentation page(s) (each operation
    names its page in x-source). This is not the provider''s published contract; isitdns has published no machine-readable contract that the pipeline
    could find. Engine: local.'
  x-evidence-tiers:
    code-example: 3
    documentation: 9
    pages-with-code: 9
    pages-read: 9
  x-generated-from: documentation
  x-provenance: generated
  x-authored-by: API Evangelist
  x-generated: '2026-11-12'
  x-generator: generate-contract-from-docs.py
  x-engine: local
  x-sources:
  - https://isitdns.net/api/openapi.json
  - https://isitdns.net/wiki/security/ksk-roll-2026-reference
  - https://isitdns.net/wiki/dig/dig-examples
  - https://isitdns.net/wiki/reference/outlook-2026-11-12
  - https://isitdns.net/wiki/security/dnssec-troubleshooting
  - https://isitdns.net/wiki/security/dot-doh
  - https://isitdns.net/wiki/security/ddns
  - https://isitdns.net/wiki/security/extended-dns-errors
  - https://isitdns.net/agents
paths:
  /api/check:
    post:
      operationId: post_api_check
      tags:
      - Api
      summary: What eleven DNS checks found for a domain, or for the zone a hostname sits in
      x-source: https://isitdns.net/api/openapi.json
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiCheckRequest'
      responses:
        '201':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiCheckResponse'
      x-evidence:
        kind: documentation
  /api/dnssec-chain:
    get:
      operationId: get_api_dnssec_chain
      tags:
      - Api
      summary: DNSSEC chain
      description: Retrieve the DNSSEC chain for a given name.
      x-source: https://isitdns.net/wiki/reference/outlook-2026-11-12
      parameters:
      - name: name
        in: query
        required: true
        schema:
          type: string
        description: The DNS name to retrieve DNSSEC chain for.
      - name: type
        in: query
        required: true
        schema:
          type: string
        description: The DNS record type.
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/query:
    get:
      operationId: get_api_query
      tags:
      - Api
      summary: Ask a public resolver, or any public address, for a record
      x-source: https://isitdns.net/api/openapi.json
      parameters:
      - name: name
        in: query
        required: true
        schema:
          type: string
      - name: type
        in: query
        required: false
        schema:
          type: string
        description: Record type, e.g. A, MX, TXT, DS, HTTPS, or TYPE<n>
      - name: resolver
        in: query
        required: false
        schema:
          type: string
        description: A board resolver id (cloudflare, google, quad9, opendns, adguard, ...), its address or host name (8.8.8.8, dns.google), "all"
          for cloudflare, google, quad9 and adguard side by side, or any public IP address. With "all", a row the requested transport cannot reach
          is asked over one it can (tcp53, dot, doh), and transportUsed names it; over udp53 such a row is not asked.
      - name: ip
        in: query
        required: false
        schema:
          type: string
        description: Up to 6 public addresses, comma separated, asked in place of resolver.
      - name: transport
        in: query
        required: false
        schema:
          type: string
        description: doh, dot and tcp53 are asked from the edge; udp53 from a probe, theoracle (Phoenix) unless from names a region
      - name: dnssec
        in: query
        required: false
        schema:
          type: boolean
        description: Set DO and read AD; dnssec=0 turns it off
      - name: cd
        in: query
        required: false
        schema:
          type: boolean
        description: Set CD (checking disabled)
      - name: ecs
        in: query
        required: false
        schema:
          type: string
        description: EDNS Client Subnet, CIDR, e.g. 192.0.2.0/24
      - name: norec
        in: query
        required: false
        schema:
          type: boolean
        description: Clear RD, like dig +norec
      - name: nsid
        in: query
        required: false
        schema:
          type: boolean
      - name: family
        in: query
        required: false
        schema:
          type: string
        description: 'Address family dialled over dot, tcp53 and udp53 (both: a row per family the resolver has an address in); over DoH the family
          is not chosen'
      - name: from
        in: query
        required: false
        schema:
          type: string
        description: 'Ask over Do53/UDP from the probe in this region (no other transport): north-america is theoracle (Phoenix), europe is thewizard
          (Amsterdam)'
      - name: follow
        in: query
        required: false
        schema:
          type: boolean
        description: 'Also walk the CNAME chain from the name, hop by hop, to its addresses: each hop asked for CNAME at Cloudflare''s DoH from
          the edge. The chain is the response''s follow, beside results; the text form prints it after the dig. Nothing is walked for a refused
          name.'
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApiQueryResponse'
      x-evidence:
        kind: documentation
    post:
      operationId: post_api_query
      tags:
      - Api
      summary: The same query as a JSON body
      x-source: https://isitdns.net/api/openapi.json
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiQueryRequest'
      responses:
        '201':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiQueryResponse'
      x-evidence:
        kind: documentation
  /api/status:
    get:
      operationId: get_api_status
      tags:
      - Api
      summary: For agents
      x-source: https://isitdns.net/agents
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/sweep:
    get:
      operationId: get_api_sweep
      tags:
      - Api
      summary: the zone's servers
      description: Sweep zone servers for specified names and record types.
      x-source: https://isitdns.net/wiki/reference/outlook-2026-11-12
      parameters:
      - name: domain
        in: query
        required: true
        schema:
          type: string
        description: Domain to sweep.
      - name: names
        in: query
        required: true
        schema:
          type: string
        description: Comma‑separated list of name prefixes (URL‑encoded).
      - name: types
        in: query
        required: true
        schema:
          type: string
        description: Comma‑separated list of DNS record types to query (URL‑encoded).
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
    post:
      operationId: post_api_sweep
      tags:
      - Api
      summary: Ask each authoritative nameserver of a zone every name x type, recursion off, widen on evidence, and compare
      x-source: https://isitdns.net/api/openapi.json
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiSweepRequest'
      responses:
        '201':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiSweepResponse'
      x-evidence:
        kind: documentation
  /api/trace:
    get:
      operationId: get_api_trace
      tags:
      - Api
      summary: delegation
      description: Trace DNS delegation for a name.
      x-source: https://isitdns.net/wiki/reference/outlook-2026-11-12
      parameters:
      - name: name
        in: query
        required: true
        schema:
          type: string
        description: The DNS name to trace.
      - name: type
        in: query
        required: true
        schema:
          type: string
        description: The DNS record type.
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
    post:
      operationId: post_api_trace
      tags:
      - Api
      summary: Walk the delegation from the root, like dig +trace
      x-source: https://isitdns.net/api/openapi.json
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiTraceRequest'
      responses:
        '201':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiTraceResponse'
      x-evidence:
        kind: documentation
  /cdn-cgi/trace:
    get:
      operationId: get_cdn_cgi_trace
      tags:
      - Cdn Cgi
      summary: GET /cdn-cgi/trace
      x-source: https://isitdns.net/wiki/security/ddns
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -s https://cloudflare.com/cdn-cgi/trace , or your router's WAN status page). If they don't match, the client didn't run\
          \ or its last update failed. Providers that expose a DNS API update the record with one call, for example Cloudflare's PATCH DNS record\
          \ endpoint against a zone-scoped token. \n Things that go wrong # \n Stale record. The client missed an update (crashed, offline, expired\
          \ credent"
  /dns-query:
    get:
      operationId: get_dns_query
      tags:
      - Dns Query
      summary: GET /dns-query
      x-source: https://isitdns.net/wiki/dig/dig-examples
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -s -H 'accept: application/dns-json'  'https://cloudflare-dns.com/dns-query?name= not-a-real-website.example &type= A '\
          \ \n copy {\n \"Status\": 3,\n \"AD\": true,\n \"Question\": [{\"name\": \" not-a-real-website.example \", \"type\": 1}],\n \"Authority\"\
          : [{\"name\": \"\", \"type\": 6, \"TTL\": 86400,\n \"data\": \" a.root-servers.net. nstld.verisign-grs.com. 2026090200 1800 900 604800\
          \ 86400\"}]\n} \n \"Status\": 3 is NXDOMAIN"
  /root-anchors/root-anchors.xml:
    get:
      operationId: get_root_anchors_root_anchors_xml
      tags:
      - Root Anchors
      summary: GET /root-anchors/root-anchors.xml
      x-source: https://isitdns.net/wiki/security/ksk-roll-2026-reference
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -s https://data.iana.org/root-anchors/root-anchors.xml \n copy <KeyDigest id=\"Klajeyz\" validFrom=\"2017-02-02T00:00:00+00:00\"\
          >\n <KeyTag> 20326 </KeyTag>\n ...\n<KeyDigest id=\"Kmyv6jo\" validFrom=\"2024-07-18T00:00:00+00:00\">\n <KeyTag> 38696 </KeyTag>\n\
          \ ... \n Your resolver must trust 38696 , which has signed the root alone since 2026-10-11. The root still publishes both keys; the\
          \ two with flags 257 a"
components:
  schemas:
    PostApiCheckRequest:
      type: object
      properties:
        name:
          type: string
        from:
          type: string
      required:
      - name
    PostApiCheckResponse:
      type: object
      properties:
        '200':
          type: string
          description: Each check with what it found
    GetApiQueryResponse:
      type: object
      properties:
        '200':
          type: string
          description: The answer from each resolver asked
        '400':
          type: string
          description: The name, type, transport or an address did not validate
        '429':
          type: string
          description: Rate limited
    PostApiQueryRequest:
      type: object
      properties:
        name:
          type: string
        type:
          type: string
        resolver:
          type: string
        ip:
          type: string
        transport:
          type: string
        dnssec:
          type: boolean
        cd:
          type: boolean
        ecs:
          type: string
        norec:
          type: boolean
        nsid:
          type: boolean
        family:
          type: string
        from:
          type: string
        follow:
          type: boolean
      required:
      - name
    PostApiQueryResponse:
      type: object
      properties:
        '200':
          type: string
          description: 'See GET. JSON, or the same dig-shaped text when this request states Accept: text/plain.'
    PostApiSweepRequest:
      type: object
      properties:
        domain:
          type: string
        names:
          type: string
        types:
          type: string
      required:
      - domain
    PostApiSweepResponse:
      type: object
      properties:
        '200':
          type: string
          description: Each asked address's answer per name and type (an address never asked reads not_asked), the addresses not asked and the
            questions not widened, the flags where they differ, the parent's NS and DS, certificate readiness, and the vantage.
    PostApiTraceRequest:
      type: object
      properties:
        name:
          type: string
        type:
          type: string
      required:
      - name
    PostApiTraceResponse:
      type: object
      properties:
        '200':
          type: string
          description: Every hop, root to authority, with the final answer
tags:
- name: Api
- name: Cdn Cgi
- name: Dns Query
- name: Root Anchors