HTTP/1.1 402 PAYMENT REQUIRED agent402.base.eth · BASE · SOLANA · POLYGON · ARBITRUM · MONAD · CELO · AVALANCHE · SEI · OPTIMISM · STELLAR · ALGORAND · ROBINHOOD · USDC · USDG
Agent402 / tools / ens-bulk-resolve

ENS bulk reverse resolver

$0.002 per call · USDC via x402 · POST /api/ens-bulk-resolve

Reverse-resolve a batch of Ethereum addresses to ENS primary names + avatar URLs (up to 50 per call). Returns one row per address with name (or null), displayName (with checksum if no name), and avatar URI. Use to label transaction lists, wallet leaderboards, or NFT holder snapshots with human-readable names instead of 0xabc… stubs.

Input

FieldTypeDescription
addresses *array1-50 Ethereum addresses (0x-prefixed 40-hex).

Example output

{
  "count": 2,
  "namedCount": 1,
  "namedPct": 50,
  "results": [
    {
      "address": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
      "name": "vitalik.eth",
      "displayName": "vitalik.eth",
      "avatar": "https://..."
    },
    {
      "address": "0x000000000000000000000000000000000000dead",
      "name": null,
      "displayName": "0x0000…dead",
      "avatar": null
    }
  ],
  "source": "ensideas"
}

Try it - see the 402 challenge (free)

curl -i -X POST https://agent402.tools/api/ens-bulk-resolve \
  -H "Content-Type: application/json" \
  -d '{"addresses":["0xd8da6bf26964af9d7eed9e03e53415d37aa96045","0x000000000000000000000000000000000000dead"]}'

The response is HTTP 402 Payment Required with exact payment requirements. Any x402 v2 client pays automatically and retries:

Paid call (JavaScript agent)

import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";

const client = new x402Client();
registerExactEvmScheme(client, { signer: privateKeyToAccount(KEY) });
const payFetch = wrapFetchWithPayment(fetch, client);

const res = await payFetch("https://agent402.tools/api/ens-bulk-resolve", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    "addresses": [
      "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
      "0x000000000000000000000000000000000000dead"
    ]
  }),
});
Wallet-only. This tool reaches the network/browser/storage, so it is paid in USDC via x402 (no proof-of-work tier).

Related tools

Crypto order book

$0.003 · GET /api/crypto-orderbook

L2 order-book snapshot for a spot pair: best bid/ask, mid price, spread (absolute + %), and the top N aggregated price l…

Stablecoin peg monitor

$0.003 · GET /api/stablecoin-peg

Live $1-peg deviation for the top USD stablecoins (USDT, USDC, USDS, DAI, USDe, PYUSD, USDD, TUSD, FDUSD by default, or …

Wallet balance (native + ERC-20)

$0.002 · POST /api/wallet-balance

Look up the native coin balance (ETH/MATIC) plus every ERC-20 holding for a wallet address on Ethereum, Base, Polygon, A…