Idempotency-Key header to prevent duplicate submissions.
POST /v2/trade/combo/quote
Request a firm RFQ quote for a multi-leg parlay. The quote is priced by a live maker counterparty and is valid for approximately 8.5 seconds. Use the returnedcombo_order_id and quote_id together when calling /combo/accept.
Headers
Request
string[]
required
An array of 2–10 YES outcome token IDs, each representing one leg of the parlay. All legs must be on separate markets.
number
required
The total amount in US dollars you want to spend on this combo. Minimum
0.01.string
Trade direction. Only
"BUY" is currently supported. Defaults to "BUY" if omitted.Response
string
Unique identifier for this combo order. Pass this value to
/combo/accept and /combo/redeem.string
Unique identifier for this specific RFQ quote. Required when calling
/combo/accept. Becomes invalid after expires_at.string
The underlying RFQ session identifier assigned by the maker infrastructure.
string
The blended price in cents per YES combo share. For example,
"2" means each share costs $0.02. Returned as a string.string
The notional dollars the maker counterparty posts to back this quote. Returned as a string.
The number of combo shares you will receive if you accept this quote. Returned as a string.
string
ISO-8601 datetime after which this quote is no longer valid. You must call
/combo/accept before this timestamp.POST /v2/trade/combo/accept
Accept a previously issued quote and execute the combo trade on-chain. You must call this endpoint before theexpires_at timestamp returned by /combo/quote.
Headers
Request
string
required
The
combo_order_id returned by /combo/quote.string
required
The
quote_id returned by /combo/quote. This ties the accept to the specific live quote from the maker.Response
string
The same
combo_order_id passed in the request, confirming which order was executed.string
"EXECUTED" when the combo has been successfully submitted on-chain.string
The Polygon transaction hash for the on-chain execution. Use this to verify finality on a block explorer.
POST /v2/trade/combo/redeem
Redeem a winning combo position for pUSD after all legs have resolved in your favor. You can identify the position using either thecombo_order_id from the original trade or the combo_position_id returned by GET /combo/positions. Provide one or the other, not both.
Headers
Request
string
The
combo_order_id from the /combo/accept response. Provide this or combo_position_id, not both.string
The
combo_position_id from GET /combo/positions. Useful if you did not store the original order ID. Provide this or combo_order_id, not both.Response
string
The order identifier for the redeemed combo.
string
"REDEEMED" when pUSD has been successfully credited to your account.string
The amount of pUSD paid out to your account. Returned as a string.
string
The Polygon transaction hash for the on-chain redemption.
Only positions with status
RESOLVED_WIN produce a payout. If any single leg resolves against you, the entire combo is worthless, that is correct parlay behavior. Attempting to redeem a RESOLVED_LOSS position returns an error.GET /v2/trade/combo/positions
List all combo positions for the authenticated user, across all statuses. Use this endpoint to find positions eligible for redemption or to monitor the resolution of in-flight combos.Headers
Query parameters
Common rejections
410 QUOTE_EXPIRED, quote window has closed
410 QUOTE_EXPIRED, quote window has closed
The ~8.5-second acceptance window for this quote has passed. Call
POST /combo/quote again to obtain a fresh price, then call POST /combo/accept with the new combo_order_id and quote_id. Never retry a stale accept, the underlying prices may have moved significantly.422 INSUFFICIENT_BALANCE, not enough pUSD
422 INSUFFICIENT_BALANCE, not enough pUSD
Your account does not have enough pUSD to cover the
notional_usd you requested. The error message specifies the exact shortfall in dollars. Reduce notional_usd or top up your balance before retrying.422 NO_LIQUIDITY: no maker responded to the RFQ
422 NO_LIQUIDITY: no maker responded to the RFQ
No maker counterparty was willing to price the combo at this size. This is most common on thin markets or very large notionals. Wait a moment and retry, or reduce
notional_usd. If the market is consistently illiquid, consider removing the lowest-volume leg from the combo.