Skip to main content
GET
Wallet P&L
Returns P&L data for a wallet in USD. Without a time parameter, it returns the wallet’s current all-time P&L. With period, after, or before, it returns this boundary calculation across all matching positions:
Both boundaries are inclusive. A state change timestamped exactly at after or before is included. The two modes have different counting semantics: all-time wins and losses are current position counts; time-windowed wins, losses, and the legacy events field count positions whose realized state changed. Time-windowed responses declare count_type: "positions_changed". Do not compare the counts directly.
Time-windowed P&L is a realized-state change, not a historical snapshot of the all-time leaderboard. It captures realized changes reflected by sells, merges, redemptions, and timestamped corrections. A buy-and-hold position can therefore contribute 0 to a window even if terminal treatment makes the resolved position profitable in current all-time P&L. For the same reason, an after=1&before=now result is not expected to equal the all-time response or leaderboard total.
The boundary calculation uses Polynode’s recovered Polymarket weighted-average-cost state. The difference is scope and timing, not a simpler cost-basis formula: all-time P&L uses the current recovered portfolio state, including terminal treatment for resolved holdings and current unrealized P&L, while a time window reports only the change in realized state across its boundaries.
Wallet P&L supports focused market filters such as category, tags/tag_slug, market/market_slug, event_slug, and condition_id. For leaderboard views, use one primary filter dimension per request.

Request

Query parameters

Examples

All-time P&L

All-time P&L including combos

For time-windowed or tag-filtered P&L, the response stays successful. If combo P&L cannot be safely added to that filtered view, combo_pnl.included is false and the standard market P&L fields remain unchanged.

30-day P&L

Filtered P&L

30-day P&L with unrealized

Pass include_unrealized=true to add current unrealized P&L to the realized-state change. This does not turn the response into a historical portfolio-value change between after and before.

Response fields (all-time)

Response fields (with period)

Additional fields (with include_unrealized=true)

Errors

Authorizations

x-api-key
string
header
required

Path Parameters

address
string
required

Wallet address

Query Parameters

period
enum<string>

Time window shortcut

Available options:
1d,
7d,
30d,
1y
after
integer

Inclusive Unix timestamp lower bound; the realized-state baseline is taken immediately before this timestamp

before
integer

Inclusive Unix timestamp upper bound

include_unrealized
boolean
default:false

Add current unrealized P&L to the time-windowed realized-state change; this is not the unrealized-P&L change between the requested boundaries

Response

Wallet P&L