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
Volume
    Get daily prediction market trade volumegetGet hourly prediction market trade volumeget
Terms
    Get prediction market termsgetGet prediction market terms statusgetAccept prediction market termspost
Trading
    Place orderpostPlace a batch of orderspostCancel orderpostCancel a batch of orderspost
Positions
    Get active orderspostGet order historypostGet positionspostGet settled positionspostGet volume metricspost
Combos
    List combo contractsgetCreate or retrieve a canonical combopostGet 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

Markets

Server

Public endpoints for browsing prediction markets.

Market Data: Use these REST endpoints to discover active events and each contract's instrumentSymbol (e.g., GEMI-FEDJAN26-DN25). For active trading and market making, prefer Prediction Markets WebSocket streams with that instrumentSymbol.

  • List Events - Discover active events and instrument symbols
  • Prediction Markets WebSocket Streams - Stream prices, depth, order events, and positions

List prediction market events

GET
https://api.gemini.com
/v1/prediction-markets/events

Returns a paginated list of prediction market events with optional filtering by status, category, sports-market classification, and search text. Repeated values for the same filter use OR semantics; different filters combine with AND semantics.

List prediction market events › query Parameters

status
​MarketStatus[] · style: form · explode: true

Filter by event status (can specify multiple)

Enum values:
approved
active
closed
under_review
settled
invalid
category
​string[] · style: form · explode: true

Filter by category (can specify multiple). If omitted, returns events from all categories.

sport
​SportsMarketSport[] · style: form · explode: true

Filter by sportsMarket.sport. Repeat the parameter to match any supplied value (OR). Sports-market filters compose independently using AND. Unsupported enum values return 400 Bad Request; valid combinations with no matching events return an empty result.

Enum values:
american_football
athletics
australian_rules_football
baseball
basketball
boxing
chess
cricket
sports_market_type
​SportsMarketType[] · style: form · explode: true

Filter by sportsMarket.type. Repeat the parameter to match any supplied value (OR). Sports-market filters compose independently using AND. Unsupported enum values return 400 Bad Request.

Enum values:
moneyline
spread
total
prop
correct_score
to_advance
futures
other
sports_market_subject
​SportsMarketSubject[] · style: form · explode: true

Filter by sportsMarket.subject. Repeat the parameter to match any supplied value (OR). Sports-market filters compose independently using AND. Unsupported enum values return 400 Bad Request.

Enum values:
contest
team
player
participant
other
sports_market_scope
​SportsMarketScopeType[] · style: form · explode: true

Filter by sportsMarket.scope.type. Repeat the parameter to match any supplied value (OR). Ordinal and range qualifiers are not inferred by this filter. Sports-market filters compose independently using AND. Unsupported enum values return 400 Bad Request.

Enum values:
full_contest
regulation
half
quarter
period
inning
team_innings
over
sports_market_metric
​SportsMarketMetric[] · style: form · explode: true

Filter by sportsMarket.metric. Repeat the parameter to match any supplied value (OR). A metric can be queried without sport; use sport when its sport-specific meaning matters. Sports-market filters compose independently using AND. Unsupported enum values return 400 Bad Request.

Enum values:
aces
assists
balls_faced
birdies
blocked_shots
blocks
bogeys
boundaries
search
​string

Search text to filter events by title

limit
​integer · min: 1 · max: 500

Maximum number of results to return (max 500)

Default: 50
offset
​integer · min: 0

Number of results to skip for pagination

Default: 0

List prediction market events › Responses

Successful response

EventsResponse
​Event[]
​Pagination
GET/v1/prediction-markets/events
curl --request GET \ --url https://api.gemini.com/v1/prediction-markets/events
shell
Example Responses
{ "data": [ { "id": "evt_123", "title": "Will Bitcoin reach $100k by end of 2028?", "slug": "bitcoin-100k-2028", "description": "Bitcoin must reach $100,000 USD on any major exchange by December 31, 2028", "imageUrl": "https://example.com/btc.png", "type": "binary", "category": "crypto", "series": null, "ticker": "BTC100K2028", "status": "active", "resolvedAt": null, "createdAt": "2026-01-01T00:00:00.000Z", "effectiveDate": "2026-01-01T00:00:00.000Z", "expiryDate": "2028-12-31T23:59:59.000Z", "liquidity": "500000.00", "tags": [ "bitcoin", "cryptocurrency", "price-prediction" ], "contracts": [ { "id": "contract_123", "label": "Yes", "description": null, "prices": { "buy": { "yes": "0.65", "no": "0.35" }, "sell": { "yes": "0.65", "no": "0.35" }, "bestBid": "0.64", "bestAsk": "0.66", "lastTradePrice": "0.65" }, "totalShares": "1000000", "color": "#00ff00", "status": "active", "imageUrl": null, "priceHistory": null, "createdAt": "2026-01-01T00:00:00.000Z", "expiryDate": "2028-12-31T23:59:59.000Z", "resolutionSide": null, "resolvedAt": null, "termsAndConditionsUrl": "https://example.com/terms", "ticker": "BTC100K-YES", "instrumentSymbol": "GEMI-BTC100K-YES", "effectiveDate": "2026-01-01T00:00:00.000Z" }, { "id": "contract_124", "label": "No", "description": null, "prices": { "buy": { "yes": "0.35", "no": "0.65" }, "sell": { "yes": "0.35", "no": "0.65" }, "bestBid": "0.34", "bestAsk": "0.36", "lastTradePrice": "0.35" }, "totalShares": "1000000", "color": "#ff0000", "status": "active", "imageUrl": null, "priceHistory": null, "createdAt": "2026-01-01T00:00:00.000Z", "expiryDate": "2028-12-31T23:59:59.000Z", "resolutionSide": null, "resolvedAt": null, "termsAndConditionsUrl": "https://example.com/terms", "ticker": "BTC100K-NO", "instrumentSymbol": "GEMI-BTC100K-NO", "effectiveDate": "2026-01-01T00:00:00.000Z" } ] }, { "id": "evt_124", "title": "Will ETH reach $5k by end of 2028?", "slug": "ethereum-5k-2028", "description": "Ethereum must reach $5,000 USD on any major exchange by December 31, 2028", "imageUrl": "https://example.com/eth.png", "type": "binary", "category": "crypto", "series": null, "ticker": "ETH5K2028", "status": "active", "resolvedAt": null, "createdAt": "2026-01-01T00:00:00.000Z", "effectiveDate": "2026-01-01T00:00:00.000Z", "expiryDate": "2028-12-31T23:59:59.000Z", "liquidity": "300000.00", "tags": [ "ethereum", "cryptocurrency", "price-prediction" ], "contracts": [ { "id": "contract_125", "label": "Yes", "description": null, "prices": { "buy": { "yes": "0.48", "no": "0.52" }, "sell": { "yes": "0.48", "no": "0.52" }, "bestBid": "0.47", "bestAsk": "0.49", "lastTradePrice": "0.48" }, "totalShares": "800000", "color": "#00ff00", "status": "active", "imageUrl": null, "priceHistory": null, "createdAt": "2026-01-01T00:00:00.000Z", "expiryDate": "2028-12-31T23:59:59.000Z", "resolutionSide": null, "resolvedAt": null, "termsAndConditionsUrl": "https://example.com/terms", "ticker": "ETH5K-YES", "instrumentSymbol": "GEMI-ETH5K-YES", "effectiveDate": "2026-01-01T00:00:00.000Z" }, { "id": "contract_126", "label": "No", "description": null, "prices": { "buy": { "yes": "0.52", "no": "0.48" }, "sell": { "yes": "0.52", "no": "0.48" }, "bestBid": "0.51", "bestAsk": "0.53", "lastTradePrice": "0.52" }, "totalShares": "800000", "color": "#ff0000", "status": "active", "imageUrl": null, "priceHistory": null, "createdAt": "2026-01-01T00:00:00.000Z", "expiryDate": "2028-12-31T23:59:59.000Z", "resolutionSide": null, "resolvedAt": null, "termsAndConditionsUrl": "https://example.com/terms", "ticker": "ETH5K-NO", "instrumentSymbol": "GEMI-ETH5K-NO", "effectiveDate": "2026-01-01T00:00:00.000Z" } ] } ], "pagination": { "limit": 50, "offset": 0, "total": 2 } }
json
application/json

Get event by ticker

GET
https://api.gemini.com
/v1/prediction-markets/events/{eventTicker}

Returns detailed information about a specific prediction market event.

Get event by ticker › path Parameters

eventTicker
​string · required

The event ticker symbol (e.g., "BTC100K")

Get event by ticker › Responses

Successful response

A prediction market event containing one or more tradeable contracts
Event
id
​string
title
​string
slug
​string
description
​string | null
imageUrl
​string | null
type
​MarketType · enum

Type of prediction market

Enum values:
binary
categorical
category
​string
series
​string | null
​SportsMarket

Atomic sports-market classification shared by every contract grouped under the event. Present only for sports events. All fields except metric are required together.

ticker
​string

The event ticker (e.g., "BTC100K2028")

Example: BTC100K2028
status
​MarketStatus · enum

Status of a prediction market

Enum values:
approved
active
closed
under_review
settled
invalid
resolvedAt
​string | null · date-time
createdAt
​string · date-time
​Contract[]

Tradeable contracts within this event

​object
volume
​string

Total trading volume in USD

Example: 125000.00
liquidity
​string

Total liquidity in USD

Example: 50000.00
tags
​array | null
effectiveDate
​string · date-time
expiryDate
​string | null · date-time
subcategory
​Subcategory

Nested category information for the event

sourceDetails
​SourceDetails

Structured data source information for price observation. Replaces the deprecated flat source string on the event and contract. Present for crypto Up/Down events. Both fields are omitted when not available.

​Settlement

Settlement information for resolved events

source
​string | null · deprecated

Deprecated: use sourceDetails (agency + index) instead. Data source identifier for price observation. Aggregated from contracts for crypto Up/Down events.

Example: GRR-KAIKO_BTCUSD_60S
GET/v1/prediction-markets/events/{eventTicker}
curl --request GET \ --url https://api.gemini.com/v1/prediction-markets/events/:eventTicker
shell
Example Responses
{ "id": "id", "title": "Will Bitcoin reach $100k by end of 2028?", "slug": "bitcoin-100k-2028", "description": "description", "imageUrl": "imageUrl", "type": "binary", "category": "crypto", "series": "series", "sportsMarket": { "sport": "american_football", "type": "moneyline", "subject": "contest", "scope": { "type": "full_contest", "ordinal": 0, "start": 0, "end": 0 }, "metric": "aces" }, "ticker": "BTC100K2028", "status": "approved", "resolvedAt": "2024-08-25T15:00:00Z", "createdAt": "2024-08-25T15:00:00Z", "contracts": [ { "id": "id", "label": "label", "abbreviatedName": "abbreviatedName", "description": {}, "prices": { "buy": { "yes": "0.42", "no": "0.58" }, "sell": { "yes": "0.42", "no": "0.58" }, "bestBid": "0.49", "bestAsk": "0.54", "lastTradePrice": "0.75" }, "totalShares": "totalShares", "color": "color", "status": "approved", "imageUrl": "imageUrl", "priceHistory": [ { "timestamp": "2024-08-25T15:00:00Z", "price": "price" } ], "createdAt": "2024-08-25T15:00:00Z", "expiryDate": "2024-08-25T15:00:00Z", "resolutionSide": "yes", "resolvedAt": "2024-08-25T15:00:00Z", "termsAndConditionsUrl": "termsAndConditionsUrl", "ticker": "ticker", "instrumentSymbol": "instrumentSymbol", "quantityIncrement": "quantityIncrement", "quantityMinimum": "quantityMinimum", "priceIncrement": "priceIncrement", "quoteAssetPrecision": 0, "priceMinimum": "priceMinimum", "effectiveDate": "2024-08-25T15:00:00Z", "marketState": "open", "sortOrder": 0, "strike": { "value": "87500.00", "type": "spread", "availableAt": "2026-03-27T19:45:00.000Z" }, "source": "GRR-KAIKO_BTCUSD_60S", "settlementValue": "87654.32" } ], "contractOrderbooks": { "key": { "bids": [ { "side": "buy", "price": "0.65", "quantity": "1000" } ], "asks": [ { "side": "buy", "price": "0.65", "quantity": "1000" } ] } }, "volume": "125000.00", "liquidity": "50000.00", "tags": [ "string" ], "effectiveDate": "2024-08-25T15:00:00Z", "expiryDate": "2024-08-25T15:00:00Z", "subcategory": { "id": 35, "slug": "crypto_solana", "name": "Solana", "path": [ "Crypto", "Solana" ] }, "source": "GRR-KAIKO_BTCUSD_60S", "sourceDetails": { "agency": "Kaiko", "index": "GRR-KAIKO_BTCUSD_60S" }, "settlement": { "value": "87654.32" } }
json
application/json

Get strike price for event

GET
https://api.gemini.com
/v1/prediction-markets/events/{eventTicker}/strike

Returns strike price information for a specific prediction market event.

Useful for crypto Up/Down contracts where the strike price becomes available at the start of the observation window (typically ~5 minutes before expiry for 5M contracts).

For Up/Down contracts, the value field will be null until the strike is captured at availableAt time.

Get strike price for event › path Parameters

eventTicker
​string · required

The event ticker symbol (e.g., "BTC05M2603271950")

Get strike price for event › Responses

Successful response

Strike price or contract threshold information for Up/Down crypto contracts and sports prediction market contracts.
Strike
value
​string | null

The strike price value. Null for "reference" type strikes where the value is determined at availableAt time. For sports contracts, this represents the derived numeric strike value (e.g. spread margin, total line, or position/rank threshold).

Example: 87500.00
type
​StrikeType · enum

Strike or condition inequality type for contract threshold evaluation. - reference: Crypto Up/Down reference strike price captured at availableAt time. - above: Higher/Lower contract threshold. - spread: Point, run, or goal handicap spread line. - over: Total or prop threshold evaluated as strict greater than (>). - over_or_equal: Total or prop threshold evaluated as greater than or equal to (>=). - under: Total or prop threshold evaluated as strict less than (<). - under_or_equal: Position, rank, or total threshold evaluated as less than or equal to (<=).

Enum values:
reference
above
spread
over
over_or_equal
under
under_or_equal
Example: spread
availableAt
​string | null · date-time

When the strike price becomes available

Example: 2026-03-27T19:45:00.000Z
GET/v1/prediction-markets/events/{eventTicker}/strike
curl --request GET \ --url https://api.gemini.com/v1/prediction-markets/events/:eventTicker/strike
shell
Example Responses
{ "value": "98000.50", "type": "reference", "availableAt": "2026-03-27T19:45:00.000Z" }
json
application/json

List newly listed events

GET
https://api.gemini.com
/v1/prediction-markets/events/newly-listed

Returns a list of prediction market events created in the last 24 hours, sorted by creation date (newest first). Repeated values for the same sports-market filter use OR semantics; different filters combine with AND semantics.

List newly listed events › query Parameters

category
​string[] · style: form · explode: true

Filter by category (can specify multiple). If omitted, returns events from all categories.

sport
​SportsMarketSport[] · style: form · explode: true

Filter by sportsMarket.sport. Repeat the parameter to match any supplied value (OR). Sports-market filters compose independently using AND. Unsupported enum values return 400 Bad Request; valid combinations with no matching events return an empty result.

Enum values:
american_football
athletics
australian_rules_football
baseball
basketball
boxing
chess
cricket
sports_market_type
​SportsMarketType[] · style: form · explode: true

Filter by sportsMarket.type. Repeat the parameter to match any supplied value (OR). Sports-market filters compose independently using AND. Unsupported enum values return 400 Bad Request.

Enum values:
moneyline
spread
total
prop
correct_score
to_advance
futures
other
sports_market_subject
​SportsMarketSubject[] · style: form · explode: true

Filter by sportsMarket.subject. Repeat the parameter to match any supplied value (OR). Sports-market filters compose independently using AND. Unsupported enum values return 400 Bad Request.

Enum values:
contest
team
player
participant
other
sports_market_scope
​SportsMarketScopeType[] · style: form · explode: true

Filter by sportsMarket.scope.type. Repeat the parameter to match any supplied value (OR). Ordinal and range qualifiers are not inferred by this filter. Sports-market filters compose independently using AND. Unsupported enum values return 400 Bad Request.

Enum values:
full_contest
regulation
half
quarter
period
inning
team_innings
over
sports_market_metric
​SportsMarketMetric[] · style: form · explode: true

Filter by sportsMarket.metric. Repeat the parameter to match any supplied value (OR). A metric can be queried without sport; use sport when its sport-specific meaning matters. Sports-market filters compose independently using AND. Unsupported enum values return 400 Bad Request.

Enum values:
aces
assists
balls_faced
birdies
blocked_shots
blocks
bogeys
boundaries
limit
​integer · min: 1 · max: 500

Maximum number of results to return (max 500)

Default: 50
offset
​integer · min: 0

Number of results to skip for pagination

Default: 0

List newly listed events › Responses

Successful response

EventsResponse
​Event[]
​Pagination
GET/v1/prediction-markets/events/newly-listed
curl --request GET \ --url https://api.gemini.com/v1/prediction-markets/events/newly-listed
shell
Example Responses
{ "data": [ { "id": "4126", "title": "SOL price today at 12am EST", "slug": "sol-price-today-at-12am-est", "description": "Interval SOL price prediction event", "imageUrl": "https://images.ctfassets.net/example.png", "type": "categorical", "category": "Crypto", "series": "SOL1H", "ticker": "SOL2603050500", "status": "active", "resolvedAt": null, "createdAt": "2026-03-05T02:57:31.548Z", "effectiveDate": null, "expiryDate": "2026-03-05T05:00:00.000Z", "liquidity": null, "tags": [ "Solana" ], "contracts": [ { "id": "4126-33859", "label": "SOL > $90", "abbreviatedName": ">$90", "description": null, "prices": { "buy": { "yes": "0.42", "no": "0.58" }, "sell": { "yes": "0.42", "no": "0.58" }, "bestBid": "0.49", "bestAsk": "0.54", "lastTradePrice": "0.75" }, "totalShares": null, "color": "#4CAF50", "status": "active", "imageUrl": null, "priceHistory": null, "createdAt": "2026-03-05T02:57:31.548Z", "expiryDate": "2026-03-05T05:00:00.000Z", "resolutionSide": null, "resolvedAt": null, "termsAndConditionsUrl": "https://example.com/terms", "ticker": "HI90", "instrumentSymbol": "GEMI-SOL2603050500-HI90", "effectiveDate": null, "marketState": "open", "sortOrder": 1 } ] } ], "pagination": { "limit": 50, "offset": 0, "total": 1 } }
json
application/json

List recently settled events

GET
https://api.gemini.com
/v1/prediction-markets/events/recently-settled

Returns a list of prediction market events settled in the last 24 hours, sorted by resolution date (most recently settled first). Repeated values for the same sports-market filter use OR semantics; different filters combine with AND semantics.

List recently settled events › query Parameters

category
​string[] · style: form · explode: true

Filter by category (can specify multiple). If omitted, returns events from all categories.

sport
​SportsMarketSport[] · style: form · explode: true

Filter by sportsMarket.sport. Repeat the parameter to match any supplied value (OR). Sports-market filters compose independently using AND. Unsupported enum values return 400 Bad Request; valid combinations with no matching events return an empty result.

Enum values:
american_football
athletics
australian_rules_football
baseball
basketball
boxing
chess
cricket
sports_market_type
​SportsMarketType[] · style: form · explode: true

Filter by sportsMarket.type. Repeat the parameter to match any supplied value (OR). Sports-market filters compose independently using AND. Unsupported enum values return 400 Bad Request.

Enum values:
moneyline
spread
total
prop
correct_score
to_advance
futures
other
sports_market_subject
​SportsMarketSubject[] · style: form · explode: true

Filter by sportsMarket.subject. Repeat the parameter to match any supplied value (OR). Sports-market filters compose independently using AND. Unsupported enum values return 400 Bad Request.

Enum values:
contest
team
player
participant
other
sports_market_scope
​SportsMarketScopeType[] · style: form · explode: true

Filter by sportsMarket.scope.type. Repeat the parameter to match any supplied value (OR). Ordinal and range qualifiers are not inferred by this filter. Sports-market filters compose independently using AND. Unsupported enum values return 400 Bad Request.

Enum values:
full_contest
regulation
half
quarter
period
inning
team_innings
over
sports_market_metric
​SportsMarketMetric[] · style: form · explode: true

Filter by sportsMarket.metric. Repeat the parameter to match any supplied value (OR). A metric can be queried without sport; use sport when its sport-specific meaning matters. Sports-market filters compose independently using AND. Unsupported enum values return 400 Bad Request.

Enum values:
aces
assists
balls_faced
birdies
blocked_shots
blocks
bogeys
boundaries
limit
​integer · min: 1 · max: 500

Maximum number of results to return (max 500)

Default: 50
offset
​integer · min: 0

Number of results to skip for pagination

Default: 0

List recently settled events › Responses

Successful response

EventsResponse
​Event[]
​Pagination
GET/v1/prediction-markets/events/recently-settled
curl --request GET \ --url https://api.gemini.com/v1/prediction-markets/events/recently-settled
shell
Example Responses
{ "data": [ { "id": "4100", "title": "SOL price today at 4am EST", "slug": "sol-price-today-at-4am-est", "description": "Interval SOL price prediction event", "imageUrl": "https://images.ctfassets.net/example.png", "type": "categorical", "category": "Crypto", "series": "SOL1H", "ticker": "SOL2603050400", "status": "settled", "resolvedAt": "2026-03-05T04:00:21.400Z", "createdAt": "2026-03-05T01:57:31.548Z", "effectiveDate": null, "expiryDate": "2026-03-05T04:00:00.000Z", "liquidity": null, "tags": [ "Solana" ], "contracts": [ { "id": "4100-33800", "label": "SOL > $90", "abbreviatedName": ">$90", "description": null, "prices": { "buy": {}, "sell": {}, "bestBid": null, "bestAsk": null, "lastTradePrice": "0.80" }, "totalShares": null, "color": "#4CAF50", "status": "settled", "imageUrl": null, "priceHistory": null, "createdAt": "2026-03-05T01:57:31.548Z", "expiryDate": "2026-03-05T04:00:00.000Z", "resolutionSide": "yes", "resolvedAt": "2026-03-05T04:00:21.400Z", "termsAndConditionsUrl": "https://example.com/terms", "ticker": "HI90", "instrumentSymbol": "GEMI-SOL2603050400-HI90", "effectiveDate": null, "marketState": "closed", "sortOrder": 1 } ] } ], "pagination": { "limit": 50, "offset": 0, "total": 1 } }
json
application/json

List upcoming events

GET
https://api.gemini.com
/v1/prediction-markets/events/upcoming

Returns a list of approved prediction market events that are not yet active (pre-launch), sorted by start time (soonest first). Repeated values for the same sports-market filter use OR semantics; different filters combine with AND semantics.

List upcoming events › query Parameters

category
​string[] · style: form · explode: true

Filter by category (can specify multiple). If omitted, returns events from all categories.

sport
​SportsMarketSport[] · style: form · explode: true

Filter by sportsMarket.sport. Repeat the parameter to match any supplied value (OR). Sports-market filters compose independently using AND. Unsupported enum values return 400 Bad Request; valid combinations with no matching events return an empty result.

Enum values:
american_football
athletics
australian_rules_football
baseball
basketball
boxing
chess
cricket
sports_market_type
​SportsMarketType[] · style: form · explode: true

Filter by sportsMarket.type. Repeat the parameter to match any supplied value (OR). Sports-market filters compose independently using AND. Unsupported enum values return 400 Bad Request.

Enum values:
moneyline
spread
total
prop
correct_score
to_advance
futures
other
sports_market_subject
​SportsMarketSubject[] · style: form · explode: true

Filter by sportsMarket.subject. Repeat the parameter to match any supplied value (OR). Sports-market filters compose independently using AND. Unsupported enum values return 400 Bad Request.

Enum values:
contest
team
player
participant
other
sports_market_scope
​SportsMarketScopeType[] · style: form · explode: true

Filter by sportsMarket.scope.type. Repeat the parameter to match any supplied value (OR). Ordinal and range qualifiers are not inferred by this filter. Sports-market filters compose independently using AND. Unsupported enum values return 400 Bad Request.

Enum values:
full_contest
regulation
half
quarter
period
inning
team_innings
over
sports_market_metric
​SportsMarketMetric[] · style: form · explode: true

Filter by sportsMarket.metric. Repeat the parameter to match any supplied value (OR). A metric can be queried without sport; use sport when its sport-specific meaning matters. Sports-market filters compose independently using AND. Unsupported enum values return 400 Bad Request.

Enum values:
aces
assists
balls_faced
birdies
blocked_shots
blocks
bogeys
boundaries
limit
​integer · min: 1 · max: 500

Maximum number of results to return (max 500)

Default: 50
offset
​integer · min: 0

Number of results to skip for pagination

Default: 0

List upcoming events › Responses

Successful response

EventsResponse
​Event[]
​Pagination
GET/v1/prediction-markets/events/upcoming
curl --request GET \ --url https://api.gemini.com/v1/prediction-markets/events/upcoming
shell
Example Responses
{ "data": [ { "id": "4200", "title": "Lakers vs Celtics", "slug": "lakers-vs-celtics-march-10", "description": "NBA game prediction market", "imageUrl": "https://images.ctfassets.net/example.png", "type": "binary", "category": "Sports", "series": null, "sportsMarket": { "sport": "basketball", "type": "moneyline", "subject": "contest", "scope": { "type": "full_contest" } }, "ticker": "NBA260310LAL-BOS", "status": "approved", "resolvedAt": null, "createdAt": "2026-03-04T12:00:00.000Z", "effectiveDate": "2026-03-10T19:30:00.000Z", "expiryDate": "2026-03-11T02:00:00.000Z", "liquidity": null, "tags": [ "NBA", "Basketball" ], "subcategory": { "id": 10, "slug": "sports_nba", "name": "NBA", "path": [ "Sports", "NBA" ] }, "contracts": [ { "id": "4200-1", "label": "Lakers Win", "abbreviatedName": "LAL", "description": null, "prices": { "buy": {}, "sell": {}, "bestBid": null, "bestAsk": null, "lastTradePrice": null }, "totalShares": null, "color": "#552583", "status": "approved", "imageUrl": null, "priceHistory": null, "createdAt": "2026-03-04T12:00:00.000Z", "expiryDate": "2026-03-11T02:00:00.000Z", "resolutionSide": null, "resolvedAt": null, "termsAndConditionsUrl": "https://example.com/terms", "ticker": "LAL", "instrumentSymbol": "GEMI-NBA260310LAL-BOS-LAL", "effectiveDate": "2026-03-10T19:30:00.000Z", "marketState": "closed", "sortOrder": 1 } ] } ], "pagination": { "limit": 50, "offset": 0, "total": 1 } }
json
application/json

List event categories

GET
https://api.gemini.com
/v1/prediction-markets/categories

Returns available prediction market event categories, optionally filtered by event status.

List event categories › query Parameters

status
​MarketStatus[] · style: form · explode: true

Filter categories by event status

Enum values:
approved
active
closed
under_review
settled
invalid

List event categories › Responses

Successful response

categories
​string[]
GET/v1/prediction-markets/categories
curl --request GET \ --url https://api.gemini.com/v1/prediction-markets/categories
shell
Example Responses
{ "categories": [ "sports", "politics", "crypto", "entertainment" ] }
json
application/json

Volume