vike
API EndpointsOn-chain

/wallets/{address}/pnl

A daily net-flow series for the wallet — per-day net inflow USD, a cumulative figure, gross volume and transaction count.

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

A daily net-flow series for the wallet — per-day net inflow USD, a cumulative figure, gross volume and transaction count.

This is net flow, not realized PnL

The wallet_pnl_history tool says so itself: "this is net inflow USD, not true realized PnL (which would require WAC accounting per token). Useful as a directional indicator." A wallet that buys and holds shows a large negative net flow while being up on the position. Read the series as the direction and size of flow, not as profit.

The remaining 8 points run to 2026-09-01, ending at cumulative_net_flow_usd: 18.27 — which matches the total_net_flow_usd at the top, so the header figure is the last cumulative value rather than an independent sum.

The series is sparse: one point per day with activity, not one point per day in the range

days=30 returned 11 points, and the dates jump — 08-08, 08-10, 08-12, then a six-day gap between 08-14 and 08-20. A chart or a diff that assumes 30 consecutive daily rows will misalign. Zero-fill the calendar yourself if you need a dense series. Note also that a day can carry net_flow_usd: 0.0 with a non-zero tx_count (the captured 2026-08-14 has tx_count: 2), so a present-but-zero point is not the same as an absent one.

cURL
# the direction and size of a wallet's flow, one point per active day over 30 days
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/wallets/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045/pnl?days=30"

# a shorter look: the past week
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/wallets/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045/pnl?days=7"

# a year of flow for research or a backtest: 365 is the ceiling, a larger days is clamped to it
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/wallets/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045/pnl?days=365"

# a chart-ready cumulative curve; the series is sparse, so zero-fill the calendar yourself if the chart needs every 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})'

# an exchange hot wallet over 90 days, for the same read on a much busier address
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/wallets/0x28C6c06298d514Db089934071355E5743bf21d60/pnl?days=90"

# the same wallet address on BSC
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/wallets/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045/pnl?chain=bsc&days=30"
addresspathrequired
Wallet address
chainqueryoptional
ethereum | bsc | base. Default ethereum
daysqueryoptional
Days back. Default 30, clamped to the range 1–365

A live response for vitalik.eth, captured 2026-09-03. First three of 11 series points.

Example response
{
  "address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
  "chain": "ethereum",
  "days": 30,
  "total_net_flow_usd": 18.27,
  "series": [
    {
      "date": "2026-08-08",
      "net_flow_usd": 0.02,
      "gross_volume_usd": 0.02,
      "tx_count": 1,
      "unique_tokens": 1,
      "cumulative_net_flow_usd": 0.02
    },
    {
      "date": "2026-08-10",
      "net_flow_usd": 0.19,
      "gross_volume_usd": 0.19,
      "tx_count": 1,
      "unique_tokens": 1,
      "cumulative_net_flow_usd": 0.21
    },
    {
      "date": "2026-08-12",
      "net_flow_usd": 0.01,
      "gross_volume_usd": 0.01,
      "tx_count": 1,
      "unique_tokens": 1,
      "cumulative_net_flow_usd": 0.22
    }
  ]
}
cURL
# the direction and size of a wallet's flow, one point per active day over 30 dayscurl -H "X-API-Key: $VIKE_API_KEY" \  "https://data.vike.io/v1/onchain/wallets/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045/pnl?days=30"# a shorter look: the past weekcurl -H "X-API-Key: $VIKE_API_KEY" \  "https://data.vike.io/v1/onchain/wallets/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045/pnl?days=7"# a year of flow for research or a backtest: 365 is the ceiling, a larger days is clamped to itcurl -H "X-API-Key: $VIKE_API_KEY" \  "https://data.vike.io/v1/onchain/wallets/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045/pnl?days=365"# a chart-ready cumulative curve; the series is sparse, so zero-fill the calendar yourself if the chart needs every daycurl -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})'# an exchange hot wallet over 90 days, for the same read on a much busier addresscurl -H "X-API-Key: $VIKE_API_KEY" \  "https://data.vike.io/v1/onchain/wallets/0x28C6c06298d514Db089934071355E5743bf21d60/pnl?days=90"# the same wallet address on BSCcurl -H "X-API-Key: $VIKE_API_KEY" \  "https://data.vike.io/v1/onchain/wallets/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045/pnl?chain=bsc&days=30"
Example response
{  "address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",  "chain": "ethereum",  "days": 30,  "total_net_flow_usd": 18.27,  "series": [    {      "date": "2026-08-08",      "net_flow_usd": 0.02,      "gross_volume_usd": 0.02,      "tx_count": 1,      "unique_tokens": 1,      "cumulative_net_flow_usd": 0.02    },    {      "date": "2026-08-10",      "net_flow_usd": 0.19,      "gross_volume_usd": 0.19,      "tx_count": 1,      "unique_tokens": 1,      "cumulative_net_flow_usd": 0.21    },    {      "date": "2026-08-12",      "net_flow_usd": 0.01,      "gross_volume_usd": 0.01,      "tx_count": 1,      "unique_tokens": 1,      "cumulative_net_flow_usd": 0.22    }  ]}