Skip to main content
What you’ll build: a parlay portfolio view for a Polymarket wallet — every combo the trader holds, each expanded into its legs with live prices, won/lost/pending status, and the combo-level PnL row.
A combo (combinatorial market / parlay) is one tradeable instrument whose payout depends on multiple underlying legs. Struct treats the combo as a single position with a single entry price, so there is no separate per-leg PnL. What you get instead is the useful decomposition: the trader’s combo position row, plus each leg’s market metadata, live price, and result status, together with derived figures a parlay UI needs (implied_probability, potential_payout, is_dead, leg counts).

When to use this

  • Wallet pages that separate parlays from standard binary and neg-risk positions.
  • Drilldowns from a combo row into “which legs are still live?”
  • Leaderboard or scout tools that rank wallets by combo_trade_count and then open their combo book.

Combo vs combos

Both return the same entry shape (ComboPnlResponse). Listing is for the portfolio; the singular endpoint is for a detail view after the user clicks a row.

Step 1: list the trader’s combos

Page through open parlays first, then widen the status filter as needed.

Filters and sort

Each call costs 1 credit.

Step 2: read one combo entry

Each list item (and the singular endpoint response) looks like this: A Yes combo dies when any leg loses. A No combo dies when every leg has resolved and none lost (the all-win case). Use is_dead and the leg tallies to drive “still alive” badges without re-deriving the rules client-side.

Step 3: expand a single combo

Pass exactly one of condition_id or position_id. Use position_id when you already have a row from positions or from /combos (it selects that outcome side). Use condition_id when you only know the market; the API prefers the Yes side and falls back to whichever side the trader holds.
Unknown combos return 200 with data: null and an unknown combo message (not a 404). Passing both ids, neither id, a non-combo id, or a malformed id returns 400. Each call costs 1 credit.

Finding combos from the rest of the PnL suite

You do not have to start on /combos. Related fields on existing trader PnL surfaces:
  • Positions / markets: rows carry combo_type: "combinatorial" when the market is a combo (parlay). Filter with combo=combinatorial (or true / false) on positions and markets.
  • Trader summary / global leaderboard: combo_trade_count is the number of combo-exchange fills. Sort the global PnL leaderboard with sort_by=combo_trade_count to find active parlay traders, then open /combos for that wallet.
From a position row, pass its position_id into /combo for the leg breakdown.
Last modified on July 28, 2026