Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/gemini-prediction-markets-rest-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.0.3
info:
title: Gemini Prediction Markets API
description: |
API for trading prediction market contracts on Gemini.
**Note:** Only fields documented in this specification are considered stable. Undocumented fields in API responses may change or be removed without notice.
version: 1.0.0
contact:
name: Gemini API Support
servers:
- url: https://api.gemini.com
description: Production
- url: https://api.sandbox.gemini.com
description: Sandbox
tags:
- name: Markets
description: |
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](/prediction-markets/websocket/streams) with that `instrumentSymbol`.
- [List Events](/rest-api/prediction-markets/events/list-events) - Discover active events and instrument symbols
- [Prediction Markets WebSocket Streams](/prediction-markets/websocket/streams) - Stream prices, depth, order events, and positions
- name: Volume
description: Public, unauthenticated prediction-market trade volume by category and UTC period.
- name: Terms
description: Read, check, and accept the latest Prediction Markets terms for API key and OAuth trading flows.
- name: Trading
description: 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.
- name: Positions
description: Authenticated endpoints for viewing positions and order history. Use REST positions for recovery or audit snapshots after reconnects, missed WebSocket messages, and settlement windows.
- name: Combos
description: Public endpoints for discovering and inspecting combo contracts, plus an authenticated endpoint to create or retrieve a canonical combo. Combos are multi-leg contracts; order entry uses the same place/cancel endpoints as single contracts.
- name: Rewards
description: |
Endpoints for the Maker Rebate and Liquidity Rewards programs.
- **Maker Rebate** — per-fill rebates earned by resting limit orders that get filled. Rates and rebate multipliers are configured per category. Public rate schedule plus authenticated payout and summary endpoints.
- **Liquidity Rewards** — daily USD reward pools distributed across qualifying makers based on quote uptime, spread, and size. Public config + event listing, authenticated daily and lifetime summary endpoints.
When a program is not active, its endpoints return `503 Service Unavailable`.
**Note on field naming.** Response fields under the Rewards endpoints use `snake_case` (e.g. `event_ticker`, `daily_pool_usd`). This differs from the `camelCase` convention used by the rest of the Prediction Markets REST endpoints.
paths:
/v1/prediction-markets/events:
get:
tags:
- Markets
summary: List prediction market events
description: 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. Game events may include an `events` array containing full child event objects, each with its own contracts; child market types are open-ended and may include spreads, totals, player props, or future types.
operationId: listEvents
parameters:
- name: status
in: query
description: Filter by event status (can specify multiple)
schema:
type: array
items:
$ref: '#/components/schemas/MarketStatus'
style: form
explode: true
- name: category
in: query
description: Filter by category (can specify multiple). If omitted, returns events from all categories.
schema:
type: array
items:
type: string
style: form
explode: true
- $ref: '#/components/parameters/SportFilter'
- $ref: '#/components/parameters/SportsMarketTypeFilter'
- $ref: '#/components/parameters/SportsMarketSubjectFilter'
- $ref: '#/components/parameters/SportsMarketScopeFilter'
- $ref: '#/components/parameters/SportsMarketMetricFilter'
- name: search
in: query
description: Search text to filter events by title
schema:
type: string
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/Offset'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/EventsResponse'
examples:
activeEvents:
summary: List of active events
value:
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: "BTC reaches $100,000 by end of 2028"
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"
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: "BTC100K2028"
instrumentSymbol: "GEMI-BTC100K2028"
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: "ETH reaches $5,000 by end of 2028"
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"
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: "ETH5K2028"
instrumentSymbol: "GEMI-ETH5K2028"
effectiveDate: "2026-01-01T00:00:00.000Z"
pagination:
limit: 50
offset: 0
total: 2
sportsMarkets:
summary: Sports markets across leagues and periods
value:
data:
- id: "evt_mlb_first_five_spread"
title: "Yankees at Red Sox - First 5 Innings Spread"
type: "binary"
category: "Sports"
sportsMarket:
sport: "baseball"
type: "spread"
subject: "team"
scope:
type: "inning"
start: 1
end: 5
metric: "runs"
contracts: []
- id: "evt_nfl_first_half_spread"
title: "Bills at Chiefs - First Half Spread"
type: "binary"
category: "Sports"
sportsMarket:
sport: "american_football"
type: "spread"
subject: "team"
scope:
type: "half"
ordinal: 1
metric: "points"
contracts: []
- id: "evt_ncaaf_team_total"
title: "Michigan Team Total vs Ohio State"
type: "binary"
category: "Sports"
sportsMarket:
sport: "american_football"
type: "total"
subject: "team"
scope:
type: "full_contest"
metric: "points"
contracts: []
pagination:
limit: 50
offset: 0
total: 3
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalError'
'503':
$ref: '#/components/responses/ServiceUnavailable'
/v1/prediction-markets/events/{eventTicker}:
get:
tags:
- Markets
summary: Get event by ticker
description: Returns detailed information about a specific prediction market event. Game events may include an `events` array containing full child event objects, each with its own contracts; child market types are open-ended and may include spreads, totals, player props, or future types.
operationId: getEvent
parameters:
- name: eventTicker
in: path
required: true
description: The event ticker symbol (e.g., "BTC100K")
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/Event'
'404':
description: Event not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
$ref: '#/components/responses/InternalError'
'503':
$ref: '#/components/responses/ServiceUnavailable'
/v1/prediction-markets/events/{eventTicker}/strike:
get:
tags:
- Markets
summary: Get strike price for event
description: |
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.
operationId: getEventStrike
parameters:
- name: eventTicker
in: path
required: true
description: The event ticker symbol (e.g., "BTC05M2603271950")
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/Strike'
examples:
strikeAvailable:
summary: Strike price captured
value:
value: "98000.50"
type: "reference"
availableAt: "2026-03-27T19:45:00.000Z"
strikePending:
summary: Strike pending (pre-T-0)
value:
value: null
type: "reference"
availableAt: "2026-03-27T19:45:00.000Z"
'404':
description: Strike not found (event doesn't exist or doesn't have strike data)
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: "Strike not found"
'500':
$ref: '#/components/responses/InternalError'
'503':
$ref: '#/components/responses/ServiceUnavailable'
/v1/prediction-markets/events/newly-listed:
get:
tags:
- Markets
summary: List newly listed events
description: 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.
operationId: listNewlyListedEvents
parameters:
- name: category
in: query
description: Filter by category (can specify multiple). If omitted, returns events from all categories.
schema:
type: array
items:
type: string
style: form
explode: true
- $ref: '#/components/parameters/SportFilter'
- $ref: '#/components/parameters/SportsMarketTypeFilter'
- $ref: '#/components/parameters/SportsMarketSubjectFilter'
- $ref: '#/components/parameters/SportsMarketScopeFilter'
- $ref: '#/components/parameters/SportsMarketMetricFilter'
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/Offset'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/EventsResponse'
examples:
newlyListedEvents:
summary: Newly listed events
value:
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"
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
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalError'
'503':
$ref: '#/components/responses/ServiceUnavailable'
/v1/prediction-markets/events/recently-settled:
get:
tags:
- Markets
summary: List recently settled events
description: 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.
operationId: listRecentlySettledEvents
parameters:
- name: category
in: query
description: Filter by category (can specify multiple). If omitted, returns events from all categories.
schema:
type: array
items:
type: string
style: form
explode: true
- $ref: '#/components/parameters/SportFilter'
- $ref: '#/components/parameters/SportsMarketTypeFilter'
- $ref: '#/components/parameters/SportsMarketSubjectFilter'
- $ref: '#/components/parameters/SportsMarketScopeFilter'
- $ref: '#/components/parameters/SportsMarketMetricFilter'
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/Offset'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/EventsResponse'
examples:
recentlySettledEvents:
summary: Recently settled events
value:
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"
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
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalError'
'503':
$ref: '#/components/responses/ServiceUnavailable'
/v1/prediction-markets/events/upcoming:
get:
tags:
- Markets
summary: List upcoming events
description: 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.
operationId: listUpcomingEvents
parameters:
- name: category
in: query
description: Filter by category (can specify multiple). If omitted, returns events from all categories.
schema:
type: array
items:
type: string
style: form
explode: true
- $ref: '#/components/parameters/SportFilter'
- $ref: '#/components/parameters/SportsMarketTypeFilter'
- $ref: '#/components/parameters/SportsMarketSubjectFilter'
- $ref: '#/components/parameters/SportsMarketScopeFilter'
- $ref: '#/components/parameters/SportsMarketMetricFilter'
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/Offset'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/EventsResponse'
examples:
upcomingEvents:
summary: Upcoming events
value:
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
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
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalError'
'503':
$ref: '#/components/responses/ServiceUnavailable'
/v1/prediction-markets/categories:
get:
tags:
- Markets
summary: List event categories
description: Returns available prediction market event categories, optionally filtered by event status.
operationId: getCategories
parameters:
- name: status
in: query
description: Filter categories by event status
schema:
type: array
items:
$ref: '#/components/schemas/MarketStatus'
style: form
explode: true
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
categories:
type: array
items:
type: string
example: ["sports", "politics", "crypto", "entertainment"]
'500':
$ref: '#/components/responses/InternalError'
'503':
$ref: '#/components/responses/ServiceUnavailable'
/v1/prediction-markets/volume/{date}:
get:
tags:
- Volume
summary: Get daily prediction market trade volume
description: |
Returns prediction-market trade volume by category for one completed UTC day. This is a public, unauthenticated endpoint.
`date` must use the `YYYY-MM-DD` UTC calendar-date format. Requests may select one day in the rolling one-year UTC window ending before the current UTC day; the current UTC day is not available. The exact earliest supported date is evaluated for each request.
Prediction-market volume begins at `2025-12-15`. A pre-launch date, or a post-launch date with any missing source hour, returns `404 NOT_FOUND`. The endpoint never synthesizes zero-volume rows for time before launch.
All volume values are non-negative decimal strings. Category rows are flat and ordered with each parent before its descendants. Each category row's `volume` includes trades assigned directly to that category and to all descendant categories.
operationId: getPredictionMarketDailyVolume
parameters:
- name: date
in: path
required: true
description: Completed UTC calendar date in `YYYY-MM-DD` format.
schema:
type: string
format: date
responses:
'200':
description: Category volume for the requested UTC day
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PredictionMarketVolumeCategory'
examples:
dailyVolume:
summary: Daily category volume
value:
- categoryPath: ["Sports"]
volume: "200097"
- categoryPath: ["Sports", "Soccer"]
volume: "3952"
'400':
description: Invalid or unsupported date. The message includes the current one-year UTC date bounds.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
invalidDate:
summary: Date must use the required UTC calendar-date format
value:
error: "BAD_REQUEST"
message: "date must use YYYY-MM-DD. Supported one-year UTC date range: <earliest UTC date> <= date < <current UTC date>"
'404':
description: No complete volume data is available for the requested date. This includes dates before prediction markets launched and post-launch dates with a missing source hour.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: "NOT_FOUND"
message: "Prediction market volume data is not available for the requested date"
'503':
description: The canonical source is invalid or temporarily unavailable. The endpoint does not return a partial result.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: "SERVICE_UNAVAILABLE"
message: "Prediction market volume data is temporarily unavailable"
/v1/prediction-markets/volume/{date}/hourly:
get:
tags:
- Volume
summary: Get hourly prediction market trade volume
description: |
Returns prediction-market trade volume by category and UTC hour for one completed UTC day. This is a public, unauthenticated endpoint.
`date` must use the `YYYY-MM-DD` UTC calendar-date format. Requests may select one day in the rolling one-year UTC window ending before the current UTC day; the current UTC day is not available. The exact earliest supported date is evaluated for each request.
Prediction-market volume begins at `2025-12-15`. A pre-launch date, or a post-launch date with any missing source hour, returns `404 NOT_FOUND`. The endpoint never synthesizes zero-volume rows for time before launch or completed zero-volume hours.
All volume values are non-negative decimal strings. Rows are ordered by UTC hour, then with each category par
# --- truncated at 32 KB (196 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/gemini-trust/refs/heads/main/openapi/gemini-trust-prediction-markets-openapi.yml