Combo redemptions and reductions
Combos
Combo Redemptions
Query terminal combo redemptions, partial post-resolution compression, and exact on-chain lineage.
GET
Combo redemptions and reductions
Use this endpoint to answer one question: after a user’s combo (parlay) was processed, was the whole position redeemed, or were settled legs removed and a smaller combo left behind?
The response preserves Polymarket’s public combo activity fields and adds the explicit before-and-after transition. That includes what the combo contained before the operation, which legs were removed, what remained, and whether the resulting combo is still held.
This endpoint is additive. It does not change standard positions or combo position responses.
Use
No filter is required. Use the filters below for wallet, market, position, transaction, event, scope, or time-bounded reads.
A non-terminal
For a combo reduced to a smaller combo—for example, three legs reduced to two:
This distinction is intentional:
GET /v3/combos/activity for ordinary combo acquisition and burn activity such as PositionsSplit and PositionsMerged. This endpoint is scoped to terminal redemptions, post-resolution compression, and the module-level transformations needed to explain redemption lineage.
The consumer view
- A full redemption means the complete combo was consumed.
remaining_leg_countis0, and there is no remaining combo position. - A partial redemption means post-resolution compression removed one or more settled legs and produced a smaller combo.
remaining_comboidentifies the resulting position and, when available, whether the wallet still holds it. - A transformation changes combo structure but is not evidence of a redemption payout. These rows are kept separate so extraction or wrapping is not mistaken for money being redeemed.
leg_transition: "5_to_1" means a five-leg combo became a one-leg combo. Four legs were removed, one leg remained, and the user may still hold the new one-leg position.
How this differs from Polymarket combo activity
Polymarket provides a public combo activity endpoint and combo positions endpoint. The activity response supplies the lifecycle event, reported combo identifiers, amount or payout, transaction details, and a per-leg breakdown. polynode preserves that basic record and adds the transaction-level interpretation needed to explain the redemption directly:
In the public
5_to_1 transaction used below, Polymarket reports a COMPRESS event with the resulting one-leg combo. polynode also identifies the consumed five-leg combo, the four removed legs, the exact source-to-destination position transition, and the remaining holding. This removes the need to reconstruct the change from separate activity and position records.
Request
Query parameters
Full redemptions
PositionRedeemed proves that the entire referenced combo position was redeemed. A terminal Compressed event whose destination position is 0 is also classified as full, with redemption_evidence: "terminal_compression". Router and auto-redeemer transactions use the user-facing wallet rather than attributing the redemption to an intermediary contract.
Partial post-resolution redemptions
Compressed row proves that post-resolution processing changed an old combo position into a smaller combo position. The leg arrays below are abbreviated:
full_combo_condition_ididentifies the pre-transition combo consumed by this compression.reduced_combo_condition_ididentifies the surviving smaller combo.combo_condition_id,combo_position_id, andlegsretain Polymarket’s basic record for the surviving combo.full_legsandsource_legspreserve that pre-transition combo context.remaining_legsandremoved_legscompare the indexed leg registries.source_position_idanddestination_position_idprovide the exact ERC-1155 transition.source_leg_count,removed_leg_count, andremaining_leg_countanswer how many legs the operation started with, removed, and left behind.leg_transitionis the compact form, such as3_to_2.remaining_combois a compact holding snapshot for the destination combo. It does not include entry price, cost basis, or P&L and is not a replacement for the positions endpoint.
has_collateral_payout and collateral_out_usdc tell you whether compression also emitted collateral. A zero collateral amount can still be a real partial resolution: the surviving value moved entirely into the reduced combo position.
For a full redemption, remaining_leg_count is 0, removed_leg_count equals the source leg count, and remaining_combo is omitted. If a partial redemption’s current destination balance is unavailable, remaining_combo still includes its condition, position, and shares_created; balance-dependent fields are omitted rather than assumed to be zero.
Leg identifiers, result, and price
Each object inlegs, full_legs, source_legs, remaining_legs, removed_legs, and residual_legs can include:
settlement is the terminal 0 or 1 outcome value. clob_mid is the current order-book midpoint. last_fill is the most recent trade price when a midpoint is unavailable. polymarket_market is Polymarket’s market-level outcome price fallback.
market_token_id is intentionally distinct from leg_position_id. The former is the standard market token accepted by price and order-book endpoints; the latter is the combo contract’s leg identifier.
Permissionless combo markets can contain an on-chain leg that has no corresponding Polymarket CLOB market or order book. In that case, the exact leg_position_id remains present while market_token_id, leg_result, leg_current_price, leg_price_source, and standard market metadata are omitted rather than inferred.
Structural extraction is not a redemption
Extracted returns full_combo_condition_id, reduced_combo_condition_id, and residual_combo_condition_id, which is useful for reconstructing a larger combo into smaller branches. It is classified as:
Extracted proves exact condition lineage, but it does not prove a redemption payout. Use Compressed for a partial post-resolution transition and PositionRedeemed or terminal compression for a terminal redemption.
Scope meanings
Evidence and lineage fields
Condition-to-position mapping is deterministic: the combo condition occupies the high 31 bytes of the position ID and the outcome index occupies the low byte. This lets historical full redemptions map to their combo without re-indexing unrelated contracts.
For a chain of multiple compressions,
full_combo_condition_id is the immediate pre-transition combo on each row, not a guessed earliest ancestor. Follow source_position_id and destination_position_id across rows when the chain facts are available; the endpoint does not invent a root parlay identifier that the contract did not emit.
Metadata coverage
metadata_coverage describes the leg expansion available for that row:
complete: the required combo leg registries are available.missing_source_legs: the source condition is known on chain, but its leg metadata is not yet available.missing_reduced_legs: the reduction is known on chain, but the reduced combo’s leg metadata is not yet available.
Authorizations
Query Parameters
Wallet address
Pattern:
^0x[a-fA-F0-9]{40}$One or more comma-separated combo condition IDs. Matches any condition in the lineage.
Combo condition ID. Matches source, full, parent, reduced, residual, child, and destination conditions.
Pattern:
^0x[a-fA-F0-9]{62}$Primary, source, destination, or underlying position ID
Pattern:
^[0-9]+$Available options:
PositionRedeemed, Compressed, ConvertedOnEvent, ConvertedToYesBasket, Extracted, Injected, MergedFromYesBasket, MergedOnCondition, MergedOnEvent, SplitOnCondition, SplitOnEvent, Unwrapped, Wrapped, all full = terminal redemption; partial = non-terminal post-resolution compression; transformation = non-redemption lifecycle lineage
Available options:
full, partial, transformation, all Available options:
FULL_COMBO, PARTIAL_COMBO, COMBO_TRANSFORMATION, all Exact Polygon transaction hash
Pattern:
^0x[a-fA-F0-9]{64}$Inclusive Unix timestamp in seconds
Required range:
x >= 0Inclusive Unix timestamp in seconds
Required range:
x >= 0Required range:
1 <= x <= 300Required range:
x >= 0
