v1

latestOpenAPI 3.1.02026-07-243035381.4 MB
Prediction API

Get wallet portfolio summary

/v4/data/prediction/wallets/{address}/portfolio

200 credits per API call

Aggregated portfolio summary for a single wallet. Returns position counts (open, redeemable, closed), unrealised and realised PnL, total cost basis, active notional, win rate and ROI — all computed over the requested period. Useful as the headline KPI block on a wallet detail page.

Platform support

  • Polymarket only. Passing any non-EVM address returns 400.

Filtering

  • period selects the lookback window for closed-position aggregates: 24h, 7d, 30d or all. Defaults to all.
  • Open-position counts and activeNotional are always live (the period only affects closed-position roll-ups).

Other notes

  • address is normalised to lowercase before being echoed back in the response.
  • winRate is a percentage in [0, 100] (e.g. 42.5 = 42.5%). It is null when closedPositions is zero — the ratio is undefined, not zero.
  • roi is realised ROI as a percentage (e.g. 23.45 = 23.45%). Computed from realised PnL over total cost basis of closed positions only — unrealised PnL is excluded. null when totalCostBasis is zero.
  • redeemablePositions is the count of positions on a resolved market that the wallet has won but has not yet redeemed. Disjoint from both openPositions and closedPositions — tracked separately so the count of currently actionable positions is visible.
get/v4/data/prediction/wallets/{address}/portfolio

Path parameters

addressstring required

EVM wallet address — 0x-prefixed, 40 hex characters. Returned lowercased in response payloads. Non-EVM inputs (e.g. Kalshi user identifiers) return 400 from every wallets endpoint.

Example:0x56687bf447db6ffa42ffe2204a05edaa20f55839

Wallet address. Must be a 0x-prefixed 40-hex EVM address. Kalshi wallets return 400.

Query parameters

period'24h' | '7d' | '30d' | 'all'

Window for totalPnl and the settlement counts (closedPositions/wins/losses/ winRate) on /wallets/{address}/portfolio. totalCostBasis/realizedPnl/roi are all-time regardless.

Example:all

Window for totalPnl (P&L during the window) and the settlement counts (closedPositions, wins, losses, winRate). totalCostBasis, realizedPnl and roi are all-time regardless of this value. Defaults to all.

Response

OK

Example response

{
  "data": {
    "address": "0x56687bf447db6ffa42ffe2204a05edaa20f55839",
    "period": "all",
    "generatedAt": "2026-05-18T12:34:56Z",
    "openPositions": 12,
    "redeemablePositions": 2,
    "activeNotional": 5421.18,
    "unrealizedPnl": 213.4,
    "closedPositions": 38,
    "wins": 22,
    "losses": 16,
    "winRate": 57.89,
    "totalCostBasis": 18420.5,
    "realizedPnl": 4321.7,
    "totalPnl": 4535.1,
    "roi": 23.46
  }
}