ENS Resolver

Resolve an ENS name to an Ethereum address, or an address back to its ENS name. Look up an ENS name or an Ethereum address and get back the matching one, automatically figuring out which direction you need. Pay-per-call at $0.01 USDC over x402 on Base or Solana — no account, no API key. OpenAPI 3.1.0; 1 operation(s): POST /resolve.

OpenAPI Specification

done-ens-resolver-openapi.yml Raw ↑
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