Skip to main content
GET
/
v2
/
sports
/
games
List Games
curl --request GET \
  --url https://api.predexon.com/v2/sports/games \
  --header 'x-api-key: <api-key>'
{
  "games": [
    {
      "game_id": "mlb-ari-pit-2026-05-07",
      "title": "Arizona Diamondbacks vs Pittsburgh Pirates",
      "league": "mlb",
      "league_name": "MLB",
      "sport": "baseball",
      "game_date": "2026-05-07",
      "status": "open",
      "venues_available": 3,
      "total_volume": 895447.602333,
      "total_liquidity": 40231.55,
      "outcomes": [
        {
          "outcome": "ari",
          "label": "Arizona Diamondbacks",
          "yes": {
            "predexon_id": "px-xz7fw6lsywv2rnwr"
          },
          "no": {
            "predexon_id": "px-c3dftfrdu5unmk3g"
          }
        },
        {
          "outcome": "pit",
          "label": "Pittsburgh Pirates",
          "yes": {
            "predexon_id": "px-c3dftfrdu5unmk3g"
          },
          "no": {
            "predexon_id": "px-xz7fw6lsywv2rnwr"
          }
        }
      ]
    }
  ],
  "pagination": {
    "limit": 1,
    "has_more": true,
    "pagination_key": "eyJybyI6MS..."
  }
}

Overview

Returns broad sports games with canonical outcomes. This endpoint is the compact discovery view: venues are summarized at the game level, and each outcome exposes the canonical predexon_id used for routing and lookup. For per-venue execution detail, prices, token IDs, condition IDs, and market titles, use GET /v2/sports/markets or GET /v2/sports/outcomes/{predexon_id}.

Query Parameters

ParamTypeDefaultDescription
sportstring-Filter by sport: basketball, soccer, hockey, baseball.
leaguestring-Filter by league code (e.g. nba, epl). See league codes.
statusstringopenopen or closed.
game_datestring-Exact date, YYYY-MM-DD. See date conventions.
game_date_fromstring-Inclusive lower bound, YYYY-MM-DD.
game_date_tostring-Inclusive upper bound, YYYY-MM-DD.
searchstring-Case-insensitive search against market titles.
sort_bystringgame_date_ascgame_date_asc or game_date_desc.
limitint501-200.
pagination_keystring-Opaque cursor from the previous response. Omit on the first request.

Pagination

Sports list endpoints use cursor pagination. Pass the returned pagination.pagination_key into the next request. Do not use offset-based pagination.
{
  "pagination": {
    "limit": 50,
    "has_more": true,
    "pagination_key": "eyJybyI6NTA..."
  }
}

Response Fields

Game

FieldTypeDescription
game_idstringCanonical game identifier (e.g. nba-atl-nyk-2026-04-18).
titlestringDisplay title (e.g. "Atlanta Hawks vs New York Knicks").
leaguestringLeague code.
league_namestringHuman-readable league name.
sportstringSport name.
game_datestringCalendar date, YYYY-MM-DD.
statusstring"open" or "closed".
venues_availableintNumber of venues offering this game.
total_volumenumber?USD volume summed across all venues.
total_liquiditynumber?USD liquidity summed across all venues.
outcomes[]arrayOne entry per tradeable side.

Outcome

FieldTypeDescription
outcomestringCanonical outcome code (team code or "draw").
labelstringHuman-readable label.
yes.predexon_idstringCanonical predexon_id for this outcome when buying YES.
no.predexon_idstring?Canonical predexon_id for buying NO on that venue question/selection when an executable NO listing exists. In 2-way games this may equal the sibling YES outcome ID; in 3-way soccer it points to an explicit negation outcome such as “Draw does not happen.”
predexon_id is canonical across venues. The same team/draw outcome for the same game has one predexon_id, even when several venues list it.
/games is intentionally compact. It does not return venue-native identifiers. Use /markets for venue comparison and /outcomes/{predexon_id} for route resolution.

Example

GET /v2/sports/games?league=mlb&limit=1
{
  "games": [
    {
      "game_id": "mlb-ari-pit-2026-05-07",
      "title": "Arizona Diamondbacks vs Pittsburgh Pirates",
      "league": "mlb",
      "league_name": "MLB",
      "sport": "baseball",
      "game_date": "2026-05-07",
      "status": "open",
      "venues_available": 3,
      "total_volume": 895447.602333,
      "total_liquidity": 40231.55,
      "outcomes": [
        {
          "outcome": "ari",
          "label": "Arizona Diamondbacks",
          "yes": { "predexon_id": "px-xz7fw6lsywv2rnwr" },
          "no": { "predexon_id": "px-c3dftfrdu5unmk3g" }
        },
        {
          "outcome": "pit",
          "label": "Pittsburgh Pirates",
          "yes": { "predexon_id": "px-c3dftfrdu5unmk3g" },
          "no": { "predexon_id": "px-xz7fw6lsywv2rnwr" }
        }
      ]
    }
  ],
  "pagination": {
    "limit": 1,
    "has_more": true,
    "pagination_key": "eyJybyI6MS..."
  }
}

When to Use This vs /markets

Use CaseEndpoint
Trading UI — show compact game/outcome list/games (this endpoint)
Order routing — find venue for a predexon_idGET /outcomes/{predexon_id}
Arbitrage detection — compare prices across venues/markets
Venue-specific metadata (market_id, condition_id, etc.)/markets
Building a data feed with full venue detail/markets

Caching

Responses are cached for 60 seconds.

Authorizations

x-api-key
string
header
required

Data key provided by Predexon. The trading key used by the Order Router on trade.predexon.com is a separate credential.

Query Parameters

sport
enum<string>

Filter by sport.

Available options:
basketball,
soccer,
hockey,
baseball
league
string

Filter by league code (e.g. nba, epl).

status
enum<string>
default:open

Market status.

Available options:
open,
closed
game_date
string

Exact game date (YYYY-MM-DD).

game_date_from
string

Games on or after date (YYYY-MM-DD).

game_date_to
string

Games on or before date (YYYY-MM-DD).

Search game/market titles.

sort_by
enum<string>
default:game_date_asc

Sort order.

Available options:
game_date_asc,
game_date_desc
limit
integer
default:50

Max games to return.

Required range: 1 <= x <= 200
pagination_key
string

Cursor from the previous response. Omit on the first request.

Response

200 - application/json

Successful response