# ENS Resolver API
> Live Ethereum Name Service resolution — the phone book of web3, no key, nothing cached. It turns a human .eth name into the wallet address behind it and back again, and reads the on-chain profile records the owner has set. The resolve endpoint takes a name like vitalik.eth and returns the Ethereum address, the avatar, the primary-name flag, the resolver contract, the content hash (for decentralised websites) and every text record the owner published — Twitter, GitHub, Reddit, Discord, Telegram, email, website and description — plus any multi-chain wallet addresses: vitalik.eth resolves to 0xd8dA…96045 with Twitter @VitalikButerin and GitHub vbuterin. The reverse endpoint does the opposite — give it any Ethereum address and it returns that address's primary ENS name and the same profile, so a bare 0x… becomes a human identity. The records endpoint returns just the profile text records for a name. This is the name-resolution and on-chain-profile layer every wallet, dapp, block explorer, payment and web3 app needs: address to name and name to address, with the owner's verified social links. Live from the Ethereum Name Service, nothing stored. Distinct from raw-RPC and token-metadata APIs — this is ENS naming and profile data. 4 endpoints.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/ens-api/..."
```

## Pricing
- **Free** (Free) — 9,500 calls/Mo, 3 req/s
- **Starter** ($9/Mo) — 120,000 calls/Mo, 8 req/s
- **Pro** ($23/Mo) — 600,000 calls/Mo, 15 req/s
- **Scale** ($54/Mo) — 3,000,000 calls/Mo, 30 req/s

## Endpoints

### ENS

#### `GET /v1/records` — Profile text records for a name

**Parameters:**
- `name` (query, required, string) — ENS name Example: `nick.eth`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/ens-api/v1/records?name=nick.eth"
```

**Response:**
```json
{
    "data": {
        "name": "nick.eth",
        "avatar": "https://euc.li/nick.eth",
        "address": "0xb8c2C29ee19D8307cb7255e1Cd9CbDE883A267d5",
        "records": {
            "pgp": null,
            "url": "https://ens.domains/",
            "email": "arachnid@notdot.net",
            "github": "arachnid",
            "reddit": "nickjohnson",
            "discord": "nickjohnson",
            "twitter": "nicksdjohnson",
            "telegram": "nicksdjohnson",
            "description": "Lead developer of ENS & Ethereum Foundation alum. Certified rat tickler. he/him."
        },
        "wallets": {
            "eth": "0xb8c2C29ee19D8307cb7255e1Cd9CbDE883A267d5"
        },
        "content_hash": "k51qzi5uqu5dgccx524mfjv7znyfsa6g013o6v4yvis9dxnrjbwojc62pt0430"
    },
    "meta": {
        "timestamp": "2026-06-09T11:39:54.416Z",
        "request_id": "e2633529-eba0-4c2f-a57c-f806a5e69aec"
    },
    "status": "ok",
    "message": "Records retrieved successfully",
    "success": true
}
```

#### `GET /v1/resolve` — Resolve a .eth name

**Parameters:**
- `name` (query, required, string) — ENS name Example: `vitalik.eth`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/ens-api/v1/resolve?name=vitalik.eth"
```

**Response:**
```json
{
    "data": {
        "name": "vitalik.eth",
        "avatar": "https://euc.li/vitalik.eth",
        "address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
        "records": {
            "pgp": "527E406252E06A11416D7487698FEAC70F922A21",
            "url": "https://vitalik.ca",
            "email": null,
            "github": "vbuterin",
            "reddit": null,
            "discord": null,
            "twitter": "VitalikButerin",
            "telegram": null,
            "description": "mi pinxe lo crino tcati"
        },
        "wallets": {
            "eth": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
        },
        "resolver": "0x231b0Ee14048e9dCcD1d247744d114a4EB5E8E63",
        "content_hash": "bafybeibbk35rvvgr7y7qynel2lc5s7fihuxvk23ubzzdyv3dpwgma3lahm",
        "primary_name": "vitalik.eth"
    },
    "meta": {
        "timestamp": "2026-06-09T11:39:54.685Z",
        "request_id": "f60a3538-cd4a-4db4-88c7-82910fb291cc"
    },
    "status": "ok",
    "message": "Name resolved successfully",
    "success": true
}
```

#### `GET /v1/reverse` — Reverse-resolve an address

**Parameters:**
- `address` (query, required, string) — Ethereum address (0x…) Example: `0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/ens-api/v1/reverse?address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
```

**Response:**
```json
{
    "data": {
        "name": "vitalik.eth",
        "avatar": "https://euc.li/vitalik.eth",
        "address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
        "records": {
            "pgp": "527E406252E06A11416D7487698FEAC70F922A21",
            "url": "https://vitalik.ca",
            "email": null,
            "github": "vbuterin",
            "reddit": null,
            "discord": null,
            "twitter": "VitalikButerin",
            "telegram": null,
            "description": "mi pinxe lo crino tcati"
        },
        "wallets": {
            "eth": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
        },
        "resolver": "0x231b0Ee14048e9dCcD1d247744d114a4EB5E8E63",
        "content_hash": "bafybeibbk35rvvgr7y7qynel2lc5s7fihuxvk23ubzzdyv3dpwgma3lahm",
        "primary_name": "vitalik.eth"
    },
    "meta": {
        "timestamp": "2026-06-09T11:39:54.964Z",
        "request_id": "f04739b2-6f32-4d76-be7e-efcb1b438569"
    },
    "status": "ok",
    "message": "Address reverse-resolved successfully",
    "success": true
}
```

### Meta

#### `GET /v1/meta` — Spec

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/ens-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "source": "Ethereum Name Service via public resolvers (ensdata.net + ensideas.com, live)",
        "service": "ens-api",
        "endpoints": {
            "GET /v1/meta": "This document.",
            "GET /v1/records": "Just the profile text records for a name (name=vitalik.eth).",
            "GET /v1/resolve": "An ENS name to its address + full profile (name=vitalik.eth).",
            "GET /v1/reverse": "An address to its primary ENS name + profile (address=0x…)."
        },
        "description": "Live Ethereum Name Service resolution: turn a .eth name into its wallet address and back, with the owner's on-chain profile. Resolve returns the address, avatar, content hash, resolver and every text record (Twitter, GitHub, Reddit, Discord, Telegram, email, website, description) plus multi-chain wallets. Reverse returns an address's primary ENS name and profile. Records returns just the profile records. Live, no key, nothing stored. Distinct from raw RPC and token APIs — this is ENS naming and profile data.",
        "upstream_status": "ok"
    },
    "meta": {
        "timestamp": "2026-06-09T11:39:55.224Z",
        "request_id": "d8659e47-866a-4586-ab4c-ba0951cdcf96"
    },
    "status": "ok",
    "message": "Meta",
    "success": true
}
```


---
Marketplace page: https://www.oanor.com/api/ens-api
OpenAPI spec: https://www.oanor.com/api/ens-api/openapi.json
