ENS and Basenames resolver (forward and reverse) API
ENS and Basenames lookup: name to address, or address to primary name with forward verification. Returns the ETH address, resolver contract, text records (url, avatar, description, Twitter, GitHub, Telegram, and email when set on-chain) and decoded contenthash (IPFS, IPNS, Swarm, Arweave). Sources: ENS Universal Resolver on Ethereum and the Basenames registry on Base, read via PublicNode JSON-RPC; offchain (CCIP-read) names are reported, not followed.
$0.002 per call USDC over x402 v2 on Base, Polygon, Arbitrum, Avalanche or Sei. No signup, no API key. Requests that fail or match nothing are not charged.
Endpoint
GET https://api.kit-rx.com/v1/chain/ens
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
name | string | no | ASCII ENS name (vitalik.eth) or Basename (jesse.base.eth) for a forward lookup. Mutually exclusive with address. e.g. vitalik.eth |
address | string | no | 0x EVM address for a reverse lookup: its primary name on Ethereum (ENS) and Base (Basenames), checked by forward resolution, plus that name's records. e.g. 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 |
Example request
https://api.kit-rx.com/v1/chain/ens?name=vitalik.eth
Without payment the server answers 402 Payment Required with the price (2000 atomic USDC) in the PAYMENT-REQUIRED header. Any x402 v2 client pays and retries automatically. A request with no parameters runs this example.
curl -i "https://api.kit-rx.com/v1/chain/ens?name=vitalik.eth"
Pay from an agent
AgentCash: fetch the URL. OpenDexter MCP: x402_fetch. Kit Rx MCP server: https://api.kit-rx.com/mcp. Code:
import { x402Client } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { wrapFetchWithPayment } from "@x402/fetch";
import { privateKeyToAccount } from "viem/accounts";
const client = new x402Client();
registerExactEvmScheme(client, { signer: privateKeyToAccount(process.env.BUYER_KEY) });
const pay = wrapFetchWithPayment(fetch, client);
const res = await pay("https://api.kit-rx.com/v1/chain/ens?name=vitalik.eth");
console.log(await res.json());
Example response
{
"query": {
"name": "vitalik.eth"
},
"result": {
"lookup": "forward",
"name": "vitalik.eth",
"network": "ethereum",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"resolver": "0x394D8EB4a4fDF599384DeAb25F31d111d755c398",
"is_offchain": false,
"wildcard": false,
"text": {
"url": "https://vitalik.ca",
"avatar": "https://euc.li/vitalik.eth",
"description": "mi pinxe lo crino tcati",
"com.twitter": "VitalikButerin",
"com.github": "vbuterin",
"org.telegram": null,
"email": null
},
"contenthash": {
"protocol": "ipfs",
"uri": "ipfs://bafybeia5eyombgegdwmvfzwisveadaaok2vdjkv5rklfdmcljysjrjc4km"
},
"forward_verified": null
},
"sources": [
{
"name": "Ethereum JSON-RPC via PublicNode",
"url": "https://ethereum-rpc.publicnode.com"
}
],
"notes": [
"Text records are public on-chain values set by the name's owner; empty records are null."
],
"generated_at": "2026-11-15T00:45:43.981Z"
}
Kit Rx: Pay-per-call data and safety tools for AI agents, paid in USDC over x402. No signup, no API key. Machine-readable: OpenAPI, llms.txt, /.well-known/x402, agent skills.