{"openapi":"3.1.0","info":{"title":"ENS Resolver","description":"Look up an ENS name or an Ethereum address and get back the matching one, automatically figuring out which direction you need.","version":"1.0.0","contact":{"name":"_done","url":"https://forms.gle/5KzuSFH7p8hHtDmz7","email":"info@underscoredone.com"},"x-openapi-url":"https://ens-resolver.underscoredone.com/openapi.json","x-logo":{"url":"https://underscoredone.com/logo.png","altText":"_done"},"x-guidance":"Send the query field with either an ENS name ending in .eth or a 0x Ethereum address. The service auto-detects direction: names resolve forward to addresses, addresses resolve backward to their primary ENS name. If nothing is found, resolved will be false and address or name may be null, but this is not an error. Only malformed input causes a 400 error.","x-ai-instructions":"Send the query field with either an ENS name ending in .eth or a 0x Ethereum address. The service auto-detects direction: names resolve forward to addresses, addresses resolve backward to their primary ENS name. If nothing is found, resolved will be false and address or name may be null, but this is not an error. Only malformed input causes a 400 error.","x-provider":"_done — single-purpose utility APIs for developers and AI agents. Pay per call with USDC on Base Mainnet or Solana Mainnet.","x-pricing":{"model":"pay-per-call","currency":"USDC","network":"Base Mainnet or Solana Mainnet","price":"$0.01"},"x-keywords":["network","ens","resolver","ethereum","wallet address","ens name lookup","blockchain identity","reverse resolve","utility","api","ai-agent","pay-per-call","usdc","x402"],"x-category":"ens","x-provider-url":"https://underscoredone.com","x-agentcash-auth":{"mode":"paid"},"x-402":{"price":"$0.01","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","pay_to":"0xE9740820225B3918b4ddd1292C7cA4Ca0e2C2F08","facilitator":"https://api.cdp.coinbase.com/platform/v2/x402","scheme":"exact","description":"Look up an ENS name or an Ethereum address and get back the matching one, automatically figuring out which direction you need.","mime_type":"application/json","networks":[{"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","pay_to":"0xE9740820225B3918b4ddd1292C7cA4Ca0e2C2F08"},{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","pay_to":"8ugAWAXDB8V18kiUrGZTq1oMvU3C6Fxs8hfC6rvzQT3b"}]}},"paths":{"/resolve":{"post":{"tags":["ens","ens resolver","ethereum name service","resolve ens name","ens to address","address to ens",".eth domain","ens lookup","reverse ens","onchain identity","web3 identity","wallet name lookup","ethereum address name","name resolution"],"summary":"Look up an ENS name or address and get back the matching one.","description":"Look up an ENS name or address. Send a name like vitalik.eth to get its address, or send an address starting with 0x to get its friendly name, if it has one. If nothing matches, resolved will simply be false rather than an error.","operationId":"handler_resolve_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Request"}}},"required":true},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"},"examples":{"success":{"summary":"Successful response","value":{"api_version":"1.0.0"}}}}}},"422":{"description":"Unprocessable — a required field is missing or the wrong type. Check the detail field for specifics.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"array"}}}}}},"402":{"description":"Payment required. Send a signed USDC payment on Base Mainnet or Solana Mainnet using the x402 protocol.","headers":{"X-Payment-Response":{"description":"x402 payment challenge — base64-encoded JSON with payment details.","schema":{"type":"string"}}}},"400":{"description":"Bad request — your input failed validation or could not be processed. Check the detail field for specifics.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}}}}}},"x-ai-instructions":"Send the query field with either an ENS name ending in .eth or a 0x Ethereum address. The service auto-detects direction: names resolve forward to addresses, addresses resolve backward to their primary ENS name. If nothing is found, resolved will be false and address or name may be null, but this is not an error. Only malformed input causes a 400 error.","x-guidance":"Send the query field with either an ENS name ending in .eth or a 0x Ethereum address. The service auto-detects direction: names resolve forward to addresses, addresses resolve backward to their primary ENS name. If nothing is found, resolved will be false and address or name may be null, but this is not an error. Only malformed input causes a 400 error.","x-payment-info":{"price":{"fixed":{"mode":"fixed","currency":"USD","amount":"0.01"}},"protocols":[{"x402":{}}]}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"Request":{"properties":{"query":{"type":"string","title":"Query","description":"An ENS name like vitalik.eth, or an Ethereum address starting with 0x. The service automatically figures out which one you gave it."}},"type":"object","required":["query"],"title":"Request","example":{"query":"vitalik.eth"}},"Response":{"properties":{"api_version":{"type":"string","title":"Api Version","description":"The version of this service that produced the answer.","default":"1.0.0"},"query":{"type":"string","title":"Query","description":"The exact text you sent in, cleaned of extra spaces."},"direction":{"type":"string","title":"Direction","description":"Which way the lookup went: forward means a name was turned into an address, reverse means an address was turned into a name."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"The ENS name that was found, or empty if none was found."},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address","description":"The Ethereum address that was found, or empty if none was found."},"resolved":{"type":"boolean","title":"Resolved","description":"True if a matching name or address was found, false if nothing was found."}},"type":"object","required":["query","direction","resolved"],"title":"Response","example":{"address":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045","api_version":"1.0.0","direction":"forward","name":"vitalik.eth","query":"vitalik.eth","resolved":true}},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"siwx":{"type":"apiKey","in":"header","name":"SIGN-IN-WITH-X","description":"CAIP-122 wallet signature for repeat access after payment"}}},"servers":[{"url":"https://ens-resolver.underscoredone.com","description":"Production"}],"tags":[{"name":"ens"},{"name":"ens resolver"},{"name":"ethereum name service"},{"name":"resolve ens name"},{"name":"ens to address"},{"name":"address to ens"},{"name":".eth domain"},{"name":"ens lookup"},{"name":"reverse ens"},{"name":"onchain identity"},{"name":"web3 identity"},{"name":"wallet name lookup"},{"name":"ethereum address name"},{"name":"name resolution"}],"x402Version":2,"x-payment-accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0xE9740820225B3918b4ddd1292C7cA4Ca0e2C2F08","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","payTo":"8ugAWAXDB8V18kiUrGZTq1oMvU3C6Fxs8hfC6rvzQT3b","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"}]}