GeminiGemini
Demo environmentGet API key
  • Overview
  • Crypto Trading
  • Prediction Markets
  • Perpetuals
  • Stocks
  • API Reference
  • SDKs & Tools
Changelog
Gemini logoGemini logo

© 2026 Gemini Space Station, Inc.

Overview
Core Concepts
    Events, contracts, and outcomesCombo contracts
Market Data
    OverviewFetching Markets
    Ticker formats
      OverviewCryptoSportsSports Market TaxonomyCommoditiesWeather
Trading
    QuickstartOrder lifecycle and settlement
    Full REST reference
      Combo RFQ
      Events
      Volume
      Terms
      Order Management
      Positions
      Rewards
    WebSocket APIs
      OverviewAuthenticationMessage format
      Streams
        Book tickerL2 partial depthL2 differential depthTrade streamOrder eventsBalance updatesPosition updatesContract statusPrediction
      Utility
      Subscriptions
      L2 Data
      Order management
      Combo RFQ
        OverviewWebSocket streamsQuote methodsMaker integrationExamples
Market Makers
    Maker Fee-Free Trading PromoTaker Rewards ProgramMaker Rebate ProgramLiquidity Rewards ProgramMarket Maker Program
Resources
    SchemasDemo environmentRate limitsErrors
Combo RFQ

Combos Request-for-Quote (RFQ)

Production availability: The combo RFQ discovery and private-delivery streams and maker quote methods are available in production for beta testing. 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 prediction contracts. A requester (taker) requests quotes for a bundle of two or more contracts. Market makers submit private quotes during an auction window. When the requester accepts the winning quote and the maker confirms, the trade settles.

Auctions are sealed. Quote submissions and withdrawals remain hidden from all participants while the auction is open. At close, Gemini discloses only the winning quote to the requester. Losing quotes remain private.

The maker interface runs entirely over WebSocket. Event streams broadcast RFQs and state updates, while request-response methods submit quotes over 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 operates across three decision windows. All actions must complete strictly before their respective deadlines; actions received at or after the deadline fail.

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 reached first, it shortens later windows.

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 contract quantity (q). The quantity grid can be whole contracts or 0.01 fractional contracts; 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.
StreamsWebSocket streams
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