params, body and response schemas, and the OpenAPI document is emitted from those. A route
that changes shape changes this reference in the same commit.
Base URL
Conventions
Errors are always the same shape
Errors are always the same shape
code. message is written for a person to read and may be reworded without notice.
docsUrl resolves to the entry on this site.Outcomes are tagged unions
Outcomes are tagged unions
A field that can be one of several shapes always carries a discriminant —
step on a zone
frame, code on a diagnosis, reason on a wait estimate. There is no shape where a value you
should not read is merely undefined; if you can reach it, it is there.Timestamps are ISO 8601, UTC
Timestamps are ISO 8601, UTC
"2026-08-24T12:00:00.000Z". Durations are integer seconds in a field named …Seconds, or
integer minutes in a field named …Minutes.Nullable means known-to-be-absent
Nullable means known-to-be-absent
diagnosis: null means the check ran and found nothing wrong, not that nothing is known.
Fields are present and null rather than omitted.Rate limits
Enforced at the edge, per IP, on the two public surfaces:
Over the limit you get
429 with rate_limited and a Retry-After
header in seconds.
POST /api/verifications/:id/runs is limited per verification as well as per account, because
forcing runs in a loop does not make DNS answer faster.
Stability
The API is internal today — same origin, session cookie, no public keys. This reference
documents it in full because the shape it has now is the shape it will have when it opens.
- Error
codevalues, and diagnosiscodevalues. These are identifiers and will not be reworded. - The
recordsblock on a claim, and the immutability oftokenacross the lifecycle. - The event names on the zone stream (
delegation,publishing).
messagestrings, and thecause/fixsentences on a diagnosis. They are product copy and are improved regularly. Render them; do not match on them.- The absolute set of endpoints. New ones are added; existing shapes are not silently changed.