Skip to main content
GET
cURL
Use this endpoint to find a game’s spreads, totals, team totals, period lines and player props. List games and Game carry only the winner markets, and Search markets returns one market per game. Each row has the condition_id and both outcome token ids, so you can read a market’s book on Polymarket’s CLOB or pass the condition_id to Market holders and Market snapshot. Polymarket files some markets of a game under child events. A soccer game’s exact score, halftime result and “more markets” events are examples. This endpoint returns those markets too, and each row’s event_slug names the event it belongs to.

Parameters

Key response fields

Rows are ordered by sports_market_type, then line, then condition_id. Markets with no type come last.

Example

The list_game_markets MCP tool calls this endpoint with the same parameters.

Conditional reads

The response carries a weak semantic ETag. Send it back as If-None-Match for a 304 with an empty body. request_id and cost are excluded from the validator.

What it does not return

  • Prices, order books, sharp-money splits or holder identity. Use Market snapshot and Market holders with a row’s condition_id.
  • A slug with no stored market. That is a 404 with error.code not_found.
  • An event outside sports and esports. That is a 404 with error.reason market_out_of_scope. Stop requesting it.

Authorizations

Authorization
string
header
required

Legacy default or named integration API key, or OAuth 2.1 access token, in the Authorization header as Bearer oxi_sk_live_... or Bearer oxi_at_.... Default keys retain full access; integration keys are limited to their approved read, webhooks, export and usage scopes and expire within 90 days. All credentials share the owner's account limits. Data calls require an active Pro subscription and return live data. A 401 carries WWW-Authenticate: Bearer resource_metadata="https://api.0xinsider.com/.well-known/oauth-protected-resource" (RFC 6750 section 3, RFC 9728).

Headers

X-Query-Validation
enum<string>

Opt into strict query-name validation. The default is compatible: unknown names are ignored and reported in X-Query-Ignored. With strict, an unknown name returns 400 bad_request with error.reason unknown_query_parameter before the handler runs, including when its percent escape is incomplete.

Available options:
strict
If-None-Match
string

Conditional GET using a weak semantic ETag from an earlier response. A matching payload returns 304 with an empty body; request_id and cost are excluded from the validator.

Path Parameters

event_slug
string
required

The event slug from GET /api/v1/games, GET /api/v1/games/{event_slug} or a markets/search result's event_slug, for example nba-bos-orl-2026-11-01. Matched case-insensitively.

Query Parameters

sports_market_type
string

Comma-separated provider market types to keep, case-insensitive: spreads, totals, points, first_half_totals. Omitted keeps every type. An unknown type returns an empty page, not a 400; families lists the event's types.

Maximum string length: 512
status
enum<string>
default:all

active, closed or all. closed means the provider closed the market or it resolved.

Available options:
active,
closed,
all
limit
integer
default:20

Page size. Out-of-range values are clamped to 1..100.

Required range: 1 <= x <= 100
cursor
string

Opaque gmk_v1_ cursor from next_cursor, sent with the same filters. It pins the page position (sports_market_type, line, condition_id), not a snapshot. A cursor this endpoint did not issue returns 400 with error.param=cursor.

Response

One page of the event's markets

data
object[]
required
event_slug
string
required
families
object[]
required
has_more
boolean
required
meta
object
required
object
string
required
next_cursor
string