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

Positions

Server

Authenticated endpoints for viewing positions and order history. Use REST positions for recovery or audit snapshots after reconnects, missed WebSocket messages, and settlement windows.


Get active orders

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

Returns a list of currently open (active) orders. Requires authentication.

Get active orders › Request Body

symbol
​string

Filter by contract instrument symbol

Example: GEMI-FEDJAN26-DN25
limit
​integer · max: 100

Maximum number of results to return (default 50, max 100)

Default: 50
offset
​integer

Number of results to skip for pagination

Default: 0

Get active orders › Responses

Successful response

OrdersResponse
​OrderResponse[]
​PaginationSimple
POST/v1/prediction-markets/orders/active
curl --request POST \ --url https://api.gemini.com/v1/prediction-markets/orders/active \ --header 'Content-Type: application/json' \ --data ' { "symbol": "GEMI-FEDJAN26-DN25", "limit": 50, "offset": 0 } '
shell
Example Request Body
{ "symbol": "GEMI-FEDJAN26-DN25", "limit": 50, "offset": 0 }
json
Example Responses
{ "orders": [ { "orderId": 12345678901, "status": "open", "symbol": "GEMI-FEDJAN26-DN25", "side": "buy", "outcome": "yes", "orderType": "limit", "quantity": "100", "filledQuantity": "25", "remainingQuantity": "75", "price": "0.65", "avgExecutionPrice": "0.64", "createdAt": "2025-12-15T10:30:00.000Z", "updatedAt": "2025-12-15T11:00: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" } }, { "orderId": 12345678902, "status": "open", "symbol": "GEMI-FEDJAN26-DN25", "side": "sell", "outcome": "yes", "orderType": "limit", "quantity": "50", "filledQuantity": "0", "remainingQuantity": "50", "price": "0.65", "avgExecutionPrice": null, "createdAt": "2025-12-15T12:00:00.000Z", "updatedAt": "2025-12-15T12:00: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" } } ], "pagination": { "limit": 50, "offset": 0, "count": 2 } }
json
application/json

Get order history

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

Returns historical orders (filled or cancelled). Use /orders/active for open orders. Requires authentication.

Get order history › Request Body

status
​string · enum

Filter by order status

Enum values:
filled
cancelled
symbol
​string

Filter by contract instrument symbol

Example: GEMI-FEDJAN26-DN25
limit
​integer · max: 100

Maximum number of results to return (default 50, max 100)

Default: 50
offset
​integer

Number of results to skip for pagination

Default: 0

Get order history › Responses

Successful response

OrdersResponse
​OrderResponse[]
​PaginationSimple
POST/v1/prediction-markets/orders/history
curl --request POST \ --url https://api.gemini.com/v1/prediction-markets/orders/history \ --header 'Content-Type: application/json' \ --data ' { "status": "filled", "symbol": "GEMI-FEDJAN26-DN25", "limit": 50, "offset": 0 } '
shell
Example Request Body
{ "status": "filled", "symbol": "GEMI-FEDJAN26-DN25", "limit": 50, "offset": 0 }
json
Example Responses
{ "orders": [ { "orderId": 12345678, "hashOrderId": "hashOrderId", "clientOrderId": "clientOrderId", "globalOrderId": "globalOrderId", "status": "open", "symbol": "symbol", "side": "buy", "outcome": "yes", "orderType": "limit", "quantity": "quantity", "filledQuantity": "filledQuantity", "remainingQuantity": "remainingQuantity", "price": "price", "stopPrice": "stopPrice", "avgExecutionPrice": "avgExecutionPrice", "createdAt": "2024-08-25T15:00:00Z", "updatedAt": "2024-08-25T15:00:00Z", "cancelledAt": "2024-08-25T15:00:00Z", "contractMetadata": { "contractId": "contractId", "contractName": "contractName", "contractTicker": "contractTicker", "eventTicker": "eventTicker", "eventName": "eventName", "category": "category", "contractStatus": "contractStatus", "eventType": "eventType", "expiryDate": "2024-08-25T15:00:00Z", "resolvedAt": "2024-08-25T15:00:00Z", "resolutionSide": "resolutionSide", "parentEventTicker": "parentEventTicker", "startTime": "2024-08-25T15:00:00Z" } } ], "pagination": { "limit": 0, "offset": 0, "count": 0 } }
json
application/json

Get positions

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

Returns current filled positions for the authenticated user.

Get positions › Responses

Successful response

PositionsResponse
​Position[]
total
​integer | null

Total number of positions (for pagination)

POST/v1/prediction-markets/positions
curl --request POST \ --url https://api.gemini.com/v1/prediction-markets/positions
shell
Example Responses
{ "positions": [ { "symbol": "GEMI-FEDJAN26-DN25", "instrumentId": 1001, "totalQuantity": "125", "quantityOnHold": "10", "avgPrice": "0.63", "outcome": "yes", "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", "eventImageUrl": "https://example.com/fed-event.png", "eventType": "binary", "expiryDate": "2026-01-31T23:59:59.000Z", "resolvedAt": null, "resolutionSide": null, "description": "Resolves YES if Federal Reserve lowers the target rate by 0.25% or more at the January 2026 FOMC meeting", "sortOrder": null, "parentEventTicker": null, "template": "binary", "color": null, "startTime": null }, "prices": { "buy": { "yes": "0.63", "no": "0.37" }, "sell": { "yes": "0.61", "no": "0.35" }, "bestBid": "0.61", "bestAsk": "0.63", "lastTradePrice": "0.62" }, "resolutionSide": null, "isAboveAutoStartThreshold": false, "isLive": true, "realizedPl": "0" }, { "symbol": "GEMI-FEDJAN26-DN25", "instrumentId": 1001, "totalQuantity": "200", "quantityOnHold": "0", "avgPrice": "0.36", "outcome": "no", "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", "eventImageUrl": "https://example.com/fed-event.png", "eventType": "binary", "expiryDate": "2026-01-31T23:59:59.000Z", "resolvedAt": null, "resolutionSide": null, "description": "Resolves YES if Federal Reserve lowers the target rate by 0.25% or more at the January 2026 FOMC meeting", "sortOrder": null, "parentEventTicker": null, "template": "binary", "color": null, "startTime": null }, "prices": { "buy": { "yes": "0.37", "no": "0.63" }, "sell": { "yes": "0.35", "no": "0.61" }, "bestBid": "0.35", "bestAsk": "0.37", "lastTradePrice": "0.36" }, "resolutionSide": null, "isAboveAutoStartThreshold": false, "isLive": true, "realizedPl": "0" } ], "total": 2 }
json
application/json

Get settled positions

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

Returns historically settled positions for the authenticated user. Each entry represents a position in a contract that has resolved.

  • payout — the amount received from settlement
  • resolutionSide — indicates which outcome (yes or no) won.

This endpoint differs from Get positions in that it returns closed positions from settled contracts rather than current open positions.

Get settled positions › query Parameters

eventTicker
​string

Optional event ticker to filter settled positions to a single event (e.g. FEDJAN26). If omitted, all settled positions for the account are returned.

Get settled positions › Responses

Successful response

SettledPositionsResponse
​SettledPosition[]
total
​integer | null

Total number of settled positions returned

totalPayout
​string | null

Sum of payout across all returned positions

totalCostBasis
​string | null

Sum of costBasis across all returned positions. Only present when cost-basis data is available.

totalNetProfit
​string | null

Sum of netProfit across all returned positions. Only present when cost-basis data is available.

POST/v1/prediction-markets/positions/settled
curl --request POST \ --url https://api.gemini.com/v1/prediction-markets/positions/settled
shell
Example Responses
{ "positions": [ { "accountId": 12345, "instrumentId": 1001, "instrumentSymbol": "GEMI-FEDJAN26-DN25", "position": "125", "positionQuantity": "125", "outcome": "yes", "payout": "125.00", "resolutionSide": "yes", "settledAt": "2026-01-31T23:59:59.000Z", "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": "resolved", "imageUrl": "https://example.com/fed.png", "eventImageUrl": "https://example.com/fed-event.png", "eventType": "binary", "expiryDate": "2026-01-31T23:59:59.000Z", "resolvedAt": "2026-01-31T23:59:59.000Z", "resolutionSide": "yes", "description": "Resolves YES if Federal Reserve lowers the target rate by 0.25% or more at the January 2026 FOMC meeting", "sortOrder": null, "parentEventTicker": null, "template": "binary", "color": null, "startTime": null }, "costBasis": "78.75", "realizedPnl": "0", "netProfit": "46.25" }, { "accountId": 12345, "instrumentId": 1002, "instrumentSymbol": "GEMI-FEDJAN26-NOCUT", "position": "-200", "positionQuantity": "200", "outcome": "no", "payout": "0", "resolutionSide": "yes", "settledAt": "2026-01-31T23:59:59.000Z", "contractMetadata": { "contractId": "contract_124", "contractName": "FEDJAN26-NOCUT", "contractTicker": "FEDJAN26-NOCUT", "eventTicker": "FEDJAN26", "eventName": "Will Fed Funds Rate drop at least 0.25% at January 2026 meeting?", "category": "economics", "contractStatus": "resolved", "imageUrl": "https://example.com/fed.png", "eventImageUrl": "https://example.com/fed-event.png", "eventType": "binary", "expiryDate": "2026-01-31T23:59:59.000Z", "resolvedAt": "2026-01-31T23:59:59.000Z", "resolutionSide": "yes", "description": "Resolves YES if Federal Reserve lowers the target rate by 0.25% or more at the January 2026 FOMC meeting", "sortOrder": null, "parentEventTicker": null, "template": "binary", "color": null, "startTime": null }, "costBasis": "72.00", "realizedPnl": "0", "netProfit": "-72.00" } ], "total": 2, "totalPayout": "125.00", "totalCostBasis": "150.75", "totalNetProfit": "-25.75" }
json
application/json

Get volume metrics

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

Returns per-contract share volume metrics for an event, including the authenticated user's taker and maker volumes.

All volumes are in shares (number of contracts traded), not dollar amounts.

  • totalQty — Total taker volume across all participants for this contract
  • userAggressorQty — The authenticated user's taker (aggressor) volume
  • userRestingQty — The authenticated user's maker (resting) volume, counted when another order fills against the user's resting limit order

An optional time range can be specified to filter trades within a specific window.

Get volume metrics › Request Body

eventTicker
​string · required

The event ticker symbol

Example: FED260318
startTime
​integer · int64

Start of time range filter (epoch milliseconds). If omitted, defaults to the earliest contract creation time.

endTime
​integer · int64

End of time range filter (epoch milliseconds). If omitted, includes all trades up to now.

Get volume metrics › Responses

Successful response

VolumeMetricsResponse
eventTicker
​string

The event ticker

Example: FED260318
​ContractShareVolume[]
POST/v1/prediction-markets/metrics/volume
curl --request POST \ --url https://api.gemini.com/v1/prediction-markets/metrics/volume \ --header 'Content-Type: application/json' \ --data ' { "eventTicker": "FED260318" } '
shell
Example Request Body
{ "eventTicker": "FED260318" }
json
application/json
Example Responses
{ "eventTicker": "FED260318", "contracts": [ { "symbol": "GEMI-FED260318-CUT25", "totalQty": "94625", "userAggressorQty": "1", "userRestingQty": "0" }, { "symbol": "GEMI-FED260318-CUTGT25", "totalQty": "68666", "userAggressorQty": "0", "userRestingQty": "0" }, { "symbol": "GEMI-FED260318-HIKE", "totalQty": "15397", "userAggressorQty": "0", "userRestingQty": "0" }, { "symbol": "GEMI-FED260318-MAINTAIN", "totalQty": "20400", "userAggressorQty": "5", "userRestingQty": "0" } ] }
json
application/json

TradingCombos