vike
API EndpointsHL Cohorts

/symbols/{symbol}/large-fills

One symbol's fills over $50,000 from the last 24 hours, newest first — the asset page's Whale Activity feed, with the wallet's cohorts and how far back the answer reaches.

GET https://data.vike.io/v1/hl-cohorts/symbols/{symbol}/large-fills

The asset page's Whale Activity feed: one symbol's large fills, newest first, each with the wallet's size and realized-PnL cohort. It reads the same view, with the same SQL, as the site. That view is rebuilt every minute and keeps, per symbol, the newest 200 fills over $50,000 of the last 24 hours — so covered_from says how far back an answer reaches, truncated whether the view's cap cut the window, and has_more whether limit cut rows.

On a busy symbol the feed covers minutes, not a day

200 fills per symbol is the view's whole depth, whatever hours or limit ask for. On BTC it reached back about 20 minutes (measured 2026-10-22). Read covered_from before treating an answer as the whole of a window. Any closed UTC day of fills is one Parquet file in the file archive.

cURL
# BTC's newest fills over $50,000: everything the view holds for the symbol
curl -s "https://data.vike.io/v1/hl-cohorts/symbols/BTC/large-fills" \
  -H "X-API-KEY: $VIKE_API_KEY"

# how far back that answer reaches, and whether the view's cap cut the window
curl -s "https://data.vike.io/v1/hl-cohorts/symbols/BTC/large-fills" \
  -H "X-API-KEY: $VIKE_API_KEY" \
  | jq '{covered_from, truncated, has_more, fills: (.fills | length)}'

# only fills over $250,000 in the last 6 hours on ETH
curl -s "https://data.vike.io/v1/hl-cohorts/symbols/ETH/large-fills?min_usd=250000&hours=6" \
  -H "X-API-KEY: $VIKE_API_KEY"

# who is taking liquidity: market orders only, with the wallet's cohorts
curl -s "https://data.vike.io/v1/hl-cohorts/symbols/HYPE/large-fills" \
  -H "X-API-KEY: $VIKE_API_KEY" \
  | jq '[.fills[] | select(.order_type == "market") | {ts, wallet, direction, size_usd, size_cohort, pnl_cohort}]'

# the newest 20 only; has_more says the view holds more that match
curl -s "https://data.vike.io/v1/hl-cohorts/symbols/BTC/large-fills?limit=20" \
  -H "X-API-KEY: $VIKE_API_KEY"
symbolpathrequired
HL ticker
min_usdqueryoptional
Smallest fill in USD. Default and MINIMUM 50000: the feed behind this route holds nothing smaller.
hoursqueryoptional
How far back, in hours. Default and max 24: the feed holds a day.
limitqueryoptional
Max rows, newest first. Default 200 (all the feed holds per symbol), max 1000; has_more says a lower limit cut rows.

The response

FieldWhat it is
symbolThe symbol in its stored spelling (btc → BTC).
min_usd, hoursThe values applied.
covered_fromHow far back the answer reaches: the window start (now − hours) when truncated is false, else the oldest fill the view holds for the symbol.
truncatedtrue when the view is at its 200-fill cap and its oldest fill is newer than the window start, so older fills of the window may have been cut. It ignores min_usd: above $50,000 the cut fills may all have been smaller than min_usd, so true means "may have been cut", never "were".
has_moretrue when limit cut fills that match. There is no cursor: ask for a larger limit.
size_cohort_basisAlways current.
fillsThe fills, newest first.

When truncated is false the view holds every fill over $50,000 of the window, so an empty or short answer for a quiet symbol means there were no such fills. An unknown symbol answers with an empty fills.

Each fill:

FieldWhat it is
tsWhen the fill happened, ISO-8601 UTC.
walletThe wallet that filled.
directionbuy or sell, the fill's side, as on /v1/hyperliquid/wallets/{address}/fills.
size_tokensize_usd / price, which is how the fill is stored. null when price is 0.
size_usdThe fill's notional, USD.
priceThe fill price.
order_typemarket when the fill crossed the book (taker), limit when it rested — the site's MKT and LMT.
size_cohortThe wallet's size rung on its latest position snapshot when the view was rebuilt; null when there is none.
pnl_cohortThe wallet's realized-PnL rung as of the fill's own hour where that hour is labelled, else today's; null when there is none.
pnl_cohort_basispoint_in_time or current: which of the two pnl_cohort is.

Not served: whether a fill was a liquidation (the fill record does not carry it; /v1/hyperliquid/liquidations is the separate listing), and the fill's open or close text, which is not stored.

Errors

StatusWhen
400The symbol is blank. The body is {"detail": "…"}.
422min_usd is below 50000 or not a finite number, hours is outside 1–24, or limit is outside 1–1000.
401 / 429No or bad credential, or the hourly budget or the per-minute cap is spent — see Authentication and Rate limits.
503The store behind it is unavailable.

The ladders behind size_cohort and pnl_cohort are on Cohorts and axes; the two label bases are on Label basis.

On this page