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

© 2026 Gemini Space Station, Inc.

Information
Markets
    List prediction market eventsgetGet event by tickergetGet strike price for eventgetList newly listed eventsgetList recently settled eventsgetList upcoming eventsgetList event categoriesget
Terms
    Get prediction market termsgetGet prediction market terms statusgetAccept prediction market termspost
Trading
    Place orderpostCancel orderpost
Positions
    Get active orderspostGet order historypostGet positionspostGet settled positionspostGet volume metricspost
Combos
    List combo contractsgetGet combo by instrument symbolget
Rewards
    Get maker-rebate rate schedulegetList maker-rebate payoutspostGet maker-rebate lifetime summarygetGet liquidity-rewards program configgetList liquidity-rewards eventsgetGet liquidity-rewards daily summarygetGet liquidity-rewards lifetime summaryget
Schemas
Gemini Prediction Markets API
Gemini Prediction Markets API

Trading

Server

Authenticated REST endpoints for placing and managing orders. Treat REST order placement as payload reference or a one-off server workflow; for active trading and market making, prefer WebSocket order.place.


Place order

POST
https://api.gemini.com
/v1/prediction-markets/order

Place a new prediction market order. Supports limit and stop-limit order types. Requires authentication and NewOrder permission.

Before sending orders, check GET /v1/prediction-markets/terms/status. If hasAcceptedLatest is false, display GET /v1/prediction-markets/terms and call POST /v1/prediction-markets/terms/accept, then retry the order.

Stop-Limit Orders

A stop-limit order is an order type that allows for order placement when a price reaches a specified level. Stop-limit orders take in both a price and a stopPrice as parameters. The stopPrice is the price that triggers the order to be placed on the continuous live order book at the price. For buy orders, the stopPrice must be greater than or equal to the last trade price and less than or equal to the price; for sell orders, the stopPrice must be less than or equal to the last trade price and greater than or equal to the price. Both price and stopPrice must be in the 0-1 range.

Place order › Request Body

OrderRequest
symbol
​string · required

Contract instrument symbol

Example: GEMI-FEDJAN26-DN25
orderType
​OrderType · enum · required

Order type. stop-limit orders require a stopPrice that triggers a limit order at price when the market reaches the trigger.

Enum values:
limit
stop-limit
side
​OrderSide · enum · required
Enum values:
buy
sell
quantity
​string · required

Number of contracts

Example: 100
price
​string · required

Limit price (0-1 range)

Example: 0.65
outcome
​Outcome · enum · required

The outcome being traded (Yes or No)

Enum values:
yes
no
stopPrice
​string

The price to trigger a stop-limit order (0-1 range). Only available for stop-limit orders. See Stop-Limit Orders above for stopPrice/price constraints.

Example: 0.60
timeInForce
​TimeInForce · enum

Order execution behavior:

  • good-til-cancel - Order remains active until filled or cancelled (default)
  • immediate-or-cancel - Fill immediately or cancel remaining
  • fill-or-kill - Fill entire order immediately or cancel
Enum values:
good-til-cancel
immediate-or-cancel
fill-or-kill
Default: good-til-cancel
makerOrCancel
​boolean

Set to true to require maker-only behavior. If the order would immediately take liquidity, the order is cancelled instead of filling.

Default: false

Place order › Responses

Order created successfully

OrderResponse
orderId
​integer · int64
hashOrderId
​string | null
clientOrderId
​string | null
globalOrderId
​string | null
status
​OrderStatus · enum
Enum values:
open
filled
cancelled
symbol
​string
side
​OrderSide · enum
Enum values:
buy
sell
outcome
​Outcome · enum

The outcome being traded (Yes or No)

Enum values:
yes
no
orderType
​OrderType · enum

Order type. stop-limit orders require a stopPrice that triggers a limit order at price when the market reaches the trigger.

Enum values:
limit
stop-limit
quantity
​string

Original order quantity

filledQuantity
​string

Amount filled so far

remainingQuantity
​string

Amount remaining to fill

price
​string

Limit price

stopPrice
​string | null

Stop trigger price (populated for stop-limit orders)

avgExecutionPrice
​string | null

Average price of fills

createdAt
​string · date-time
updatedAt
​string · date-time
cancelledAt
​string | null · date-time
​ContractMetadata
POST/v1/prediction-markets/order
curl --request POST \ --url https://api.gemini.com/v1/prediction-markets/order \ --header 'Content-Type: application/json' \ --data ' { "symbol": "GEMI-FEDJAN26-DN25", "orderType": "limit", "side": "buy", "quantity": "100", "price": "0.65", "outcome": "yes", "timeInForce": "good-til-cancel" } '
shell
Example Request Body
{ "symbol": "GEMI-FEDJAN26-DN25", "orderType": "limit", "side": "buy", "quantity": "100", "price": "0.65", "outcome": "yes", "timeInForce": "good-til-cancel" }
json
Place a limit order to buy 100 YES contracts at 0.65
application/json
Example Responses
{ "orderId": 12345678901, "status": "open", "symbol": "GEMI-FEDJAN26-DN25", "side": "buy", "outcome": "yes", "orderType": "limit", "quantity": "100", "filledQuantity": "0", "remainingQuantity": "100", "price": "0.65", "avgExecutionPrice": null, "createdAt": "2025-12-15T10:30:00.000Z", "updatedAt": "2025-12-15T10:30:00.000Z", "cancelledAt": null, "contractMetadata": { "contractId": "contract_123", "contractName": "FEDJAN26-DN25", "contractTicker": "FEDJAN26-DN25", "eventTicker": "FEDJAN26", "eventName": "Will Fed Funds Rate drop at least 0.25% at January 2026 meeting?", "category": "economics", "contractStatus": "active", "imageUrl": "https://example.com/fed.png", "expiryDate": "2026-01-31T23:59:59.000Z", "resolvedAt": null, "description": "Resolves YES if Federal Reserve lowers the target rate by 0.25% or more at the January 2026 FOMC meeting" } }
json
application/json

Cancel order

POST
https://api.gemini.com
/v1/prediction-markets/order/cancel

Cancel an existing prediction market order. Requires authentication and CancelOrder permission.

Cancel order › Request Body

orderId
​integer · int64 · required

The order ID to cancel

Example: 12345678

Cancel order › Responses

Order cancelled successfully

result
​string
message
​string
POST/v1/prediction-markets/order/cancel
curl --request POST \ --url https://api.gemini.com/v1/prediction-markets/order/cancel \ --header 'Content-Type: application/json' \ --data ' { "orderId": 12345678 } '
shell
Example Request Body
{ "orderId": 12345678 }
json
Example Responses
{ "result": "ok", "message": "Order 12345678 cancelled successfully" }
json
application/json

TermsPositions