- New parameter on /fixtures and /fixtures/active endpoint to only return fixtures that changed since an ISO datetime.
- Example: &updated_since=2026-05-12T15:38:31Z
New ATP/WTA/ATP Challenger fixtures will now have a tournament and a tournament stage populated.
{
"data": [
{
"id": "202605050C4F220C",
"numerical_id": 851849,
"sport": {
"id": "tennis",
"name": "Tennis",
"numerical_id": 25
},
"league": {
"id": "atp",
"name": "ATP",
"numerical_id": 20
},
"tournament": {
"id": "993CAF204CD42D50",
"name": "Rome, Italy",
"numerical_id": 16186,
"start_date": "2026-05-04T00:00:00Z",
"end_date": "2026-05-17T00:00:00Z"
},
"tournament_stage": "Qualification",There is a new POST endpoint that you can use to override the copilot specific prices for parlay pricing.
https://developer.opticodds.com/reference/post_copilot-parlay-odds
For pagination, we will be switching from total_pages to has_more being true or false to improve performance and decrease latency.
There is a new extra field that will be included on the fixtures response. For now this will only be supported on esports fixtures and will include the following fields:
- level : The tier of the match / tournament.
- sub_league : The sub league of the esports game.
- num_periods : The best of number of games/maps.
{
"id": "2026010512854E5A",
"numerical_id": 600030,
"game_id": "35252-16764-2026-01-05-00",
"start_date": "2026-01-05T08:00:00Z",
"home_competitors": [
{
"id": "9D67F088FACFA029",
"name": "OlyBet SB",
"numerical_id": 90354,
"base_id": 68483,
"abbreviation": "",
"logo": "https://cdn.oddsjam.com/team-logos/unknown.jpg"
}
],
"away_competitors": [
{
"id": "A94EAEA85A31",
"name": "AaB esport",
"numerical_id": 57500,
"base_id": 42535,
"abbreviation": "AAB",
"logo": "https://cdn.opticodds.com/team-logos/esports/42535.png"
}
],
"home_team_display": "OlyBet SB",
"away_team_display": "AaB esport",
"status": "completed",
"is_live": false,
"season_type": "Urban Riga",
"season_year": "Open#2 2026",
"season_week": "playoffs",
"venue_name": null,
"venue_location": null,
"venue_neutral": false,
"sport": {
"id": "esports",
"name": "eSports",
"numerical_id": null
},
"league": {
"id": "cs2",
"name": "CS2",
"numerical_id": null
},
"home_starter": null,
"home_starter_id": null,
"home_record": null,
"home_seed": null,
"home_rotation_number": null,
"away_starter": null,
"away_starter_id": null,
"away_record": null,
"away_seed": null,
"away_rotation_number": null,
"tournament": null,
"tournament_stage": null,
"has_odds": false,
"broadcast": "https://www.twitch.tv/aabesport | https://kick.com/urbancontenders",
"result": null,
"lineups": {
"home": [],
"away": []
},
"weather": null,
"weather_temp": null,
"extra": {
"level": "D",
"sub_league": "Urban Riga",
"num_periods": 3
},
"source_ids": {}
},To make things simpler and easier to maintain, we are consolidating the following markets into a single one (To Advance).
- To Lift The Cup
- To Qualify
The following 2 books will no longer have odds and are being replaced by:
- Underdog Sportsbook -> Underdog Predictions
- Underdog Fantasy -> Underdog Fantasy (6 Pick)
Order Book
We are now exposing the order books for the exchanges we support that expose it. This can help provide a bigger picture of where users want to place bets.
Source Ids
We are now exposing the source ids for some exchanges to help facilitate matching. This is useful for hyper latency sensitive applications that connect directly to the exchange's apis and don't want to rely on our poll rate for pricing. This way you can make a single call to our api, get the necessary ticker / token / source ids for the exchange of interest and subscribe to the exchange directly or make orders via API.
Example:
These are available on both the /fixtures/odds and the /stream/odds endpoints.
{
"id": "40294-35775-2025-11-30:kalshi:moneyline:new_york_knicks",
"sportsbook": "Kalshi",
"market": "Moneyline",
"name": "New York Knicks",
"is_main": true,
"selection": "New York Knicks",
"normalized_selection": "new_york_knicks",
"market_id": "moneyline",
"selection_line": null,
"player_id": null,
"team_id": "6A36E386117E",
"price": 1.31,
"timestamp": 1764536802.4131637,
"grouping_key": "default",
"points": null,
"deep_link": null,
"limits": {
"max": 108.25
},
"order_book": [
[
1.31,
108.25
],
[
1.293,
91866.72
],
[
1.278,
25744.13
]
],
"source_ids": {
"market_id": "KXNBAGAME-25NOV30TORNYK-NYK",
"selection_id": "yes"
}
},