vike

Recipe 20 of 32

Decode a whale: accumulating, distributing or market making?

Read the net flow per window from /wallets/{address} for the direction, then the wallet's label from /labels/batch; known market makers carry a label, but market making is not detected from behaviour.

GET /v1/onchain/wallets/{address} returns volume, inflow, outflow and net_flow for 24h, 7d, 30d, 90d and all time. Net flow positive in every window reads as accumulating, negative as distributing. Whether the wallet is a market maker comes from its label: /labels/batch returns wallet_type: market_maker for the market makers we have labelled. The parameters are on Wallet summary and Batch wallet labels.

Quick answer

cURL
# net flow per window for a large wallet, here a Wintermute address
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/wallets/0xeae7380dd4cef6fbd1144f49e4d1e6964258a4f4"

Example response

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

net_flow is total_inflow minus total_outflow in USD. It is negative in every window: -8.5% of volume all time, -15.7% over 30 days and -19.8% over 7 days. On net flow alone this wallet is distributing. Its label, the first variation, says it is a market maker, which the flow figures cannot tell you.

Example response
{
  "chain": "ethereum",
  "all": {
    "total_volume": 687652729240.324,
    "total_inflow": 314472956662.32544,
    "total_outflow": 373179772577.9986,
    "net_flow": -58706815915.67315,
    "tx_count": 624634,
    "tokens_traded": 623,
    "first_seen": "2023-05-11",
    "last_active": "2026-10-24"
  },
  "30d": {
    "total_volume": 11490007080.729315,
    "total_inflow": 4843045757.952612,
    "total_outflow": 6646961322.776702,
    "net_flow": -1803915564.82409,
    "tx_count": 18740,
    "tokens_traded": 623,
    "first_seen": "2023-05-11",
    "last_active": "2026-10-24"
  },
  "7d": {
    "total_volume": 1978956128.145347,
    "total_inflow": 793880545.162257,
    "total_outflow": 1185075582.98309,
    "net_flow": -391195037.820833,
    "tx_count": 3825,
    "tokens_traded": 623,
    "first_seen": "2023-05-11",
    "last_active": "2026-10-24"
  }
}

Variations

The label. One address in a one-element list returns its entity, type and risk flag.

cURL — label
# who the wallet is: entity, wallet_type and risk_flag
curl -X POST -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/labels/batch?addresses=0xeae7380dd4cef6fbd1144f49e4d1e6964258a4f4"

The same address in a batch, captured from the live API on 2026-10-24 at 17:19 UTC.

Response — the label
[
  {
    "entity": "wintermute",
    "wallet_type": "market_maker",
    "confidence": "medium",
    "risk_flag": "",
    "net_30d_usd": 2113236.042409,
    "volume_30d_usd": 2508838843.170737,
    "tx_30d": 14678,
    "tokens_30d_count": 100,
    "wallet": "0xeae7380dd4cef6fbd1144f49e4d1e6964258a4f4",
    "found": true
  }
]

Day by day. See whether the outflow is steady or came in a few large days.

cURL — daily series
# the daily net flow over 90 days
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/wallets/0xeae7380dd4cef6fbd1144f49e4d1e6964258a4f4/pnl?days=90"

One token only. Net flow sums every token. To see one token, list the wallet's transfers of that contract, here USDT.

cURL — one token
# the wallet's USDT transfers over 30 days, newest first
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/wallets/0xeae7380dd4cef6fbd1144f49e4d1e6964258a4f4/transactions?token_address=0xdac17f958d2ee523a2206206994597c13d831ec7&days=30&limit=500"

A wallet that only spends. vitalik.eth over 30 days: $63.44 in, $2,829.64 out.

cURL — vitalik.eth
# the same windows for vitalik.eth
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/wallets/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"

Before you rely on it

Market making is a label, not a behaviour test

The API does not classify a wallet as a market maker from its flows. wallet_type: market_maker comes from our label set and exists only for wallets that were labelled. An unlabelled wallet with large two-way volume can be a market maker, a router, a bot or an exchange.

A swap is both an inflow and an outflow

Every token is summed in USD, so swapping USDC for ETH adds to both sides and leaves net flow near zero. Net flow shows value arriving in or leaving the wallet, not which asset it is building up. Use the one-token variation, or the token routes, for a single asset.

Two routes, two different 30-day figures

The 30-day fields of /labels/batch come from an offline build, not from a rolling window. For this wallet they read net_30d_usd: 2113236.042409, against a 30-day net_flow of -1,803,915,564.82 here. Take the windows from /wallets/{address} and only the label from the batch.

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_summary tool (2 credits) answers the flow part and wallet_batch_labels (2 credits) the label.

Ask your agent
Is 0xeae7380dd4cef6fbd1144f49e4d1e6964258a4f4 accumulating or distributing, and who is it?
Example response
{  "chain": "ethereum",  "all": {    "total_volume": 687652729240.324,    "total_inflow": 314472956662.32544,    "total_outflow": 373179772577.9986,    "net_flow": -58706815915.67315,    "tx_count": 624634,    "tokens_traded": 623,    "first_seen": "2023-05-11",    "last_active": "2026-10-24"  },  "30d": {    "total_volume": 11490007080.729315,    "total_inflow": 4843045757.952612,    "total_outflow": 6646961322.776702,    "net_flow": -1803915564.82409,    "tx_count": 18740,    "tokens_traded": 623,    "first_seen": "2023-05-11",    "last_active": "2026-10-24"  },  "7d": {    "total_volume": 1978956128.145347,    "total_inflow": 793880545.162257,    "total_outflow": 1185075582.98309,    "net_flow": -391195037.820833,    "tx_count": 3825,    "tokens_traded": 623,    "first_seen": "2023-05-11",    "last_active": "2026-10-24"  }}