vike
API EndpointsHL Cohorts

/symbols/{symbol}/indices

Smart Money Index, Whale-vs-Shrimp Index and the whale and smart bias of one symbol, as ratios — the newest snapshot and the settled hourly series.

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

The asset page's Smart Money Index (SMI), Whale-vs-Shrimp Index (WSI) and whale and smart bias for one symbol, as ratios in [−1, +1] — the site multiplies them by 100 for display. latest is the newest 5-minute snapshot; series is the settled hourly rows, newest first. Both are computed with the site's own rung sets and SQL.

cURL
# BTC's indices now and for the last week, hourly
curl -s "https://data.vike.io/v1/hl-cohorts/symbols/BTC/indices" \
  -H "X-API-KEY: $VIKE_API_KEY"

# just the current reading: latest is the newest 5-minute snapshot whatever window is asked for
curl -s "https://data.vike.io/v1/hl-cohorts/symbols/ETH/indices?hours=1" \
  -H "X-API-KEY: $VIKE_API_KEY" \
  | jq '.latest'

# the widest window, 8760 hours: limit caps it at 5000 rows, and has_more says whether older ones remain
curl -s "https://data.vike.io/v1/hl-cohorts/symbols/BTC/indices?hours=8760" \
  -H "X-API-KEY: $VIKE_API_KEY" \
  | jq '{has_more, rows: (.series | length)}'

# a pinned window: start and end are ISO-8601 UTC, and end is inclusive
curl -s "https://data.vike.io/v1/hl-cohorts/symbols/BTC/indices?start=2026-09-01T00:00:00Z&end=2026-09-07T23:00:00Z" \
  -H "X-API-KEY: $VIKE_API_KEY"

# the page before a cut one: END is the oldest ts of the previous page minus 1 second
curl -s "https://data.vike.io/v1/hl-cohorts/symbols/BTC/indices?hours=8760&end=$END" \
  -H "X-API-KEY: $VIKE_API_KEY"
symbolpathrequired
HL ticker
startqueryoptional
ISO-8601 UTC. Oldest edge. Omit it for the hours newest hours.
endqueryoptional
ISO-8601 UTC. Newest edge; with no start, the window is the hours newest hours at or before it.
hoursqueryoptional
Window length in hours when start is omitted. Default 168, max 8760.
limitqueryoptional
Max series rows, newest first, default and max 5000; has_more says there are older ones (page back with end = the oldest ts minus 1 second; end is inclusive).

What each value is

A long share is long / (long + short) notional of a set of rungs.

FieldDefinition
smilong share of 3x smart, 2x smart and smart − long share of rekt, 2x rekt and 3x rekt
wsilong share of 4x whale, 3x whale, 2x whale and whale − long share of shrimp and 2x shrimp
whale_bias(long − short) / (long + short) over the whale rungs. latest only.
smart_bias(long − short) / (long + short) over the smart rungs. latest only.

smi and smart_bias use the realized-PnL ladder, wsi and whale_bias the account-size ladder; both are on Cohorts and axes. The hourly sets also count the older hours that were stored under the retired spellings of the same rungs. Values are rounded to six decimal places.

A value is null, never 0, when a rung set holds no positions — null says nothing is there, and 0 would read as perfectly balanced. A symbol with no snapshot at all answers with latest.ts and every latest value null.

The response

FieldWhat it is
symbolThe symbol in its stored spelling (btc → BTC, kpepe → kPEPE).
label_basispoint_in_time: it describes series, whose pnl rungs carry each hour's point-in-time label.
latest{ts, smi, wsi, whale_bias, smart_bias, label_basis} at the newest 5-minute snapshot. Its pnl rungs are graded by today's wallet dictionary, as the site's right-edge point is, so latest.label_basis is current. Always the newest snapshot, whatever window was asked for.
series{ts, smi, wsi} per settled hour, newest first. The hour in progress is never in it; that is latest's job.
has_moretrue when the window holds older rows than limit returned.

The window and paging

The window is start as given, or else the hours newest hours at or before end (default 168, max 8760). At most limit rows come back (default and max 5000), so a window over 5000 hours takes two calls; has_more says older rows exist. Page back with end = the oldest ts minus 1 second: end is inclusive, so passing the oldest ts itself repeats that row. A start more than 8760 hours before end (or now, when end is omitted) is a 400.

Errors

StatusWhen
400The symbol is blank, start or end is not ISO-8601, or start is more than 8760 hours before end. The body is {"detail": "…"}.
422hours is above 8760 or limit above 5000.
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.

Every rung's own hourly positioning on a symbol is on /symbols/{symbol}/cohort-metrics; the point-in-time labels are explained on Label basis.

On this page