Skip to main content
Holders answers “who is in this event, and how are they doing?” Each row is one wallet’s position across an entire event — what they put in, what it’s worth, and their PnL — with the individual outcomes they hold nested inside the row. That nesting is what lets a client render a collapsed leaderboard and expand any trader to reveal the outcomes behind their number, without a second request.
Holders leaderboard ranked by total PnL, with a trader row expanded into per-outcome invested, PnL and ROI

One wallet expanded to show the six outcomes behind its event-level total.

Three views

They share a shape, but not every column appears on all three — currentValue is absent from closed, since an exited position has none. The table below marks where each column applies.

Columns

Outcome-level detail

tokenMetadata is an array, one entry per outcome the wallet holds:
Every value inside tokenMetadata is a string, including the numeric and boolean ones — "invested": "30740.5", "isYesToken": "true". Parse them before use. The top-level columns are properly typed; only this nested payload is string-encoded.

Scoping the query

Holders is always scoped to an event, so eventId is required.
Omitting it returns 400.

Narrowing further

Beyond eventId, you can filter on userId, positionId, userRank, and the numeric measures — invested, totalPnl, unrealizedPnl, pnlPercentage, currentValue and volume. See Filtering for the syntax. Whales with a losing position, for example:
Or restrict to a cohort of wallets you already track:
Holders has no searchKey — it’s already scoped to one event, so there’s nothing to search across. Use the Activity endpoint to find an event by name first.

API endpoints

All Holders

POST /api/v1/market-holders/all

Active Holders

POST /api/v1/market-holders/active

Closed Holders

POST /api/v1/market-holders/closed