Docs · API
Domain lookup
One request, one domain, one unambiguous state — plus a sentence you can quote and the limits of that sentence.
Endpoint
GET/check?domain=example.com
domainrequiredstringThe domain to look up. A scheme and a trailing slash are stripped, and the value is lower-cased, so
https://Example.com/ works.Missing or empty domain answers 400. That is a malformed request, not a registry outcome.
Response
statusstring
registered, not_registered or blocked. Branch on this.registeredbooleanIs the domain on file?
blockedbooleanIs the domain on the blocklist?
proof_checkedfalseAlways false here. This endpoint verifies no signature — it is a lookup.
summarystringOne sentence stating the result and its limits, safe to quote verbatim.
does_not_implystring[]What explicitly does not follow from this answer. Written for readers who would otherwise over-read the result.
domainstringThe normalised domain that was looked up.
check_urlstringHuman-readable page showing the same result.
checked_atnumberUnix milliseconds at which the answer was produced.
siteobject | undefinedPresent only when
status is registered. See below.last_verified_atnumber | nullWhen this site last completed a proof verification. Null if never, or if not registered.
last_statusstring | nullResult of that last proof verification.
resultstringDeprecated. The old vocabulary (
verified_registry, unknown, blacklisted), kept so existing clients keep working. Do not branch on it in new code.The site object
idstringStable site identifier, also used when signing proofs.
namestringDisplay name recorded for this entry. It names the entry, not a verified legal or operating identity.
canonical_domainstringThe domain this site wants to be known by.
match_type'exact' | 'subdomain'Whether the queried domain is the entry itself or a subdomain of it.
statusstringEntry state —
active, deprecated, inactive, suspended or former.categorystringWhat the site is for.
legalbooleanWhether the Liorith Legal Center is responsible for this domain.
States
registered — acceptedThe domain is on file. Read
site.status before treating the entry as current — a suspended site is registered too.not_registered — neutralNo entry. This says nothing about the domain itself; the registry only lists Liorith properties and network members.
blocked — rejectedOn the blocklist. Checked before any entry, so it wins over a registration. Liorith does not stand behind this domain.
Example
Not registeredjson
{
"status": "not_registered",
"result": "unknown",
"domain": "example.com",
"check_url": "https://registry.liorith.net/check/example.com",
"checked_at": 1756800000000,
"registered": false,
"blocked": false,
"proof_checked": false,
"summary": "example.com ist in der Liorith Registry nicht eingetragen. ...",
"does_not_imply": [
"Es bedeutet nicht, dass die Domain nicht existiert oder nicht erreichbar ist.",
"..."
],
"last_verified_at": null,
"last_status": null
}Branch on
status or on the booleans, never on the text. summary and does_not_imply are written for people and for language models to quote — their wording is allowed to change.