v1
latestOpenAPI 3.1.02026-07-243035381.4 MBGet 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.
Path parameters
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.
Wallet address. Must be a 0x-prefixed 40-hex EVM address. Kalshi wallets return 400.
Query parameters
Window for totalPnl and the settlement counts (closedPositions/wins/losses/ winRate) on /wallets/{address}/portfolio. totalCostBasis/realizedPnl/roi are all-time regardless.
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
}
}