Custom TLDs
betaOwn a top-level domain on Handshake. Manage it with xdns. Sell or assign second-level domains under your TLD programmatically.
Why Handshake?
Handshake (HNS) is a decentralized naming protocol where the root zone is a blockchain. Instead of paying ICANN $185,000+ for a traditional new gTLD, you bid HNS tokens in an on-chain auction. Winning grants you permanent, permissionless ownership of that TLD — no annual fees, no revocation risk, no central authority.
xdns bridges HNS-owned TLDs into the traditional DNS system: your TLD resolves in both HNS-native clients (Bob Wallet, HNSD) and legacy browsers via HNS-aware resolvers and gateways (NextDNS, Fingertip, HNSDoH).
Getting started
Use a Handshake-compatible wallet (Bob Wallet, Namebase) to bid on and win a TLD at auction. The winning bid locks HNS on-chain and grants you permanent, uncensorable ownership.
# Example: win the TLD "cool" on Handshake
# After winning, verify ownership:
curl https://xdns.wtf/api/hns/cool
# { "owner": "hs1q4abc...", "status": "available_for_registration" }Point your HNS TLD's nameservers at xdns and register it with the platform. xdns verifies ownership via the on-chain NS record.
curl -X POST https://xdns.wtf/api/tlds \
-H "Authorization: Bearer $TOKEN" \
-d '{
"tld": "cool",
"chain": "handshake",
"policy": "open"
}'
# {
# "tld": "cool",
# "nameservers": ["ns1.xdns.wtf", "ns2.xdns.wtf"],
# "status": "verifying"
# }Check availability and register second-level domains under your TLD. Optionally point each SLD to an origin or zone.
# Check availability
curl https://xdns.wtf/api/tlds/cool/availability/myapp
# { "available": true }
# Register an SLD
curl -X POST https://xdns.wtf/api/tlds/cool/domains \
-H "Authorization: Bearer $TOKEN" \
-d '{
"sld": "myapp",
"target": "https://myapp.vercel.app",
"registrant": "user@example.com",
"expires_at": "2027-03-13"
}'
# { "fqdn": "myapp.cool", "status": "active" }Registration policies
Control who can register SLDs under your TLD:
openAnyone can register an SLD via the API (subject to rate limits).
allowlistOnly addresses/emails in the TLD allowlist can register SLDs.
closedOnly the TLD owner can create SLD registrations.
How TLD resolution works
HNS client (Bob Wallet, HNSD)
→ queries HNS root zone on-chain
→ finds NS records: ns1.xdns.wtf, ns2.xdns.wtf
→ xdns nameservers serve the TLD zone
Legacy browser (no HNS support)
→ use NextDNS HNS resolver: 45.90.28.0
→ or Fingertip gateway: <sld>.<tld>.hns.to
→ or HNSDoH: https://hnsdoh.com/dns-query
xdns also provides a gateway:
→ https://xdns.wtf/gateway/<tld>/<sld>
resolves the SLD and proxies the responseAPI endpoints
/api/tldsRegister TLD with platform/api/tlds/:tldGet TLD details + policy/api/tlds/:tld/availability/:sldCheck SLD availability/api/tlds/:tld/domainsRegister SLD/api/tlds/:tld/domainsList registered SLDs/api/tlds/:tld/domains/:sldDelete SLD/api/tlds/:tld/analyticsResolution + registration statsxdns can also host zones for ICANN-delegated TLDs (if you're an accredited registry operator). The TLD management API is the same — only the ownership verification step differs. Contact us for ICANN registry onboarding.