Multi-chain wallet balances in USD (curated tokens) API
Balances of an EVM wallet (0x address, ENS name or Basename) on Base, Ethereum, Arbitrum, OP Mainnet, Polygon and Avalanche: native coin plus a curated list of 9-13 major tokens per chain (USDC, USDT, DAI, WETH, WBTC/cbBTC, AERO, ARB, OP and more), USD values, per-chain and total USD, chains holding funds, and native USDC per chain for x402 payments. Sources: each chain's JSON-RPC via PublicNode; prices from on-chain Uniswap v3 and Velodrome pools.
$0.003 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/wallet-balances
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
address | string | yes | Wallet as a 0x EVM address, or an ASCII ENS name (vitalik.eth) or Basename (jesse.base.eth) resolved to its ETH address record. e.g. vitalik.eth |
chains | string | no | Comma-separated chains by name or chain id: base (8453), ethereum (1), arbitrum (42161), optimism (10), polygon (137), avalanche (43114). Default: all six. e.g. base,ethereum,arbitrum |
Example request
https://api.kit-rx.com/v1/chain/wallet-balances?address=vitalik.eth&chains=base%2Cethereum%2Carbitrum
Without payment the server answers 402 Payment Required with the price (3000 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/wallet-balances?address=vitalik.eth&chains=base%2Cethereum%2Carbitrum"
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/wallet-balances?address=vitalik.eth&chains=base%2Cethereum%2Carbitrum");
console.log(await res.json());
Example response
{
"query": {
"address": "vitalik.eth",
"chains": [
"base",
"ethereum",
"arbitrum"
]
},
"result": {
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"ens_name": "vitalik.eth",
"total_usd": 20016.36,
"chains_with_funds": [
"base",
"ethereum",
"arbitrum"
],
"usdc_by_chain": [
{
"chain": "arbitrum",
"network": "eip155:42161",
"usdc": 158.162265,
"token": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831"
},
{
"chain": "base",
"network": "eip155:8453",
"usdc": 81.809468,
"token": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
},
{
"chain": "ethereum",
"network": "eip155:1",
"usdc": 39.192124,
"token": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
}
],
"usdc_total": 279.163857,
"coverage": "curated_tokens_only",
"chains": [
{
"chain": "base",
"chain_id": 8453,
"network": "eip155:8453",
"block": 57565841,
"native": {
"symbol": "ETH",
"balance": 3.128853190363307,
"usd": 5492.83,
"price_usd": 1755.54
},
"tokens": [
{
"symbol": "WETH",
"address": "0x4200000000000000000000000000000000000006",
"balance": 0.27558524550948865,
"usd": 483.8,
"price_usd": 1755.54
},
{
"symbol": "USDC",
"address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"balance": 81.809468,
"usd": 81.81,
"price_usd": 1
}
],
"total_usd": 6075.66,
"unpriced_tokens": [],
"tokens_checked": 10
},
{
"chain": "ethereum",
"chain_id": 1,
"network": "eip155:1",
"block": 26416895,
"native": {
"symbol": "ETH",
"balance": 5.798969845714111,
"usd": 10192.79,
"price_usd": 1757.69
},
"tokens": [
{
"symbol": "WETH",
"address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
"balance": 1.468927766030343,
"usd": 2581.92,
"price_usd": 1757.69
}
],
"total_usd": 13125.83,
"unpriced_tokens": [],
"tokens_checked": 13
}
],
"errors": []
},
"sources": [
{
"name": "Ethereum JSON-RPC via PublicNode",
"url": "https://ethereum-rpc.publicnode.com"
},
{
"name": "Base JSON-RPC via PublicNode",
"url": "https://base-rpc.publicnode.com"
}
],
"notes": [
"Only the native coin and a curated list of major tokens per chain are checked (tokens_checked per chain); other ERC-20s, NFTs, LP positions and DeFi deposits are not included, so total_usd is a lower bound."
],
"generated_at": "2026-11-15T00:45:43.911Z"
}
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.