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

Quote Methods

The combo RFQ WebSocket methods documented on this page are available in production for beta testing. Quoting requires an eligible account with the required capabilities described below.

The maker quote actions are WebSocket request/response methods on the same authenticated connection that carries your streams. Requests and responses use the standard envelope documented in Message Format:

Code
{ "id": 1, "method": "rfq.submit_quote", "params": { ... } }

All three methods require an authenticated connection. The account identity on every call is the authenticated account — there is no account parameter.

Each method also requires a specific trading capability on your session: rfq.submit_quote and rfq.confirm_quote require place_orders, while rfq.withdraw_quote requires cancel_orders. A call from a session missing the required capability is rejected with -1004 (403). A key implication: a session scoped to place_orders but not cancel_orders can submit and confirm, but its rfq.withdraw_quote calls will fail with -1004.

rfq.submit_quote

Submit a quote on an open combo request-for-quote auction, discovered on the requestForQuote stream.

Quotes are immutable and limited to one per account per RFQ — they cannot be revised, and withdrawing does not free the slot. The quoting window is sealed: submission and withdrawal are not delivered to the requester or other makers while the auction is open. After close, the requester receives only the selected quote, keyed by quoteId and never attributed to your account; losing quotes remain undisclosed.

Use the optional clientId to correlate the maker order with your own records. Gemini emits this value as c in the maker's authenticated orderUpdate fill event. If you omit it, Gemini uses a deterministic RFQ client order ID. The value must contain only printable ASCII characters and be at most 36 characters. Keep it unique for the maker account because Gemini does not deduplicate it.

Parameters

NameTypeRequiredDescription
rfqIdstringYesThe request-for-quote to quote on, as broadcast on the requestForQuote stream.
pricestringYesSingle-sided bid per contract. Must be strictly between 0 and 1 and lie on the venue price tick; the default tick is 0.0001.
quantitystringYesMaximum quantity this quote covers, in contracts. It must cover the complete request for the quote to be eligible at close; the RFQ quantity grid can be whole contracts or 0.01 fractional contracts.
validUntilintegerNoClose-time eligibility deadline as a Unix timestamp (ms). If supplied, it must be in the future. The quote remains eligible when validUntil >= w; a value before w expires it at close. If omitted, the service sets it to w. It is not checked after winner selection.
clientIdstringNoOptional client order ID for tracking the maker fill. Gemini emits it as c in the fill's orderUpdate event. It must contain only printable ASCII characters and be at most 36 characters. Keep it unique for the maker account because Gemini does not deduplicate it.

Example

Code
{ "id": 1, "method": "rfq.submit_quote", "params": { "rfqId": "01J9Z3K7Q2N8M4P6R8T0V2W4X6", "price": "0.55", "quantity": "1000", "validUntil": 1780000060000, "clientId": "maker-fill-123" } }

Response:

Code
{ "id": 1, "status": 200, "result": { "rfqId": "01J9Z3K7Q2N8M4P6R8T0V2W4X6", "quoteId": "01J9Z2K7Q2N8M4P6R8T0V2W4X6" } }

Keep the returned quoteId: acceptances on the requestForQuote@account stream and the withdraw/confirm methods are keyed by it.

At close, quote validity is evaluated against w, not the later time at which close processing happens. Eligible quotes are ranked by lowest price and then earliest submission. The venue checks maker collateral freshly in that order and falls through to the next candidate when necessary. A requester limit price, when present, is enforced during selection but is not exposed on the maker discovery stream.

Errors

CodeStatusMeaning
-1002401Unauthorized — authentication required.
-1013400Invalid parameters — check rfqId, price, quantity, validUntil, or clientId.
-2010400Quote rejected — RFQ not found or no longer open, price off the tick grid, or a quote from this account already exists.

rfq.withdraw_quote

Withdraw your own quote while the auction is still open and strictly before w. Withdrawal is final for that RFQ: a withdrawn quote is excluded from winner selection, cannot be reinstated, and does not free the one-quote-per-account slot.

The withdrawal is not delivered to the requester or other makers.

Parameters

NameTypeRequiredDescription
rfqIdstringYesThe request-for-quote the quote was submitted on.
quoteIdstringYesThe quote to withdraw, as returned by rfq.submit_quote.

Example

Code
{ "id": 2, "method": "rfq.withdraw_quote", "params": { "rfqId": "01J9Z3K7Q2N8M4P6R8T0V2W4X6", "quoteId": "01J9Z2K7Q2N8M4P6R8T0V2W4X6" } }

Response:

Code
{ "id": 2, "status": 200, "result": { "rfqId": "01J9Z3K7Q2N8M4P6R8T0V2W4X6", "quoteId": "01J9Z2K7Q2N8M4P6R8T0V2W4X6" } }

Errors

CodeStatusMeaning
-1002401Unauthorized — authentication required.
-1013400Invalid parameters — check rfqId and quoteId.
-2010400Withdraw rejected — RFQ or quote not found, not owned by this account, or the auction already closed.

rfq.confirm_quote

The winning maker's last-look. When the requester accepts your quote, an ACCEPTED delivery arrives on the requestForQuote@account stream. The 1-second deadline begins when the RFQ enters CONFIRMING, so respond immediately:

  • confirm: true — authorize execution and proceed to settlement.
  • confirm: false — decline and fail the RFQ.

An omitted confirm is rejected; it is never treated as an implicit decline.

Both confirmation and explicit decline must complete strictly before the deadline. If neither does, the RFQ fails automatically.

Parameters

NameTypeRequiredDescription
rfqIdstringYesThe request-for-quote awaiting your confirmation.
quoteIdstringYesYour winning quote, as delivered on the requestForQuote@account stream.
confirmbooleanYestrue confirms the trade and proceeds to settlement; false declines and fails the request-for-quote.

Example

Code
{ "id": 3, "method": "rfq.confirm_quote", "params": { "rfqId": "01J9Z3K7Q2N8M4P6R8T0V2W4X6", "quoteId": "01J9Z2K7Q2N8M4P6R8T0V2W4X6", "confirm": true } }

Response:

Code
{ "id": 3, "status": 200, "result": { "rfqId": "01J9Z3K7Q2N8M4P6R8T0V2W4X6", "quoteId": "01J9Z2K7Q2N8M4P6R8T0V2W4X6", "confirmed": true } }

Errors

CodeStatusMeaning
-1002401Unauthorized — authentication required.
-1013400Invalid parameters — check rfqId, quoteId, and confirm.
-2010400Confirm rejected — RFQ not awaiting this account's confirmation, or the quote is not the recorded winner.

Shared error behavior

  • -1004 (403) — missing required capability (place_orders for submit/confirm, cancel_orders for withdraw).
  • -1003 (429) — rate limited. Standard request-weight limits apply; see the Introduction.
  • -1101 (503) — the combo RFQ service is temporarily unavailable. Safe to retry with backoff.
  • -1000 (500) — internal error.

See also

  • WebSocket Streams — the discovery and delivery streams these methods pair with.
  • Maker Integration — the full workflow.
  • Message Format — request/response envelope and general error codes.
WebSocket streamsMaker integration
On this page
  • rfq.submit_quote
    • Parameters
    • Example
    • Errors
  • rfq.withdraw_quote
    • Parameters
    • Example
    • Errors
  • rfq.confirm_quote
    • Parameters
    • Example
    • Errors
  • Shared error behavior
  • See also
JSON
JSON
JSON
JSON
JSON
JSON
JSON