Gemini Trust Company Combos API

Public endpoints for discovering and inspecting combo contracts, plus an authenticated endpoint to create or retrieve a canonical combo. Combos are multi-leg contracts; order entry uses the same place/cancel endpoints as single contracts.

Operations 3

GET /v1/prediction-markets/combos List combo contracts #
POST /v1/prediction-markets/combos Create or retrieve a canonical combo #
GET /v1/prediction-markets/combos/{instrumentSymbol} Get combo by instrument symbol #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/gemini-trust-combos-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

gemini-trust-combos-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Gemini Prediction Markets Combos API
  description: 'API for trading prediction market contracts on Gemini.


    **Note:** Only fields documented in this specification are considered stable. Undocumented fields in API responses may change or be removed without notice.'
  version: 1.0.0
  contact:
    name: Gemini API Support
servers:
- url: https://api.gemini.com
  description: Production
- url: https://api.sandbox.gemini.com
  description: Sandbox
tags:
- name: Combos
  description: Public endpoints for discovering and inspecting combo contracts, plus an authenticated endpoint to create or retrieve a canonical combo. Combos are multi-leg contracts; order entry uses the same place/cancel endpoints as single contracts.
paths:
  /v1/prediction-markets/combos:
    get:
      tags:
      - Combos
      summary: List combo contracts
      description: Returns a paginated list of combo contracts. Each combo includes its full leg breakdown and per-leg resolution status. When `status` is omitted, the endpoint returns only `Active` combos. This Combo Prediction Markets endpoint is not currently enabled in production.
      operationId: listCombos
      parameters:
      - name: status
        in: query
        required: false
        description: Filter by combo contract status (for example, `Active`, `Settled`, or `Voided`). Defaults to `Active` when omitted.
        schema:
          type: string
      - name: contractId
        in: query
        required: false
        description: Filter to combos that contain a specific underlying contract ID as a leg
        schema:
          type: integer
          format: int64
      - name: instrumentRegistered
        in: query
        required: false
        description: Filter by whether the combo has been registered with an instrument symbol
        schema:
          type: boolean
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Offset'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListCombosResponse'
              examples:
                activeCombos:
                  summary: List of active combo contracts
                  value:
                    combos:
                    - contract:
                        contractId: '456'
                        contractName: BTC EOY26 > $120k AND ETH EOY26 > $4k
                        contractTicker: GEMI-CMB-0526-A7F3B2C1D4E5
                        eventTicker: GEMI-CMB-0526-A7F3B2C1D4E5
                        eventName: BTC EOY26 > $120k AND ETH EOY26 > $4k
                        category: Combo
                        contractStatus: Active
                        eventType: binary
                        expiryDate: '2026-12-31T23:59:59Z'
                        resolvedAt: null
                        resolutionSide: null
                        parentEventTicker: null
                        startTime: null
                      legs:
                      - comboId: 456
                        legIndex: 0
                        contractId: '101'
                        requiredOutcome: 'Yes'
                        legOutcome: null
                        resolvedAt: null
                        contract:
                          contractId: '101'
                          contractName: BTC above $120,000 at year-end 2026
                          contractTicker: GEMI-BTC-EOY26-HI120000
                          eventTicker: GEMI-BTC-EOY26
                          eventName: Bitcoin Year-End 2026
                          category: Crypto
                          contractStatus: Active
                          eventType: binary
                          expiryDate: '2026-12-31T23:59:59Z'
                          resolvedAt: null
                          resolutionSide: null
                          parentEventTicker: null
                          startTime: null
                      - comboId: 456
                        legIndex: 1
                        contractId: '202'
                        requiredOutcome: 'Yes'
                        legOutcome: null
                        resolvedAt: null
                        contract:
                          contractId: '202'
                          contractName: ETH above $4,000 at year-end 2026
                          contractTicker: GEMI-ETH-EOY26-HI4000
                          eventTicker: GEMI-ETH-EOY26
                          eventName: Ethereum Year-End 2026
                          category: Crypto
                          contractStatus: Active
                          eventType: binary
                          expiryDate: '2026-12-31T23:59:59Z'
                          resolvedAt: null
                          resolutionSide: null
                          parentEventTicker: null
                          startTime: null
                    pagination:
                      limit: 50
                      offset: 0
                      total: 1
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
    post:
      tags:
      - Combos
      summary: Create or retrieve a canonical combo
      description: 'Creates a combo from two to six underlying contract legs for the authenticated account. The service canonicalizes the complete leg set, so submitting the same legs again returns the existing combo regardless of leg order. The account is derived from the authenticated API key; do not include an account ID in the request. This Combo Prediction Markets endpoint is not currently enabled in production.


        Requires signed private REST authentication, the `PredictionsNewOrder` permission, and an unrestricted trading account. A new canonical combo returns `201 Created` with `alreadyExisted: false`; an existing canonical combo returns `200 OK` with `alreadyExisted: true`.'
      operationId: createCombo
      security:
      - apiKey: []
        payloadAuth: []
        signatureAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateComboRequest'
            examples:
              twoLegCombo:
                summary: Create a two-leg combo
                value:
                  legs:
                  - contractId: '101'
                    requiredOutcome: 'Yes'
                  - contractId: '202'
                    requiredOutcome: 'No'
      responses:
        '200':
          description: The canonical combo already exists.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateComboResponse'
              examples:
                existingCombo:
                  summary: Existing canonical combo
                  value:
                    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
        '201':
          description: A new canonical combo was created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateComboResponse'
              examples:
                createdCombo:
                  summary: New canonical combo
                  value:
                    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: false
        '400':
          description: The request body is malformed or fails combo validation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComboWriteError'
              example:
                error: InvalidInput
                code: COMBO_VALIDATION_ERROR
                message: a combo needs 2-6 legs
        '401':
          description: Signed private REST authentication is missing or invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthErrorResponse'
        '403':
          description: The API key lacks `PredictionsNewOrder`, or the authenticated trading account is restricted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthErrorResponse'
        '404':
          description: Combos are unavailable, or an underlying contract in the request cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComboWriteError'
              examples:
                comboUnavailable:
                  summary: Combos unavailable
                  value:
                    error: NOT_FOUND
                    message: Not Found
                legNotFound:
                  summary: Underlying contract not found
                  value:
                    error: NOT_FOUND
                    code: COMBO_LEG_NOT_FOUND
                    message: One or more contracts in this combo could not be found. Update your selection and try again.
        '500':
          description: An unexpected error occurred while creating the combo.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComboWriteError'
              example:
                error: InternalError
                message: An unexpected error occurred
  /v1/prediction-markets/combos/{instrumentSymbol}:
    get:
      tags:
      - Combos
      summary: Get combo by instrument symbol
      description: Returns the full specification of a single combo contract identified by its instrument symbol, including leg breakdown and per-leg resolution status. This Combo Prediction Markets endpoint is not currently enabled in production.
      operationId: getComboByInstrumentSymbol
      parameters:
      - name: instrumentSymbol
        in: path
        required: true
        description: The combo contract's instrument symbol (e.g. `GEMI-CMB-0526-A7F3B2C1D4E5`)
        schema:
          type: string
        example: GEMI-CMB-0526-A7F3B2C1D4E5
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComboResponse'
              examples:
                comboDetail:
                  summary: Combo contract detail
                  value:
                    contract:
                      contractId: '456'
                      contractName: BTC EOY26 > $120k AND ETH EOY26 > $4k
                      contractTicker: GEMI-CMB-0526-A7F3B2C1D4E5
                      eventTicker: GEMI-CMB-0526-A7F3B2C1D4E5
                      eventName: BTC EOY26 > $120k AND ETH EOY26 > $4k
                      category: Combo
                      contractStatus: Active
                      eventType: binary
                      expiryDate: '2026-12-31T23:59:59Z'
                      resolvedAt: null
                      resolutionSide: null
                      parentEventTicker: null
                      startTime: null
                    legs:
                    - comboId: 456
                      legIndex: 0
                      contractId: '101'
                      requiredOutcome: 'Yes'
                      legOutcome: null
                      resolvedAt: null
                      contract:
                        contractId: '101'
                        contractName: BTC above $120,000 at year-end 2026
                        contractTicker: GEMI-BTC-EOY26-HI120000
                        eventTicker: GEMI-BTC-EOY26
                        eventName: Bitcoin Year-End 2026
                        category: Crypto
                        contractStatus: Active
                        eventType: binary
                        expiryDate: '2026-12-31T23:59:59Z'
                        resolvedAt: null
                        resolutionSide: null
                        parentEventTicker: null
                        startTime: null
                    - comboId: 456
                      legIndex: 1
                      contractId: '202'
                      requiredOutcome: 'Yes'
                      legOutcome: null
                      resolvedAt: null
                      contract:
                        contractId: '202'
                        contractName: ETH above $4,000 at year-end 2026
                        contractTicker: GEMI-ETH-EOY26-HI4000
                        eventTicker: GEMI-ETH-EOY26
                        eventName: Ethereum Year-End 2026
                        category: Crypto
                        contractStatus: Active
                        eventType: binary
                        expiryDate: '2026-12-31T23:59:59Z'
                        resolvedAt: null
                        resolutionSide: null
                        parentEventTicker: null
                        startTime: null
        '404':
          description: Combo not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: NOT_FOUND
                message: Combo not found
        '500':
          $ref: '#/components/responses/InternalError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
components:
  responses:
    ServiceUnavailable:
      description: Prediction markets feature is temporarily unavailable
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: Invalid request parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    InternalError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    ComboLeg:
      type: object
      required:
      - comboId
      - legIndex
      - contractId
      - requiredOutcome
      properties:
        comboId:
          type: integer
          format: int64
          description: Internal ID of the parent combo contract
          example: 456
        legIndex:
          type: integer
          description: Zero-based position of this leg in the combo
          example: 0
        contractId:
          type: string
          description: Internal ID of the underlying single contract, represented as a decimal string
          example: '101'
        requiredOutcome:
          type: string
          enum:
          - 'Yes'
          - 'No'
          description: The outcome this leg must settle for the combo to settle YES
          example: 'Yes'
        legOutcome:
          type:
          - string
          - 'null'
          description: The outcome this leg has settled to, if resolved (`"Yes"` or `"No"`). Null while the leg is still active.
          example: null
        resolvedAt:
          type:
          - string
          - 'null'
          format: date-time
          description: UTC timestamp when this leg resolved. Null while still active.
          example: null
        contract:
          allOf:
          - $ref: '#/components/schemas/ContractMetadata'
          description: Full metadata for the underlying single contract
    Error:
      type: object
      properties:
        error:
          type: string
          description: Error code
          example: InvalidInput
        message:
          type: string
          description: Human-readable error message
          example: orderId is required
    CreateComboLeg:
      type: object
      required:
      - contractId
      - requiredOutcome
      properties:
        contractId:
          type: string
          description: Underlying contract ID as a decimal string.
          example: '101'
        requiredOutcome:
          type: string
          enum:
          - 'Yes'
          - 'No'
          description: Required settlement outcome for this leg.
          example: 'Yes'
    ComboSummary:
      type: object
      required:
      - id
      - canonicalLegKey
      - legCount
      - instrumentRegistered
      - legs
      properties:
        id:
          type: integer
          format: int64
          description: Internal combo ID.
          example: 456
        canonicalLegKey:
          type: string
          description: Canonical identity of the complete combo leg set.
          example: 101:Yes|202:No
        legCount:
          type: integer
          format: int32
          description: Number of legs in the combo.
          example: 2
        displayName:
          type: string
          description: Human-readable combo name, when available.
        status:
          type: string
          description: Current combo status, when available.
        instrumentId:
          type: integer
          format: int64
          description: Associated instrument ID, when available.
        instrumentSymbol:
          type: string
          description: Associated instrument symbol, when available.
          example: GEMI-CMB-0526-A7F3B2C1D4E5
        instrumentRegistered:
          type: boolean
          description: Whether the combo has been registered with an instrument symbol.
        latestExpiryDate:
          type: string
          format: date-time
          description: Latest expiry among the underlying legs, when available.
        createdAt:
          type: string
          format: date-time
          description: Creation time, when available.
        updatedAt:
          type: string
          format: date-time
          description: Most recent update time, when available.
        legs:
          type: array
          description: Canonically ordered combo legs.
          items:
            $ref: '#/components/schemas/ComboSummaryLeg'
    ComboWriteError:
      type: object
      required:
      - error
      - message
      properties:
        error:
          type: string
          description: Error class.
          example: InvalidInput
        code:
          type: string
          description: Machine-readable code for validation or missing-leg errors, when available.
          example: COMBO_VALIDATION_ERROR
        message:
          type: string
          description: Human-readable error detail.
          example: a combo needs 2-6 legs
    ComboResponse:
      type: object
      required:
      - contract
      - legs
      properties:
        contract:
          allOf:
          - $ref: '#/components/schemas/ContractMetadata'
          description: Metadata for the combo contract itself (ticker, status, expiry, etc.)
        legs:
          type: array
          description: Ordered list of legs that make up this combo
          items:
            $ref: '#/components/schemas/ComboLeg'
    AuthErrorResponse:
      type: object
      additionalProperties: false
      required:
      - result
      - reason
      - message
      properties:
        result:
          type: string
          enum:
          - error
        reason:
          type: string
          description: Authentication or authorization error class
          example: MissingNonce
        message:
          type: string
          description: Human-readable authentication or authorization detail
          example: Must provide unique monotonic increasing 'nonce' field in payload
    Pagination:
      type: object
      properties:
        limit:
          type: integer
          example: 50
        offset:
          type: integer
          example: 0
        total:
          type: integer
          example: 100
    CreateComboResponse:
      type: object
      required:
      - combo
      - alreadyExisted
      properties:
        combo:
          $ref: '#/components/schemas/ComboSummary'
        alreadyExisted:
          type: boolean
          description: '`false` when this request created the canonical combo; `true` when the canonical combo already existed.'
    CreateComboRequest:
      type: object
      description: A canonical combo definition. The authenticated account is derived from the signed request and is not a request field.
      required:
      - legs
      properties:
        legs:
          type: array
          description: Two to six distinct underlying contract legs. The service canonicalizes their complete set, so leg order does not create a distinct combo.
          minItems: 2
          maxItems: 6
          items:
            $ref: '#/components/schemas/CreateComboLeg'
    ListCombosResponse:
      type: object
      required:
      - combos
      - pagination
      properties:
        combos:
          type: array
          description: List of combo contracts matching the query
          items:
            $ref: '#/components/schemas/ComboResponse'
        pagination:
          allOf:
          - $ref: '#/components/schemas/Pagination'
    ContractMetadata:
      type: object
      properties:
        contractId:
          type: string
        contractName:
          type: string
        contractTicker:
          type: string
        eventTicker:
          type: string
        eventName:
          type: string
        category:
          type: string
        contractStatus:
          type: string
        eventType:
          type: string
          description: Event type ("binary" or "categorical")
        expiryDate:
          type:
          - string
          - 'null'
          format: date-time
        resolvedAt:
          type:
          - string
          - 'null'
          format: date-time
        resolutionSide:
          type:
          - string
          - 'null'
          description: Winning outcome if resolved ("yes" or "no")
        parentEventTicker:
          type:
          - string
          - 'null'
          description: Parent event ticker for sub-events
        startTime:
          type:
          - string
          - 'null'
          format: date-time
          description: Start datetime (ISO 8601)
    ComboSummaryLeg:
      type: object
      required:
      - comboId
      - legIndex
      - contractId
      - requiredOutcome
      properties:
        comboId:
          type: integer
          format: int64
          description: Parent combo ID.
        legIndex:
          type: integer
          format: int32
          description: Zero-based leg position in canonical order.
        contractId:
          type: string
          description: Underlying contract ID as a decimal string.
        requiredOutcome:
          type: string
          enum:
          - 'Yes'
          - 'No'
          description: Required settlement outcome for the leg.
        legOutcome:
          type:
          - string
          - 'null'
          enum:
          - 'Yes'
          - 'No'
          description: Settled outcome for the leg, when resolved.
        resolvedAt:
          type:
          - string
          - 'null'
          format: date-time
          description: Resolution time for the leg, when resolved.
        contract:
          allOf:
          - $ref: '#/components/schemas/ContractMetadata'
          description: Underlying contract metadata, when available.
  parameters:
    Limit:
      name: limit
      in: query
      description: Maximum number of results to return (max 500)
      schema:
        type: integer
        default: 50
        minimum: 1
        maximum: 500
    Offset:
      name: offset
      in: query
      description: Number of results to skip for pagination
      schema:
        type: integer
        default: 0
        minimum: 0
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-GEMINI-APIKEY
      description: Gemini API key with appropriate permissions
    payloadAuth:
      type: apiKey
      in: header
      name: X-GEMINI-PAYLOAD
      description: Base64-encoded private REST payload. See Gemini private REST authentication.
    signatureAuth:
      type: apiKey
      in: header
      name: X-GEMINI-SIGNATURE
      description: Hex HMAC-SHA384 signature of the payload using the API secret.