vike

Recipe 23 of 32

Wallet portfolio now across chains, in USD, no dust

/wallets/{address}/balances reads current balances on Ethereum, BNB Chain, Base and HyperEVM from the chain at request time; min_usd hides token holdings worth less than a USD floor.

GET /v1/onchain/wallets/{address}/balances?min_usd= scans the four chains by default and returns every holding worth at least min_usd, largest first, with balance, the exact balance_raw, usd_price and usd_value. total_usd adds up the priced rows. Balances are read from the chain when you call, not rebuilt from history. The full parameter list is on Wallet token balances.

Quick answer

cURL
# what vitalik.eth holds right now on all four chains, token holdings under 1,000 USD hidden
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/wallets/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045/balances?min_usd=1000"

Example response

Captured from the live API on 2026-10-24 at 17:18 UTC, trimmed to 5 of the 8 holdings.

Rows are sorted by usd_value, largest first. The native coin of each chain is listed whatever the floor, which is why BNB at $125.11 and HYPE at $0.51 appear under a $1,000 floor; native rows have address: null. total_usd, $35,222.41, sums all 8 rows of the full response.

Example response
{
  "address": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
  "total_usd": 35222.41,
  "chains_scanned": [
    "ethereum",
    "bsc",
    "base",
    "hyperevm"
  ],
  "holdings": [
    {
      "chain": "ethereum",
      "symbol": "ETH",
      "name": "ETH",
      "address": null,
      "balance": 5.773499921329374,
      "balance_raw": "5773499921329373953",
      "usd_value": 13781.4,
      "usd_price": 2387.01
    },
    {
      "chain": "ethereum",
      "symbol": "ENS",
      "name": "Ethereum Name Service",
      "address": "0xc18360217d8f7ab5e7c516566761ea12ce7f9d72",
      "balance": 1144.0360760636715,
      "balance_raw": "1144036076063671431479",
      "usd_value": 6280.76,
      "usd_price": 5.49
    },
    {
      "chain": "base",
      "symbol": "DEGEN",
      "name": "DEGEN",
      "address": "0x4ed4e862860bed51a9570b96d89af5e1b0efefed",
      "balance": 3000574.185146692,
      "balance_raw": "3000574185146692290319902",
      "usd_value": 2842.74,
      "usd_price": 0.0009474
    },
    {
      "chain": "bsc",
      "symbol": "BNB",
      "name": "BNB",
      "address": null,
      "balance": 0.16869681254396504,
      "balance_raw": "168696812543965050",
      "usd_value": 125.11,
      "usd_price": 741.65
    },
    {
      "chain": "hyperevm",
      "symbol": "HYPE",
      "name": "HYPE",
      "address": null,
      "balance": 0.006529929669036304,
      "balance_raw": "6529929669036304",
      "usd_value": 0.51,
      "usd_price": 77.431
    }
  ]
}

Variations

Chosen chains only. chains takes a comma-separated list; eth, mainnet, bnb and binance are accepted aliases.

cURL — two chains
# Ethereum and Base only
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/wallets/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045/balances?chains=ethereum,base&min_usd=1000"

Every holding. An explicit min_usd=0 lists everything, unpriced airdrops included. A long-lived wallet returns thousands of rows.

cURL — no floor
# the complete list on Base
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/wallets/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045/balances?chains=base&min_usd=0"

The ten largest holdings. Rows come sorted, so the first ten are the ten most valuable.

cURL — top ten
# the ten most valuable holdings across all four chains
curl -s -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/wallets/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045/balances?min_usd=1" \
  | jq '.holdings[:10] | map({chain, symbol, balance, usd_value})'

Before you rely on it

A floor also hides tokens we cannot price

Any min_usd above 0 drops holdings with no price, since they cannot be shown to clear it. An omitted min_usd means 1, not 0. total_usd sums priced holdings only, so read it as a floor on the wallet's value, never as its net worth.

Check chain_errors before reading an empty chain

A chain whose read failed is named in chain_errors and is still listed in chains_scanned, and a chain name outside the four goes to chain_errors too. A chain with no rows and no entry in chain_errors holds nothing that clears the floor.

What the scan cannot see

HyperCore spot and perp balances are not included: hyperevm is the HyperEVM chain only. The tokens checked are those that ever moved in or out of the wallet in our transfer data, so a token missing from it is missing here. On Base and HyperEVM a token we do not map comes back with no symbol, and only with min_usd=0.

Ask your agent

Connected to the Vike MCP server (https://vike.io/mcp) in Claude, ChatGPT or Cursor, ask it in plain words. The wallet_token_balances tool answers it, at 3 credits a call.

Ask your agent
What does vitalik.eth hold right now across Ethereum, BNB Chain, Base and HyperEVM, ignoring anything under $1,000?
Example response
{  "address": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",  "total_usd": 35222.41,  "chains_scanned": [    "ethereum",    "bsc",    "base",    "hyperevm"  ],  "holdings": [    {      "chain": "ethereum",      "symbol": "ETH",      "name": "ETH",      "address": null,      "balance": 5.773499921329374,      "balance_raw": "5773499921329373953",      "usd_value": 13781.4,      "usd_price": 2387.01    },    {      "chain": "ethereum",      "symbol": "ENS",      "name": "Ethereum Name Service",      "address": "0xc18360217d8f7ab5e7c516566761ea12ce7f9d72",      "balance": 1144.0360760636715,      "balance_raw": "1144036076063671431479",      "usd_value": 6280.76,      "usd_price": 5.49    },    {      "chain": "base",      "symbol": "DEGEN",      "name": "DEGEN",      "address": "0x4ed4e862860bed51a9570b96d89af5e1b0efefed",      "balance": 3000574.185146692,      "balance_raw": "3000574185146692290319902",      "usd_value": 2842.74,      "usd_price": 0.0009474    },    {      "chain": "bsc",      "symbol": "BNB",      "name": "BNB",      "address": null,      "balance": 0.16869681254396504,      "balance_raw": "168696812543965050",      "usd_value": 125.11,      "usd_price": 741.65    },    {      "chain": "hyperevm",      "symbol": "HYPE",      "name": "HYPE",      "address": null,      "balance": 0.006529929669036304,      "balance_raw": "6529929669036304",      "usd_value": 0.51,      "usd_price": 77.431    }  ]}