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

© 2026 Gemini Space Station, Inc.

Getting StartedAPI Specifications
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 OrderPlace Batch OrdersCancel OrderCancel Batch OrdersGet Active OrdersGet Order History
    Positions
    Rewards
Combo Contracts
    Overview
Combos Request-for-Quote (RFQ)
    OverviewWebSocket StreamsQuote MethodsMaker IntegrationExamples
Tickers
    OverviewCryptoSportsCommoditiesWeather
Schemas

Place Batch Orders

REST APIsPrediction MarketsOrder ManagementPlace Batch Orders

Place Batch Orders

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

Place 1 to 20 prediction market orders in one authenticated request. The batch is synchronous and non-atomic: up-front validation rejects the entire batch, while exchange submission errors are returned per entry and do not stop later entries.

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

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.

Batch Behavior

  • The complete
    Code
    {"orders":[...]}
    payload is encoded and signed once.
  • Gemini validates the batch size and every order before submitting anything. Any up-front validation, account, terms, or risk failure rejects the entire request.
  • After validation, orders are submitted sequentially and results remain aligned with request order.
  • An exchange rejection such as
    Code
    InsufficientFunds
    is returned in that entry's result. Other valid entries continue to be submitted.

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

ordersarray·required
Orders to submit. Every entry is validated before any order is submitted. All orders use the account associated with the authenticated request.
orders[].symbolstring·required
Contract instrument symbolExample: GEMI-FEDJAN26-DN25
orders[].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
orders[].sidestring·enum·required
Enum values: buysell
orders[].quantitystring·required
Number of contractsExample: 100
orders[].pricestring·required
Limit price (0-1 range)Example: 0.65
orders[].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
orders[].outcomestring·enum·required
The outcome being traded (Yes or No)Enum values: yesno
orders[].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
orders[].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
{
  "orders": [
    {
      "symbol": "GEMI-FEDJAN26-DN25",
      "orderType": "limit",
      "side": "buy",
      "quantity": "100",
      "price": "0.65",
      "outcome": "yes",
      "timeInForce": "good-til-cancel"
    },
    {
      "symbol": "GEMI-FEDJAN26-DN25",
      "orderType": "limit",
      "side": "sell",
      "quantity": "50",
      "price": "0.35",
      "outcome": "no",
      "timeInForce": "good-til-cancel"
    }
  ]
}

Responses

Batch processed. Results are returned in request order and may contain both successful orders and per-entry errors.

resultsarray·required
One result for each submitted order, in request order.
Example Responses
{
  "results": [
    {
      "order": {
        "orderId": 12345678901,
        "status": "open",
        "symbol": "GEMI-FEDJAN26-DN25",
        "side": "buy",
        "outcome": "yes",
        "orderType": "limit",
        "timeInForce": "good-til-cancel",
        "quantity": "100",
        "filledQuantity": "0",
        "remainingQuantity": "100",
        "price": "0.65",
        "createdAt": "2025-12-15T10:30:00.000Z",
        "updatedAt": "2025-12-15T10:30:00.000Z"
      }
    },
    {
      "error": "InsufficientFunds",
      "message": "Insufficient funds"
    }
  ]
}
PreviousPlace OrderNextCancel Order
Last modified on July 21, 2026