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
        List CombosGet ComboCreate Combo
      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 PromoCollateral ReturnTaker Rewards ProgramMaker Rebate ProgramLiquidity Rewards ProgramMarket Maker Program
Resources
    SchemasDemo environmentRate limitsErrors

Create Combo

REST APIsPrediction MarketsCombosCreate Combo

Create Combo

POSThttps://api.gemini.com/v1/prediction-markets/combos

Create a canonical two-to-six-leg Prediction Markets combo, or retrieve the same combo when its complete leg set already exists.

Production availability

This Combo Prediction Markets endpoint is not currently enabled in production.

POSTv1/prediction-markets/combos
curl --request POST \
  --url https://api.gemini.com/v1/prediction-markets/combos \
  --header 'Content-Type: application/json' \
  --header 'X-GEMINI-APIKEY: <string>' \
  --header 'X-GEMINI-PAYLOAD: <string>' \
  --header 'X-GEMINI-SIGNATURE: <string>' \
  --data '
{
  "legs": [
    {
      "contractId": "101",
      "requiredOutcome": "Yes"
    },
    {
      "contractId": "202",
      "requiredOutcome": "No"
    }
  ]
}
'

Access

This endpoint requires signed private REST authentication, the

Code
PredictionsNewOrder
permission, and an unrestricted trading account. The account is derived from the authenticated API key; do not include an account ID in the request.

Canonicalization

The complete set of legs defines a combo. Reordering the same legs does not create another combo: a new canonical combo returns

Code
201
with
Code
alreadyExisted: false
, while an existing one returns
Code
200
with
Code
alreadyExisted: true
.

Headers

X-GEMINI-APIKEYstring·required
Your API key
X-GEMINI-SIGNATUREstring·required
HEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADstring·required
Base64-encoded JSON payload
Content-Typestring
Default: text/plain
Content-Lengthstring
Default: 0
Cache-Controlstring
Default: no-cache

Request Body

legsarray·required
Two to six distinct underlying contract legs. The service canonicalizes their complete set, so leg order does not create a distinct combo.
legs[].contractIdstring·required
Underlying contract ID as a decimal string.Example: 101
legs[].requiredOutcomestring·enum·required
Required settlement outcome for this leg.Enum values: YesNoExample: Yes
Example request body
{
  "legs": [
    {
      "contractId": "101",
      "requiredOutcome": "Yes"
    },
    {
      "contractId": "202",
      "requiredOutcome": "No"
    }
  ]
}

Responses

The canonical combo already exists.

comboobject·required
combo.idinteger (int64)·required
Internal combo ID.Example: 456
combo.canonicalLegKeystring·required
Canonical identity of the complete combo leg set.Example: 101:Yes|202:No
combo.legCountinteger (int32)·required
Number of legs in the combo.Example: 2
combo.displayNamestring
Human-readable combo name, when available.
combo.statusstring
Current combo status, when available.
combo.instrumentIdinteger (int64)
Associated instrument ID, when available.
combo.instrumentSymbolstring
Associated instrument symbol, when available.Example: GEMI-CMB-0526-A7F3B2C1D4E5
combo.instrumentRegisteredboolean·required
Whether the combo has been registered with an instrument symbol.
combo.latestExpiryDatestring (date-time)
Latest expiry among the underlying legs, when available.
combo.createdAtstring (date-time)
Creation time, when available.
combo.updatedAtstring (date-time)
Most recent update time, when available.
combo.legsarray·required
Canonically ordered combo legs.
combo.legs[].comboIdinteger (int64)·required
Parent combo ID.
combo.legs[].legIndexinteger (int32)·required
Zero-based leg position in canonical order.
combo.legs[].contractIdstring·required
Underlying contract ID as a decimal string.
combo.legs[].requiredOutcomestring·enum·required
Required settlement outcome for the leg.Enum values: YesNo
combo.legs[].legOutcomestring·enum
Settled outcome for the leg, when resolved.Enum values: YesNo
combo.legs[].resolvedAtstring (date-time)
Resolution time for the leg, when resolved.
combo.legs[].contractobject
Underlying contract metadata, when available.
combo.legs[].contract.contractIdstring
combo.legs[].contract.contractNamestring
combo.legs[].contract.contractTickerstring
combo.legs[].contract.eventTickerstring
combo.legs[].contract.eventNamestring
combo.legs[].contract.categorystring
combo.legs[].contract.contractStatusstring
combo.legs[].contract.eventTypestring
Event type ("binary" or "categorical")
combo.legs[].contract.expiryDatestring (date-time)
combo.legs[].contract.resolvedAtstring (date-time)
combo.legs[].contract.resolutionSidestring
Winning outcome if resolved ("yes" or "no")
combo.legs[].contract.parentEventTickerstring
Parent event ticker for sub-events
combo.legs[].contract.startTimestring (date-time)
Start datetime (ISO 8601)
alreadyExistedboolean·required
`false` when this request created the canonical combo; `true` when the canonical combo already existed.
Example Responses
{
  "combo": {
    "id": 456,
    "canonicalLegKey": "101:Yes|202:No",
    "legCount": 2,
    "displayName": "BTC EOY26 > $120k AND ETH EOY26 <= $4k",
    "status": "Active",
    "instrumentId": 98765,
    "instrumentSymbol": "GEMI-CMB-0526-A7F3B2C1D4E5",
    "instrumentRegistered": true,
    "latestExpiryDate": "2026-12-31T23:59:59.000Z",
    "createdAt": "2026-05-01T12:00:00.000Z",
    "updatedAt": "2026-05-01T12:00:00.000Z",
    "legs": [
      {
        "comboId": 456,
        "legIndex": 0,
        "contractId": "101",
        "requiredOutcome": "Yes"
      },
      {
        "comboId": 456,
        "legIndex": 1,
        "contractId": "202",
        "requiredOutcome": "No"
      }
    ]
  },
  "alreadyExisted": true
}
PreviousGet Combo