Docs · API
Lists & tools
Everything besides the two main endpoints: bulk lists, domain diagnostics and embeddable assets.
Domains
Every domain of every listed site, one entry per domain. Sites in state former are omitted — the list describes the network as it stands, not as it stood.
true to keep only domains the Liorith Legal Center is responsible for.{
"entries": [
{
"domain": "demo.liorith.net",
"type": "canonical",
"isCanonical": true,
"site": {
"id": "demo",
"name": "Liorith Demo",
"status": "active",
"category": "SysTest",
"legal": true
},
"lastVerifiedAt": 1756799400000,
"lastStatus": "verified_signed"
}
]
}Legal scope
The domains the Liorith Legal Center is responsible for — and nothing else. Deliberately narrow: which domain, what it is for, and where the entry can be looked up.
Operating state is absent on purpose. Scope and status are different questions, and listing both together invites reading one as the other. For state, use /domains or /check.
{
"entries": [
{
"domain": "demo.liorith.net",
"category": "SysTest",
"check_url": "https://registry.liorith.net/check/demo.liorith.net"
}
],
"categories": ["SysTest", "..."],
"count": 1,
"generated_at": 1756800000000,
"notice": "This list names the domains the Liorith Legal Center is responsible for. ..."
}categories holds every category present in the legal scope, and stays the same when ?category= narrows entries. Use it to build a filter instead of hardcoding a list that will drift. Categories used only by sites outside the legal scope are absent, so every option returns at least one entry.Blocklist
Domains not accepted inside the Liorith Network, each with domain, reason and added. An entry records a decision about our own network — it is not a finding about the operator.
{
"entries": [
{ "domain": "example.invalid", "reason": "Imitates a Liorith property", "added": 1756000000000 }
]
}Statistics
{ "totalSites": 12, "totalDomains": 27, "totalBlocked": 3 }DNS
Live resolution of A, AAAA, MX, NS, TXT and CNAME. Each record type resolves independently, so a partial answer is normal — an empty array means that lookup returned nothing, not that the query failed.
{
"A": ["203.0.113.10"],
"AAAA": [],
"MX": [{ "exchange": "mail.example.com", "priority": 10 }],
"NS": ["ns1.example.com"],
"TXT": [["v=spf1 -all"]],
"CNAME": null
}WHOIS
Parsed registrar data, with boilerplate and legal notices stripped. This one depends on an upstream server: it is the slowest endpoint, the most likely to fail, and answers 502 when the upstream does not cooperate. Its rate limit is ten per minute.
Badge and widget
An SVG showing the entry state of a site, coloured by state and cached for five minutes. Drop it into a README or a page.
A small script that looks the domain up and renders a badge into an element with the id liorith-badge, isolated in a shadow root so your styles and its styles cannot collide.
<div id="liorith-badge"></div>
<script src="https://api.registry.liorith.net/widget?domain=example.com" async></script>mountBadge from the SDK.Health
status, uptime in seconds and ts. It reports that the API process is answering — it does not probe the database, so a healthy answer here is not a statement about the registry data.