Combos Request-for-Quote (RFQ)
Production availability: The combo RFQ discovery and private-delivery streams and maker quote methods are not currently enabled in production. Quoting requires an eligible account with the capabilities described in Quote Methods.
What combo RFQ is
Combo RFQ is a private, sealed-bid auction for multi-leg combo (parlay) prediction-market contracts. A requester (taker) opens an RFQ on a combo — a single tradable bundle of two or more prediction-market contracts — and market makers respond with private quotes during a short auction window. The best quote is selected, the requester accepts it, the winning maker confirms, and the trade settles.
The quoting window is sealed from every customer: quote submissions and withdrawals are not delivered to the requester or other makers while the auction is open. After close, only the selected quote is disclosed privately to the requester; losing quotes remain undisclosed.
The entire maker surface is WebSocket: discovery and deliveries arrive as streams, and quotes are submitted as request/response methods on the same connection.
End-to-end flow
Code
Lifecycle timing
The auction uses three fixed decision windows. Quote submission or withdrawal, requester acceptance, and maker confirmation or decline must complete strictly before their respective deadlines; an action arriving exactly at its deadline is rejected.
| Phase | Window |
|---|---|
| Maker quoting | 1 second from RFQ creation. The public w timestamp is the quote-submission deadline. |
| Requester decision | 5 seconds from the transition to PENDING_ACCEPTANCE to accept the selected quote. |
| Maker confirmation | 1 second from the transition to CONFIRMING for the winning maker to confirm or decline. |
The hard-expiry timestamp x is an absolute upper bound. If it arrives first, it shortens a later lifecycle window.
Winner selection
When the quoting window ends, the venue considers only active quotes that:
- were submitted before
wand havevalidUntil >= w; - cover the complete requested size;
- are at or below the requester's private limit price, when one is set; and
- pass a fresh available-collateral check at close.
Eligible quotes are ranked by lowest price, with an equal-price tie going to the earliest submission. The venue checks candidates in that order and selects the first maker with sufficient available collateral. If a candidate fails that fresh check, the venue continues to the next ranked quote. If none qualifies, the RFQ expires without disclosing a quote.
Quote validity is evaluated against the logical close w, even if close processing runs later. Once a quote is selected, validUntil is not checked again during requester acceptance, maker confirmation, or finalization; those stages use their own lifecycle deadlines.
Request lifecycle
An RFQ moves through these states (S on every stream event):
Code
| State | Meaning |
|---|---|
OPEN | Live and quotable. Quotes are accepted during the 1-second quoting window, until w on the broadcast. |
PENDING_ACCEPTANCE | The window closed and a winning quote was selected; the requester has up to 5 seconds from this transition to accept. |
CONFIRMING | The requester accepted; the winning maker has up to 1 second from this transition to confirm or decline. |
FINALIZING | The maker confirmed; the venue is executing and settling the trade. |
FINALIZED | Execution completed successfully. f is present on the terminal broadcast. |
CANCELLED | The requester cancelled before accepting the winning quote. |
EXPIRED | No feasible quote existed at the window close, or the requester did not accept the winner in time. |
FAILED | The maker declined or timed out, or execution could not be completed. |
f can also be present on a FAILED event because the execution quantity is calculated when the requester accepts. Only S: "FINALIZED" confirms successful execution; do not infer a fill from f alone.
:::caution Requester full-size does not guarantee maker full-size
The requester's execution order is fill-or-kill and must fill in full for the RFQ to finalize. The selected maker's post-only order executes independently on the normal order book and may fill partially or not at all. A maker partial fill can remain even if the requester order fails and the RFQ ends in FAILED; only the maker order's unfilled remainder is cancelled. See Execution and partial-fill risk.
:::
Anonymity and privacy guarantees
- The public
requestForQuotefeed carries only the auction's existence and parameters — no requester identity, no maker identities, no quote contents. - While the auction is open, a quote is visible only to the maker who submitted it; the requester receives no submission or withdrawal events.
- After close, only the selected quote is disclosed privately to the requester. Losing quotes remain undisclosed.
- The requester is never told which maker quoted: quotes are keyed by
quoteIdonly. - The service does not assign participant pseudonyms.
rfqIdidentifies an auction andquoteIdidentifies a quote; neither identifies a participant or account. - RFQ streams do not disclose counterparty account identity, including after execution.
Surface map
| You want to... | Use |
|---|---|
| Discover open RFQ auctions | requestForQuote stream (public) |
| Receive the selected quote on your RFQ or acceptance of your quote | requestForQuote@account stream (authenticated) |
| Submit a quote | rfq.submit_quote |
| Withdraw your quote | rfq.withdraw_quote |
| Confirm or decline after winning | rfq.confirm_quote |
Glossary
| Term | Meaning |
|---|---|
| RFQ | One request-for-quote auction, identified by rfqId (a ULID). |
| Leg | One prediction-market contract inside the combo, with the outcome (YES/NO) the combo takes on it. |
| Notional | RFQ sized as a USD amount (n). Mutually exclusive with requested quantity. |
| Requested quantity | RFQ sized as a contract quantity (q). The quantity grid can be whole contracts or 0.01 fractional contracts; mutually exclusive with notional. |
| Quote | A maker's private, immutable price + maximum quantity on an RFQ. One per account per RFQ. |
| Last-look | The winning maker's confirm/decline step after the requester accepts. |
Read next
- WebSocket Streams — message shapes for the discovery and delivery streams.
- Quote Methods — submit, withdraw, and confirm.
- Maker Integration — the end-to-end maker workflow.
- Examples — a worked auction from broadcast to settlement.
- Combo Contracts — what a combo is and how it settles.