Decentralized DNS
alphaOne API to resolve and manage names across ENS, Handshake, IPFS, and Unstoppable Domains. Bridge decentralized namespaces into traditional DNS — and vice versa.
Universal resolver
The /api/resolve/:name endpoint auto-detects the protocol and resolves any supported name:
# ENS (.eth suffix → Ethereum mainnet)
GET /api/resolve/vitalik.eth
# Handshake (HNS-registered TLD)
GET /api/resolve/myapp.cool
# Unstoppable Domains (.crypto, .nft, .x, .wallet)
GET /api/resolve/myapp.crypto
# IPFS CID (CIDv0 or CIDv1)
GET /api/resolve/QmXoypiz...
# IPNS key
GET /api/resolve/k51qzi5uqu5dlvj2baxnqndepeb86cbk3ng6n49571agfuxmf1xa1qfnrku88dSupported protocols
.ethHuman-readable names (.eth) that resolve to Ethereum addresses, content hashes, IPFS CIDs, and arbitrary text records. The most widely adopted decentralized naming system.
GET /api/resolve/vitalik.eth
{
"protocol": "ens",
"name": "vitalik.eth",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"contenthash": "ipfs://QmXoypiz...",
"text": {
"email": "vitalik@ethereum.org",
"url": "https://vitalik.ca",
"twitter": "@VitalikButerin"
}
}Any TLD you win at auctionA decentralized root zone where TLD ownership is secured on-chain. No ICANN, no registrar lock-in. Win a TLD auction and own it permanently with no annual fees.
GET /api/resolve/myapp.cool
{
"protocol": "handshake",
"tld": "cool",
"sld": "myapp",
"owner": "hs1q4abc...",
"ns": ["ns1.xdns.wtf", "ns2.xdns.wtf"],
"a": ["93.184.216.34"],
"txt": ["v=spf1 include:xdns.wtf ~all"]
}CIDv1IPNS keysContent-addressed storage and retrieval. Link any domain to an IPFS CID for decentralized, censorship-resistant hosting. IPNS keys provide mutable pointers.
# Link a domain to IPFS content
POST /api/ipfs/link
{
"domain": "mysite.eth",
"cid": "QmXoypiz...",
"type": "ipfs"
}
# Resolve a CID to a gateway URL
GET /api/ipfs/resolve/QmXoypiz...
{
"cid": "QmXoypiz...",
"gateway": "https://ipfs.io/ipfs/QmXoypiz...",
"size_bytes": 142891
}.crypto.nft.x.wallet.blockchainNFT-based domains on Polygon. Resolve to crypto addresses, IPFS content, URLs, and social handles. Permanent ownership — no renewal fees.
GET /api/resolve/myapp.crypto
{
"protocol": "unstoppable",
"name": "myapp.crypto",
"records": {
"crypto.ETH.address": "0x4a...f2",
"crypto.BTC.address": "bc1q...",
"ipfs.html.value": "QmXoypiz...",
"social.twitter.username": "myapp"
}
}Write operations
xdns is read-only for ENS and Unstoppable Domains — we never hold private keys. To update ENS records, use the ENS app or sign a transaction from your own wallet and broadcast it via our helper:
# Build an ENS setContenthash transaction (unsigned)
POST /api/ens/build-tx
{
"name": "mysite.eth",
"operation": "setContenthash",
"value": "ipfs://QmXoypiz..."
}
# Returns the unsigned transaction — sign with your wallet and broadcast
# { "to": "0x...", "data": "0x...", "chainId": 1 }For Handshake TLDs you own via xdns, write operations (adding SLDs, updating records) go through the standard /api/tlds API.
API endpoints
/api/resolve/:nameUniversal resolver (auto-detect protocol)/api/ens/:nameResolve ENS name (address + records)/api/ens/lookupBatch ENS resolution (up to 20)/api/ens/build-txBuild unsigned ENS update transaction/api/hns/:tldGet HNS TLD info + owner/api/hns/:tld/:sldResolve HNS second-level domain/api/ipfs/linkLink domain to IPFS CID or IPNS key/api/ipfs/resolve/:cidResolve CID to gateway URL + metadata/api/ud/:nameResolve Unstoppable Domains nameDecentralized names don't resolve in standard browsers by default. xdns provides a gateway at xdns.wtf/gateway/:protocol/:name that resolves and proxies content — allowing any browser to access decentralized sites without installing special software. For native resolution, recommend users install NextDNS with HNS enabled or the Fingertip browser extension.