Docs · Reference
Status codes
Three states for a lookup, fourteen results for a proof. Every one of them arrives with HTTP 200 - the codes below it mean no result was produced.
Lookup states
Returned by /check in the status field, alongside the booleans registered and blocked.
site. Check site.status before treating that entry as current.Proof results
Returned by /verify in the result field. Exactly two of them mean the request is genuine.
deprecated - recognised and on its way out. Accept it if you accept the site at all, and expect it to disappear.Refused before the signature
These are decided before any cryptography runs, so they say nothing about whether the signature was good.
ts is not a number. The request never became a proof.former - the registry keeps it for the record but no longer recognises it.Refused at or after the signature
host_mismatch is a valid signature on the wrong host, not a broken one. It usually means the proof was copied onto a domain that is not registered for that site - treat it as a refusal, not as a configuration warning to ignore.Handling them
Accept two values, refuse the rest. Do not build a list of failures to tolerate - a new result added later would then default to accepted.
const ACCEPTED = new Set(['verified_signed', 'valid_deprecated']);
if (!ACCEPTED.has(result.result)) {
// Alles andere ist eine Ablehnung, auch ein unbekannter neuer Wert.
return refuse(result.result);
}Transport codes
These are the complete set of non-200 responses. Each one says the request failed on the way and no registry outcome was produced - retry or fix the request, but never read one as an answer about a domain.
domain on a lookup, for instance.Retry-After, in seconds./whois: the upstream server did not answer usefully./verify: replay protection is unavailable, so no result is issued at all.The deprecated vocabulary
/check still returns a result field with the old names. They were retired because they were read as claims they never made: verified_registry sounded cryptographically checked when it only meant listed, and unknown sounded like the domain did not exist.