Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

GET /resolve/

Resolve a name to all its on-chain records.

Request

GET /resolve/kyy.web3

Response

{
  "name": "kyy.web3",
  "node": "0xf7d7c4fb47297d0f2106ac50d24c93063bc0fe50d559ed65e99edb91cc86f8a2",
  "owner": "0x11702b8ef5f882191af862a7e27096c44a5e2b37",
  "resolver": "0xe951ce73da1d75730e56df79844bfa745fa589d3",
  "expiresAt": "1808715608",
  "expired": false,
  "addresses": {
    "60": "0x11702b8ef5f882191af862a7e27096c44a5e2b37",
    "501": "7xKb3n36GAJ5jG5aG9Q8p6H3r4Y2Z1WjK9nLcXdE5gTf",
    "0": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh"
  },
  "texts": {
    "twitter": "@kyy"
  },
  "contenthash": null
}

Fields

FieldTypeDescription
namestringFull name with TLD
nodestringENSIP-1 namehash (bytes32 hex)
ownerstringCurrent owner address
resolverstring | nullResolver contract address
expiresAtstringUnix timestamp of expiry
expiredbooleanWhether the name is expired
addressesRecord<string, string>SLIP-0044 coin type → human-readable address. ETH (coinType 60) is a checksummed hex address; all other chains (SOL 501, BTC 0, SUI 784, BNB 714) are their native string format (base58, bech32, etc.)
textsRecord<string, string>Text record key → value map
contenthashstring | nullRaw contenthash hex

Address encoding

On-chain, all addresses are stored as raw bytes in PublicResolver.setAddr(). The indexer decodes them before serving:

  • ETH (coinType 60): 20-byte EVM address → returned as 0x-prefixed hex
  • All other chains: bytes decoded as UTF-8 → returned as the original human-readable string (Solana base58, Bitcoin bech32, etc.)

Errors

StatusBodyReason
400{ "error": "Invalid name format. Expected label.tld" }Malformed name
404{ "error": "Name not found" }Name not registered or indexed
429{ "error": "Rate limit exceeded" }Too many requests