---
title: "What eleven DNS checks found for a domain, or for the zone a hostname sits in"
method: POST
path: "/api/check"
---

# What eleven DNS checks found for a domain, or for the zone a hostname sits in

`POST /api/check`

## Request

- Base URL: `https://isitdns.net`
- URL: `https://isitdns.net/api/check`
- Auth: none declared

Finds the authoritative servers with a walk from the root, then runs eleven checks against them: NS consistency, open recursion, DNSSEC, TTLs, SPF, DMARC, CAA, wildcard, glue, DS against DNSKEY and UDP truncation. Each row says what it found, with the receipts it rests on; there is no score. resolves says first whether the name resolves in public DNS.

## Request body

- object
  - `name` string, required
  - `from` 'north-america' | 'europe': Region of the probe for the recursion, TTL and UDP truncation rows

## Response `200`

Each check with what it found

- CheckResult: What each check found. There is no score and no letter grade.
  - `resolves` object, required: Whether the name resolves, as the audit's reads of the name came back: the line check_domain prints first
    - `state` 'resolves' | 'split' | 'alias' | 'no address' | 'NXDOMAIN' | 'lame' | 'no answer' | 'error' | 'mixed' | 'not read', required
    - `line` string, required
    - `receipts` string[], required: The ids of the receipts the line rests on
    - `asked` string[], required: The ids of the reads made for this line alone, each asked or NOT ASKED with its reason
  - `domain` string, required: The name that was asked about.
  - `generatedAt` string, required
  - `summary` object, required: The count of rows by status (ok, warn, fail, skip), and resolves: the state of the first line, the same word as resolves.state
    - `ok` integer, required
    - `warn` integer, required
    - `fail` integer, required
    - `skip` integer, required
    - `resolves` 'resolves' | 'split' | 'alias' | 'no address' | 'NXDOMAIN' | 'lame' | 'no answer' | 'error' | 'mixed' | 'not read', required
  - `checks` object[], required
    - `id` string
    - `label` string
    - `status` 'ok' | 'warn' | 'fail' | 'skip'
    - `detail` string
    - `source` 'auth' | 'doh': auth = asked the authoritative server; doh = asked 1.1.1.1 over DoH.
    - `subject` string: The name this check asked about, present only when it is not `domain`: a zone check of a hostname is read at its zone.
    - `next` object[]: The one reading to take next, present only on a warn or fail row that has one: tool (trace, dnssec_chain or sweep_domain), args (that tool's call) and command (the dig-shaped line the texts print as next:).
      - `tool` 'dig' | 'trace' | 'dnssec_chain' | 'sweep_domain' | 'check_domain', required
      - `args` object, required
      - `command` string, required
  - `zone` string: The zone that holds `domain` (the deepest delegation at or above it), present only when it is not `domain`. Absent for a registrable domain, and absent when that zone was not read, in which case each check about the zone says so. When present, the answer mixes checks about this zone with checks about the name itself, and each check says which it is.

---

[API](https://skmtc.dev/isitdns/apis/is-it-dns-api.md) · [All operations](https://skmtc.dev/isitdns/apis/is-it-dns-api/llms.txt) · [OpenAPI document](https://skmtc.dev/isitdns/apis/is-it-dns-api/revisions/d5257837c67b?raw)
