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://chain.kit-rx.com/v1/chain/wallet-balances

Parameters

NameTypeRequiredDescription
addressstringyesWallet 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
chainsstringnoComma-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://chain.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://chain.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://chain.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://chain.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 EVM Gas, Token Scan & Tx Decode: Onchain tools for AI agents: multi-chain gas prices, token risk scan and DEX price, calldata and EIP-712 signature safety checks, transaction decoding, ABIs, wallet balances and ENS, paid per call over x402. Machine-readable: OpenAPI, llms.txt, /.well-known/x402, agent skills.