GeminiGemini
SandboxGet API key
  • Crypto Trading
  • Prediction Markets
Changelog
Gemini Crypto Exchange LogoGemini Crypto Exchange Logo

© 2026 Gemini Space Station, Inc.

Getting StartedAPI Specifications
Maker and Taker Incentives
    Market Maker ProgramMaker Rebate ProgramLiquidity Rewards ProgramTaker Rewards Program
WebSocket
    IntroductionAuthenticationMessage Format
    Streams
      Book TickerL2 Partial DepthL2 Differential DepthTrade StreamOrder EventsBalance UpdatesPosition UpdatesContract Status
    Playground
      OverviewconninfopingtimeSUBSCRIBEUNSUBSCRIBELIST_SUBSCRIPTIONSdepthorder.placeorder.cancelorder.cancel_allorder.cancel_session
REST APIs
    Combos
    Events
    Terms
    Order Management
    Positions
    Rewards
Combo Contracts
    Overview
Combos Request-for-Quote (RFQ)
    OverviewWebSocket StreamsQuote MethodsMaker IntegrationExamples
Tickers
    OverviewCryptoSportsCommoditiesWeather
Schemas
Combos Request-for-Quote (RFQ)

Combos Request-for-Quote (RFQ)

Status: Beta. The discovery and private-delivery streams and the maker quote methods are live. 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
Requester Venue Makers ───────── ───── ────── opens RFQ ───────────────► broadcast on requestForQuote ───► all subscribers (anonymous) ◄─── rfq.submit_quote ─────────── each interested maker (sealed while open; no quote deliveries) selected quote ◄────────── auction window closes; best eligible quote selected accepts winning quote ────► ACCEPTED delivered ────────────► winning maker only ◄─── rfq.confirm_quote ────────── winning maker (last-look) CONFIRMED delivered ◄───── trade proceeds to settlement

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.

PhaseWindow
Maker quoting1 second from RFQ creation. The public w timestamp is the quote-submission deadline.
Requester decision5 seconds from the transition to PENDING_ACCEPTANCE to accept the selected quote.
Maker confirmation1 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 w and have validUntil >= 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
OPEN ──► PENDING_ACCEPTANCE ──► CONFIRMING ──► FINALIZING ──► FINALIZED │ │ │ │ ├── CANCELLED ├── CANCELLED └── FAILED └── FAILED └── EXPIRED └── EXPIRED (declined or timed out)
StateMeaning
OPENLive and quotable. Quotes are accepted during the 1-second quoting window, until w on the broadcast.
PENDING_ACCEPTANCEThe window closed and a winning quote was selected; the requester has up to 5 seconds from this transition to accept.
CONFIRMINGThe requester accepted; the winning maker has up to 1 second from this transition to confirm or decline.
FINALIZINGThe maker confirmed; the venue is executing and settling the trade.
FINALIZEDExecution completed successfully. f is present on the terminal broadcast.
CANCELLEDThe requester cancelled before accepting the winning quote.
EXPIREDNo feasible quote existed at the window close, or the requester did not accept the winner in time.
FAILEDThe 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 requestForQuote feed 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 quoteId only.
  • The service does not assign participant pseudonyms. rfqId identifies an auction and quoteId identifies 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 auctionsrequestForQuote stream (public)
Receive the selected quote on your RFQ or acceptance of your quoterequestForQuote@account stream (authenticated)
Submit a quoterfq.submit_quote
Withdraw your quoterfq.withdraw_quote
Confirm or decline after winningrfq.confirm_quote

Glossary

TermMeaning
RFQOne request-for-quote auction, identified by rfqId (a ULID).
LegOne prediction-market contract inside the combo, with the outcome (YES/NO) the combo takes on it.
NotionalRFQ sized as a USD amount (n). Mutually exclusive with requested quantity.
Requested quantityRFQ sized as a whole-contract count (q). Mutually exclusive with notional.
QuoteA maker's private, immutable price + maximum quantity on an RFQ. One per account per RFQ.
Last-lookThe 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.
Last modified on July 21, 2026
OverviewOverview
On this page
  • What combo RFQ is
  • End-to-end flow
  • Lifecycle timing
  • Winner selection
  • Request lifecycle
  • Anonymity and privacy guarantees
  • Surface map
  • Glossary
  • Read next