Recipe 6 of 32
Is any of this wallet's top counterparties flagged or an exchange?
Take the wallet's top counterparties from /wallets/{address}/counterparties, then POST them to /labels/batch; wallet_type cex marks exchanges and a non-empty risk_flag marks flagged addresses.
Two calls. GET /v1/onchain/wallets/{address}/counterparties ranks the addresses a wallet dealt with by USD volume
and already carries each one's entity and wallet_type; cex there is an exchange.
POST /labels/batch on those addresses adds risk_flag and found. The quick answer screens the top
five counterparties of vitalik.eth over 90 days. The parameters are on Wallet counterparties, Batch wallet labels and Wallet exchange usage.
Quick answer
# label the wallet's top five counterparties in one call
curl -X POST -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/onchain/labels/batch?addresses=0xe731dfadbff20542e10d09d26fc71445c70d4232,0x44032bd442c5719ad4ffa123f8ec3d39c840f686,0x23617e59a5925b2a4bf75d73ff6711cd0b29de85,0x60594a405d53811d3bc4766596efd80fd545a270,0x998252ea9cb19b3fbc137e111d87808aafff08cf"Example response
Captured from the live API on 2026-10-24 at 17:15 UTC, trimmed to 4 of 5 rows.
None of the five is flagged and none is an exchange. One is a Uniswap pool. Four have no label at
all (found: false), which means unknown, not clean. The rows come back in the order you sent them.
[
{
"wallet": "0xe731dfadbff20542e10d09d26fc71445c70d4232",
"entity": null,
"wallet_type": null,
"confidence": null,
"risk_flag": null,
"net_30d_usd": null,
"volume_30d_usd": null,
"tx_30d": null,
"tokens_30d_count": null,
"found": false
},
{
"wallet": "0x44032bd442c5719ad4ffa123f8ec3d39c840f686",
"entity": null,
"wallet_type": null,
"confidence": null,
"risk_flag": null,
"net_30d_usd": null,
"volume_30d_usd": null,
"tx_30d": null,
"tokens_30d_count": null,
"found": false
},
{
"wallet": "0x23617e59a5925b2a4bf75d73ff6711cd0b29de85",
"entity": null,
"wallet_type": null,
"confidence": null,
"risk_flag": null,
"net_30d_usd": null,
"volume_30d_usd": null,
"tx_30d": null,
"tokens_30d_count": null,
"found": false
},
{
"entity": "uniswap",
"wallet_type": "DEX pool",
"confidence": "high",
"risk_flag": "",
"net_30d_usd": 828908.886437,
"volume_30d_usd": 116460774.814641,
"tx_30d": 98380,
"tokens_30d_count": 20,
"wallet": "0x60594a405d53811d3bc4766596efd80fd545a270",
"found": true
}
]Variations
Get the addresses first. The counterparties call, reduced to a comma-separated list ready for the batch call. limit is
applied up to 50.
# the top five counterparties over 90 days, joined with commas
curl -s -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/onchain/wallets/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045/counterparties?window=90d&limit=5" \
| jq -r '[.[].wallet] | join(",")'Only the exchanges. wallet_type is already on the counterparties rows, so exchanges need no second call.
# the counterparties labelled as exchanges, with the volume each way
curl -s -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/onchain/wallets/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045/counterparties?window=90d&limit=50" \
| jq '[.[] | select(.wallet_type == "cex") | {wallet, entity, sent_usd, received_usd}]'Exchange share in one call. /wallets/{address}/exchange-usage sums the wallet's flows per exchange over the whole window, not
only its top counterparties.
# every labelled exchange the wallet sent to or received from over the same 90 days
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/onchain/wallets/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045/exchange-usage?window=90d"Before you rely on it
Unlabelled is not clean, and the top 50 is not everyone
found: false only says we hold no label for the address. A flagged address can sit below the top
50 counterparties, which is the most the route returns, and only priced transfers count toward the
ranking. Labels and flags are read from one chain per call (default ethereum), so pass the same
chain to both calls.
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_counterparties tool (2 credits) lists them and wallet_batch_labels (2 credits) flags them.
Are any of vitalik.eth's top counterparties over the last 90 days flagged or exchanges?