Products

Custom TLDs

beta

Own 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

01
Win a TLD auction on Handshake

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" }
02
Register your TLD with xdns

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"
# }
03
Manage SLD registrations

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:

open

Anyone can register an SLD via the API (subject to rate limits).

allowlist

Only addresses/emails in the TLD allowlist can register SLDs.

closed

Only 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 response

API endpoints

POST/api/tldsRegister TLD with platform
GET/api/tlds/:tldGet TLD details + policy
GET/api/tlds/:tld/availability/:sldCheck SLD availability
POST/api/tlds/:tld/domainsRegister SLD
GET/api/tlds/:tld/domainsList registered SLDs
DELETE/api/tlds/:tld/domains/:sldDelete SLD
GET/api/tlds/:tld/analyticsResolution + registration stats
Traditional ICANN gTLDs

xdns 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.