Complete-set redemption
Complete-set redemption
A complete set is one share of every outcome in a market: YES + NO on a binary
market, or all N legs of a categorical one. Exactly one outcome resolves to $1.00 and the
rest to $0.00, so holding a complete set pays exactly $1 per set at resolution, whatever
the result — the payout does not depend on which outcome wins.
Because that value is certain, it does not have to wait for resolution.
POST /orders/merge-positions burns a complete set out of your positions and credits $1
per set to your wallet immediately.
This is a position transformation, not a trade. Nothing is priced, nothing crosses the book, and no counterparty is involved.
What the endpoint does
Call it with a market id. The service takes the minimum share count across all of that market’s outcomes, floors it to whole cents, burns that many shares from every outcome, and credits the same number of dollars.
Holding 100 YES and 60 NO merges 60 sets for $60.00, leaving 40 YES and 0 NO.
The remaining 40 YES is a normal directional position and is untouched.
Properties you can rely on
When there is nothing to merge
The call succeeds with sets_merged: "0.00" — it is not an error — whenever you do not hold
a complete set: a position missing on any outcome, or a minimum below one cent. Partial
coverage of a categorical market (three legs of a five-way race) is not a set.
A resolved or cancelled market rejects the call: there is nothing left to redeem early.
Availability
Complete-set redemption is a flagged capability (POSITION_MERGE_ENABLED). Where it is
not enabled, POST /orders/merge-positions returns 404 Not Found like any route that does
not exist in that environment. Check the endpoint against your target environment before
building a flow around it, and treat the 404 as “not available here”, not as a failure of
your request.
Merging requires the orders:write scope.

