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

© 2026 Gemini Space Station, Inc.

Getting Started
Maker and Taker Incentives
    Market Maker ProgramMaker Rebate ProgramLiquidity Rewards ProgramTaker Rewards Program
WebSocket
    IntroductionAuthenticationMessage Format
    Streams
      Book TickerL2 Partial DepthL2 Differential DepthTrade StreamOrder EventsBalance UpdatesPosition UpdatesContract Status
    Playground
      OverviewconninfopingtimeSUBSCRIBEUNSUBSCRIBELIST_SUBSCRIPTIONSdepthorder.placeorder.cancelorder.cancel_allorder.cancel_session
REST APIs
    Combos
    Events
    Terms
    Order Management
      Place OrderCancel OrderGet Active OrdersGet Order History
    Positions
    Rewards
Combo Contracts
    Overview
Tickers
    OverviewCryptoSportsCommoditiesWeather
Schemas

Place Order

REST APIsPrediction MarketsOrder ManagementPlace Order

Place Order

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

Place a prediction market limit or stop-limit order. For active trading and market making, prefer WebSocket order.place; use REST order placement for payload reference and one-off server workflows. For post-only/maker-only REST behavior, set makerOrCancel to true.

POSTv1/prediction-markets/order
curl --request POST \
  --url https://api.gemini.com/v1/prediction-markets/order \
  --header 'Content-Type: application/json' \
  --header 'X-GEMINI-APIKEY: <string>' \
  --header 'X-GEMINI-PAYLOAD: <string>' \
  --header 'X-GEMINI-SIGNATURE: <string>' \
  --data '
{
  "symbol": "GEMI-FEDJAN26-DN25",
  "orderType": "limit",
  "side": "buy",
  "quantity": "100",
  "price": "0.65",
  "outcome": "yes",
  "timeInForce": "good-til-cancel"
}
'

Terms

Before sending a Prediction Markets order, check Get Terms Status. If the latest terms are not accepted, display Get Terms and call Accept Terms, then retry the order.

Roles

The API key you use to access this endpoint must have the Trader role assigned. See Roles for more information.

The OAuth scope must have orders:create assigned to access this endpoint. See OAuth Scopes for more information.

REST vs WebSocket Payloads

WebSocket is the preferred path for active trading and market making. REST order placement is for reference and one-off server workflows. REST and WebSocket order payloads are not interchangeable:

TaskWebSocket
Code
order.place
REST
Code
POST /v1/prediction-markets/order
Outcome
Code
eventOutcome: "YES"
Code
outcome: "yes"
Order type
Code
type: "LIMIT"
Code
orderType: "limit"
Maker-only
Code
timeInForce: "MOC"
Code
timeInForce: "good-til-cancel"
,
Code
makerOrCancel: true
Side
Code
side: "BUY"
Code
side: "buy"

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

symbolstring·required
Contract instrument symbolExample: GEMI-FEDJAN26-DN25
orderTypestring·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: limitstop-limit
sidestring·enum·required
Enum values: buysell
quantitystring·required
Number of contractsExample: 100
pricestring·required
Limit price (0-1 range)Example: 0.65
stopPricestring
The price to trigger a stop-limit order (0-1 range). Only available for stop-limit orders. See [Stop-Limit Orders](#operation/placeOrder) above for `stopPrice`/`price` constraints.Example: 0.60
outcomestring·enum·required
The outcome being traded (Yes or No)Enum values: yesno
timeInForcestring·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 cancelEnum values: good-til-cancelimmediate-or-cancelfill-or-kill
makerOrCancelboolean
Set to `true` to require maker-only behavior. If the order would immediately take liquidity, the order is cancelled instead of filling.
Example request body
{
  "symbol": "GEMI-FEDJAN26-DN25",
  "orderType": "limit",
  "side": "buy",
  "quantity": "100",
  "price": "0.65",
  "outcome": "yes",
  "timeInForce": "good-til-cancel"
}

Responses

Order created successfully

orderIdinteger (int64)
Example: 12345678
hashOrderIdstring
clientOrderIdstring
globalOrderIdstring
statusstring·enum
Enum values: openfilledcancelled
symbolstring
sidestring·enum
Enum values: buysell
outcomestring·enum
The outcome being traded (Yes or No)Enum values: yesno
orderTypestring·enum
Order type. `stop-limit` orders require a `stopPrice` that triggers a limit order at `price` when the market reaches the trigger.Enum values: limitstop-limit
quantitystring
Original order quantity
filledQuantitystring
Amount filled so far
remainingQuantitystring
Amount remaining to fill
pricestring
Limit price
stopPricestring
Stop trigger price (populated for `stop-limit` orders)
avgExecutionPricestring
Average price of fills
createdAtstring (date-time)
updatedAtstring (date-time)
cancelledAtstring (date-time)
contractMetadataobject
contractMetadata.contractIdstring
contractMetadata.contractNamestring
contractMetadata.contractTickerstring
contractMetadata.eventTickerstring
contractMetadata.eventNamestring
contractMetadata.categorystring
contractMetadata.contractStatusstring
contractMetadata.eventTypestring
Event type ("binary" or "categorical")
contractMetadata.expiryDatestring (date-time)
contractMetadata.resolvedAtstring (date-time)
contractMetadata.resolutionSidestring
Winning outcome if resolved ("yes" or "no")
contractMetadata.parentEventTickerstring
Parent event ticker for sub-events
contractMetadata.startTimestring (date-time)
Start datetime (ISO 8601)
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"
  }
}
PreviousOrder ManagementNextCancel Order
Last modified on June 17, 2026