vike

Wallet summary

Aggregate metrics for one wallet — volume, inflow, outflow, net flow, transaction count and tokens traded, across the 24h / 7d / 30d / 90d / all windows in a single response.

GET https://data.vike.io/v1/onchain/wallets/{address}

Aggregate metrics for one wallet — volume, inflow, outflow, net flow, transaction count and tokens traded, across the 24h / 7d / 30d / 90d / all windows in a single response. The cheapest way to size up an address before spending calls on its detail routes.

cURL
# size up an address before spending calls on its detail routes: all five windows in one response
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/wallets/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"

# the same check on an exchange hot wallet
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/wallets/0x28C6c06298d514Db089934071355E5743bf21d60"

# is it active now, or only historically: transaction counts for 30d and 7d against the lifetime figure
curl -s -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/wallets/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045" \
  | jq '{lifetime: .all.tx_count, d30: .["30d"].tx_count, d7: .["7d"].tx_count, last_active: .all.last_active}'

# net flow per window, to see whether the wallet is accumulating or distributing (net_flow is inflow minus outflow)
curl -s -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/wallets/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045" \
  | jq 'to_entries | map({window: .key, net_flow: .value.net_flow})'

# any address from another route: WALLET is a row from /wallets/discover or /wallets/{address}/counterparties
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/wallets/$WALLET"
addresspathrequired
Wallet address, 0x-prefixed hex
chainqueryoptional
ethereum | bsc | base | hyperevm. Omit for the more recently active of ethereum and bsc; base or hyperevm is then answered only for a wallet with no priced ethereum/bsc volume

A live response for vitalik.eth, captured 2026-10-24, the whole response rather than an excerpt. chain names the chain that answered, and all five windows come back in one object. first_seen, last_active and tokens_traded repeat the all-time figure inside every window rather than being recomputed per window, so read those three from all and ignore the copies.

Example response
{
  "chain": "ethereum",
  "all": {
    "total_volume": 144128716.070085,
    "total_inflow": 54578966.300201,
    "total_outflow": 89549749.769884,
    "net_flow": -34970783.469683,
    "tx_count": 435011,
    "tokens_traded": 12378,
    "first_seen": "2016-05-06",
    "last_active": "2026-10-23"
  },
  "90d": {
    "total_volume": 2929.494054,
    "total_inflow": 99.854652,
    "total_outflow": 2829.639402,
    "net_flow": -2729.78475,
    "tx_count": 82,
    "tokens_traded": 12378,
    "first_seen": "2016-05-06",
    "last_active": "2026-10-23"
  },
  "30d": {
    "total_volume": 2893.082798,
    "total_inflow": 63.443396,
    "total_outflow": 2829.639402,
    "net_flow": -2766.196006,
    "tx_count": 38,
    "tokens_traded": 12378,
    "first_seen": "2016-05-06",
    "last_active": "2026-10-23"
  },
  "7d": {
    "total_volume": 7.748015,
    "total_inflow": 7.748015,
    "total_outflow": 0.0,
    "net_flow": 7.748015,
    "tx_count": 8,
    "tokens_traded": 12378,
    "first_seen": "2016-05-06",
    "last_active": "2026-10-23"
  },
  "24h": {
    "total_volume": 1.448407,
    "total_inflow": 1.448407,
    "total_outflow": 0.0,
    "net_flow": 1.448407,
    "tx_count": 2,
    "tokens_traded": 12378,
    "first_seen": "2016-05-06",
    "last_active": "2026-10-23"
  }
}

Note the shape of a long-lived but currently quiet address: 435,011 lifetime transactions against 38 in the last 30 days. Sizing a wallet up on all alone will mislead you about whether it is active now — which is what the window breakdown is for.

The only query parameter is chain — the windows are all returned together rather than selected. Without it the route answers for the more recently active of ethereum and bsc, and for base or hyperevm only when the wallet has no priced ethereum/bsc volume (a lone unpriced transfer does not count), so a dust transfer on another chain never changes the answer. The top-level chain field names the chain that answered; it is null, with every figure 0 and both dates null in every window, when no chain searched has a row for the address.

Example response
{  "chain": "ethereum",  "all": {    "total_volume": 144128716.070085,    "total_inflow": 54578966.300201,    "total_outflow": 89549749.769884,    "net_flow": -34970783.469683,    "tx_count": 435011,    "tokens_traded": 12378,    "first_seen": "2016-05-06",    "last_active": "2026-10-23"  },  "90d": {    "total_volume": 2929.494054,    "total_inflow": 99.854652,    "total_outflow": 2829.639402,    "net_flow": -2729.78475,    "tx_count": 82,    "tokens_traded": 12378,    "first_seen": "2016-05-06",    "last_active": "2026-10-23"  },  "30d": {    "total_volume": 2893.082798,    "total_inflow": 63.443396,    "total_outflow": 2829.639402,    "net_flow": -2766.196006,    "tx_count": 38,    "tokens_traded": 12378,    "first_seen": "2016-05-06",    "last_active": "2026-10-23"  },  "7d": {    "total_volume": 7.748015,    "total_inflow": 7.748015,    "total_outflow": 0.0,    "net_flow": 7.748015,    "tx_count": 8,    "tokens_traded": 12378,    "first_seen": "2016-05-06",    "last_active": "2026-10-23"  },  "24h": {    "total_volume": 1.448407,    "total_inflow": 1.448407,    "total_outflow": 0.0,    "net_flow": 1.448407,    "tx_count": 2,    "tokens_traded": 12378,    "first_seen": "2016-05-06",    "last_active": "2026-10-23"  }}