Platform data
Platform data
Platform positions
Returns a platform-wide snapshot of open positions, useful for aggregate exposure and liquidation-risk visualizations. This query scans open positions and has weight 20; use it sparingly.
{
"type": "platformPositions",
"symbol": "PERP_BTC_USDC",
"broker_id": "pangoperps",
"min_notional": "10000",
"limit": 500
}| Field | Type | Required | Default / limits | Description |
|---|---|---|---|---|
| symbol | string | No | — | Optional market filter. |
| broker_id | string | No | — | Optional broker filter. |
| min_notional | decimal | No | 0 | Minimum position notional to include. |
| limit | int | No | 500; 1–5000 | Maximum rows. |
| cursor | string | No | — | Opaque pagination cursor. |
data contains total_long_notional, total_short_notional, total_positions, rows[], and next_cursor. The aggregate totals and count apply to the complete filtered snapshot, not only the current page. Position rows include address, account_id, broker_id, symbol, side, position_qty, notional, average_open_price, mark_price, est_liq_price, unrealized_pnl, unsettled_pnl, leverage, margin_mode, and opened_at. est_liq_price, unrealized_pnl, unsettled_pnl, leverage, and margin_mode can be null if position calculation fails. margin_mode is otherwise CROSS or ISOLATED; opened_at is a millisecond epoch. Results are cached for 5 seconds and sorted by position ID descending. For a liquidation heatmap, group est_liq_price into price buckets in your application.
Top addresses
Returns a leaderboard of addresses ranked by notional, volume, PnL, or trade count. Each row includes statistics over multiple time windows. Weight: 10.
{
"type": "topAddresses",
"symbol": "PERP_BTC_USDC",
"sort_by": "pnl_7d",
"limit": 50
}| Field | Type | Required | Default / limits | Description |
|---|---|---|---|---|
| symbol | string | No | Omitted or empty: all markets | Optional market filter. |
| sort_by | string | No | notional | One of notional, volume_24h, volume_7d, volume_30d, pnl_24h, pnl_7d, pnl_30d, or trade_count_24h. |
| min_notional | decimal | No | 0 | Minimum total notional to include. |
| limit | int | No | 50; 1–200 | Maximum rows. |
| cursor | string | No | — | Opaque cursor. |
Each row includes address, broker_id, total_notional, pnl_24h, pnl_7d, pnl_30d, volume_24h, volume_7d, volume_30d, trade_count_24h, win_rate_24h, win_rate_7d, win_rate_30d, avg_trade_size, and position_count. Monetary values are decimal strings; trade counts are integers and win rates are numeric values. The 24-hour figures use a rolling window. The 7-day and 30-day figures use UTC-day-aligned windows, combining today's live values with the preceding days. avg_trade_size is 24-hour volume divided by 24-hour trade count, or null when there are no trades. Historical win rates can be null if that data source is unavailable.
data.last_updated_time indicates when the cached snapshot was assembled. Results are cached for 30 minutes by symbol, sort field, and minimum notional; use last_updated_time to assess age. Historical-data outages do not prevent the response from being returned, but 7-day and 30-day win rates may be null. Use data.next_cursor to continue through results.