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
To make things simpler and easier to maintain, we are consolidating the following markets into a single one (To Advance).
The following 2 books will no longer have odds and are being replaced by:
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.
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.
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"
}
},
As the uses of our API are evolving, we are realizing that our API needs to evolve with it. One of the questions we get asked the most is "Do you have a mapping from your stats to your markets?". One reason for wanting this is to create a tracker for Player Props or Team Props or Totals.
We are introducing a market_stats field on both the fixture/results and fixture/player-results response that will allow direct mapping from our scores to our markets that are settleable. These will also come via our streaming or rabbitmq solutions.
"market_stats":{
"home":{
"team_total_steals":7,
"1st_half_team_total":57,
"team_total_rebounds":27,
"team_total_blocks":9,
"team_total_assists":23,
"2nd_half_team_total":28,
"1st_quarter_team_total":29,
"2nd_quarter_team_total":28,
"3rd_quarter_team_total":28,
"team_total_made_threes":10,
"team_total_consecutive_points":8,
"team_total":85
},
"away":{
"team_total":91,
"team_total_blocks":2,
"team_total_steals":8,
"team_total_rebounds":43,
"1st_quarter_team_total":37,
"team_total_made_threes":10,
"team_total_assists":20,
"1st_half_team_total":61,
"2nd_half_team_total":30,
"2nd_quarter_team_total":24,
"3rd_quarter_team_total":30,
"team_total_consecutive_points":9
}
},
"market_stats":{
"player_points_+_assists":3,
"player_points_+_rebounds":4,
"player_free_throws_attempted":0,
"player_two_pointers_attempted":2,
"player_blocks":0,
"player_points":2,
"player_assists":1,
"player_field_goals_made":1,
"player_made_two_pointers":1,
"player_defensive_rebounds":2,
"player_field_goals_attempted":5,
"player_rebounds":2,
"player_made_threes":0,
"player_threes_attempted":3,
"player_offensive_rebounds":0,
"player_rebounds_+_assists":3,
"player_points_+_rebounds_+_assists":5,
"player_fouls":1,
"player_turnovers":0,
"player_steals_+_blocks":1,
"player_free_throws_made":0,
"player_steals":1
},
On Nov 2, we will be removing the status field on each individual player's result. It is duplicated info from the status field on the fixture and is causing confusion.
Now the /markets endpoint will include a nullable market_type_id which can be cross referenced against the /market-types endpoint. This is part of our ongoing effort to standardize and make our market and names more uniform and consistent.
More information can be found here: https://developer.opticodds.com/reference/get_market-types#/
To make it simpler for copilot users, there is now a /copilot/fixtures endpoint that acts the same as /fixtures/active but will require a copilot_version_id that will allow you to get active fixtures that have or have had odds for your copilot version.
You will still need to use the normal /fixtures endpoint to get any fixture that has been completed in the past.
You can now create copilot specific fixture results queues, this way you will only get results for the fixtures that have or have had copilot odds.
You can now also set up separate queues per copilot version.
The credentials to access these queues will be the same as the ones used to access your normal copilot odds queues.
The following rate limits apply for every 15s window, the limit resets after the 15s are completed:
These will all reset after 15 seconds.
You can now request full snapshots of odds, locked-odds, and settled-odds data for Copilot. This new endpoint serves as a reliable fallback mechanism when your application loses sync with the RabbitMQ feed, ensuring continuous access to the latest odds data.
Key Features:
snapshot: true identifierFor complete implementation details, see: Snapshots API Documentation