Recipe 19 of 32
Daily net-flow history of a wallet
/wallets/{address}/pnl returns one point per active day with that day's net inflow in USD, a running total, gross volume and transfer count; it is net flow, not realized PnL.
GET /v1/onchain/wallets/{address}/pnl?days= returns the wallet's daily series on one chain: for each day with activity, the USD
that came in minus the USD that went out (net_flow_usd), the running total from the start of the window
(cumulative_net_flow_usd), the gross volume, the transfer count and the number of distinct tokens. The full parameter list is on Wallet net-flow history.
Quick answer
# vitalik.eth's daily net flow on Ethereum over the last 30 days
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/onchain/wallets/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045/pnl?days=30"Example response
Captured from the live API on 2026-10-24 at 17:18 UTC, trimmed to the first 3 of 21 points.
Each value is in USD at the price of each transfer when it happened. One outgoing transfer of $2,688.18 on
2026-09-26 sets the month: total_net_flow_usd is the last point's cumulative_net_flow_usd, -2,766.07, so the
wallet sent out more value than it received over the window.
{
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"chain": "ethereum",
"days": 30,
"total_net_flow_usd": -2766.07,
"series": [
{
"date": "2026-09-26",
"net_flow_usd": -2688.18,
"gross_volume_usd": 2688.18,
"tx_count": 1,
"unique_tokens": 1,
"cumulative_net_flow_usd": -2688.18
},
{
"date": "2026-09-30",
"net_flow_usd": -3.52,
"gross_volume_usd": 56.54,
"tx_count": 5,
"unique_tokens": 3,
"cumulative_net_flow_usd": -2691.7
},
{
"date": "2026-10-01",
"net_flow_usd": 6.28,
"gross_volume_usd": 6.28,
"tx_count": 2,
"unique_tokens": 1,
"cumulative_net_flow_usd": -2685.42
}
]
}Variations
A year of history. 365 days is the ceiling; a larger days is clamped to it.
# a year of daily net flow
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/onchain/wallets/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045/pnl?days=365"Another chain. The series covers one chain per call.
# the same wallet's daily net flow on Base
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/onchain/wallets/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045/pnl?chain=base&days=90"A chart-ready curve. Keep only the date and the running total.
# date and cumulative net flow, one row per active day
curl -s -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/onchain/wallets/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045/pnl?days=90" \
| jq '.series | map({date, cumulative_net_flow_usd})'The totals per window. The wallet summary gives the same net flow as one figure per window: 24h, 7d, 30d, 90d and all time.
# net flow, inflow and outflow per window in one response
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/onchain/wallets/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"Before you rely on it
Net flow, not profit
The route's name says PnL, but the figure is net inflow in USD, not realized profit: no cost basis is computed. A swap sends value out and brings value back in, so it nets close to zero whatever the trade made, and a price move on a token the wallet holds never appears. Read the series as the direction and size of the flow.
Only active days are listed
The series has a point only for days with a transfer: days=30 returned 21 points for 31 calendar
dates, because the window is today plus the 30 days before. Zero-fill the calendar yourself for a dense chart.
tx_count counts token transfers, so one transaction that moves three tokens counts three.
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_pnl_history tool answers it, at 2 credits a call.
Show the daily net flow of vitalik.eth on Ethereum over the last 30 days