Skip to main content
GET
Get biggest open positions leaderboard
Returns the largest currently open position lines across all markets. Each entry pins the market it belongs to. Public — no authentication required. By default, the list is ranked by position size in collateral. Pass metric=pnl to rank by live Unrealized PnL instead.
A dedicated worker computes the rankings from a live projection. Successful responses include a strong ETag; pass it back as If-None-Match to get 304 Not Modified while the projection is unchanged. ETag values are specific to the requested metric, marketPageId, and limit — validators do not cross variants.

Ranking metric

The optional metric query parameter selects the ranking: The response echoes the effective metric so you can render the right column headers without tracking request state.

Filter by market page

With metric=pnl, pass marketPageId (a UUID) to scope the ranking to one public root navigation page, for example, a top-level category like Crypto or Sports. Get page ids from the navigation tree.
  • marketPageId is accepted only together with metric=pnl. Sending it with the default position-size metric returns 400.
  • A marketPageId that does not identify an active public root navigation page returns 400.
  • The response echoes marketPageId (null when unfiltered).
Example request

Entry fields

Each entry identifies the trader and the market, and includes:
  • heldShares, mark, and unrealizedPnl — the open position line and its live valuation.
  • avgEntry — the position’s average entry price per share in collateral.
  • market.routeSlug — the slug to use when building frontend market links; falls back to market.slug when no dedicated route exists.
  • market.imageUrl — the market’s image, or null when none is set.

State field

Every response carries a state. Treat it as the readiness signal: For live refresh, subscribe to the unrealizedPnlProjectionChanged WebSocket event for the BIGGEST_POSITIONS scope and refetch this endpoint when a hint arrives. The same hint covers every metric and marketPageId variant of this endpoint.

Query Parameters

limit
integer
default:20

Number of position lines to return (1-50).

Required range: 1 <= x <= 50

Response

Ranked biggest open positions

schemaVersion
enum<integer>
required
Available options:
1
state
enum<string>
required

Readiness of the underlying projection. READY is a complete, current snapshot. BUILDING means the projection is being rebuilt and data is empty. STALE and DEGRADED return the last complete snapshot with Cache-Control: no-store; callers should retry shortly.

Available options:
BUILDING,
DEGRADED,
READY,
STALE
scope
enum<string>
required
Available options:
BIGGEST_POSITIONS
limit
integer
required
Required range: 1 <= x <= 50
data
object[]
required
projectionVersion
string | null
scopeVersion
string | null
presentationVersion
string | null
asOf
string<date-time> | null
markAsOf
string<date-time> | null
staleReason
string | null
collateralToken
object | null