Fixture Results

Getting Started

Make sure to follow the instructions at https://developer.opticodds.com/docs/getting-started#/ to get the information you need.

⚙️ Enable Your Queue

To initialize your message queue and begin receiving data:

  1. Make a POST request to: v3/fixtures/results/queue/start
  2. This will return your queue details. Example response:
{
    "data": [
        {
            "id": 3,
            "queue_name": "AAAAAAA_2_cop_4HOEXAMPLEQUEUE",
            "enabled": true,
            "sports": [],
            "leagues": [
                "nba"
            ],
            "num_consumers": null,
            "num_messages": null,
            "messages_per_second": null
        }
    ]
}

📦 Message Types

All messages are sent as JSON-encoded byte streams. Below are examples of supported event types.

🔄 ping

A basic heartbeat message.

{
  "event": "ping",
  "timestamp": "1743541426",
  "data": "2024-08-28T18:57:49Z"
}

🎯 fixture-results

Live score updates for fixtures.

{
   "event":"fixture-results",
   "timestamp":1746109375,
   "data":{
      "fixture_id":"2025050128AD6D61",
      "sport":"tennis",
      "league":"ITF Women",
      "is_live":true,
      "score":{
         "sport":{
            "id":"tennis",
            "name":"Tennis",
            "numerical_id":25
         },
         "league":{
            "id":"itf_women",
            "name":"ITF Women",
            "numerical_id":605
         },
         "fixture":{
            "id":"2025050128AD6D61",
            "numerical_id":242184,
            "game_id":"45040-10517-2025-17",
            "start_date":"2025-05-01T08:00:00+00:00",
            "home_competitors":[
               {
                  "id":"F8ED4FE9C4698E9D",
                  "name":"Amandine Hesse",
                  "numerical_id":43219,
                  "base_id":2213,
                  "abbreviation":"",
                  "logo":"https://cdn.opticodds.com/team-logos/tennis/2213.png"
               }
            ],
            "away_competitors":[
               {
                  "id":"03C08D67548BE1EE",
                  "name":"Aravane Rezai",
                  "numerical_id":67335,
                  "base_id":52105,
                  "abbreviation":"",
                  "logo":"https://cdn.oddsjam.com/team-logos/unknown.jpg"
               }
            ],
            "home_team_display":"Amandine Hesse",
            "away_team_display":"Aravane Rezai",
            "status":"live",
            "is_live":true,
            "season_type":"ITF W50 Yecla Women",
            "season_year":"2025",
            "season_week":"round of 16",
            "venue_name":null,
            "venue_location":null,
            "venue_neutral":false
         },
         "scores":{
            "home":{
               "total":1.0,
               "periods":{
                  "period_1":6.0,
                  "period_2":3.0
               },
               "aggregate":null
            },
            "away":{
               "total":0.0,
               "periods":{
                  "period_1":1.0,
                  "period_2":2.0
               },
               "aggregate":null
            }
         },
         "in_play":{
            "period":"2",
            "clock":null,
            "last_play":null,
            "time_min":null,
            "time_sec":null,
            "balls":null,
            "outs":null,
            "strikes":null,
            "runners":null,
            "batter":null,
            "pitcher":null,
            "possession":null,
            "down":null,
            "distance_to_go":null,
            "field_position":null,
            "game_score":null
         },
         "events":[
            
         ],
         "stats":{
            "home":[
               {
                  "period":"all",
                  "stats":{
                     "aces":4.0,
                     "double_faults":4.0,
                     "service_games_won":6.0,
                     "max_games_in_a_row":4.0,
                     "service_points_won":27.0,
                     "max_points_in_a_row":10.0
                  }
               }
            ],
            "away":[
               {
                  "period":"all",
                  "stats":{
                     "aces":2.0,
                     "double_faults":3.0,
                     "service_games_won":3.0,
                     "max_games_in_a_row":1.0,
                     "service_points_won":20.0,
                     "max_points_in_a_row":7.0
                  }
               }
            ]
         },
         "extra":{
            "id":"2025050128AD6D61",
            "clock":null,
            "sport":"tennis",
            "league":"ITF Women",
            "period":"2",
            "source":"sofascore",
            "status":"Live",
            "game_id":"45040-10517-2025-17",
            "is_live":true,
            "away_team":"Aravane Rezai",
            "home_team":"Amandine Hesse",
            "start_date":"2025-05-01T08:00:00+00:00",
            "team_stats":{
               "away_stats":{
                  "stat_aces":2.0,
                  "stat_double_faults":3.0,
                  "stat_service_games_won":3.0,
                  "stat_max_games_in_a_row":1.0,
                  "stat_service_points_won":20.0,
                  "stat_max_points_in_a_row":7.0
               },
               "home_stats":{
                  "stat_aces":4.0,
                  "stat_double_faults":4.0,
                  "stat_service_games_won":6.0,
                  "stat_max_games_in_a_row":4.0,
                  "stat_service_points_won":27.0,
                  "stat_max_points_in_a_row":10.0
               }
            },
            "description":"A. Rezai vs A. Hesse",
            "away_team_id":"03C08D67548BE1EE",
            "home_team_id":"F8ED4FE9C4698E9D",
            "is_clock_stopped":false,
            "score_away_total":0.0,
            "score_home_total":1.0,
            "score_away_period_1":1.0,
            "score_away_period_2":2.0,
            "score_home_period_1":6.0,
            "score_home_period_2":3.0
         },
         "retirement_info":null
      },
      "player_results":[
         {
            "player":{
               "id":"F8ED4FE9C4698E9D",
               "name":"Amandine Hesse",
               "position":null,
               "number":null,
               "numerical_id":1365689,
               "base_id":39572
            },
            "team":{
               "id":"F8ED4FE9C4698E9D",
               "name":"Amandine Hesse",
               "numerical_id":43219,
               "base_id":2213
            },
            "status":"live",
            "stats":[
               {
                  "period":"all",
                  "stats":{
                     "aces":4.0,
                     "double_faults":4.0,
                     "service_games_won":6.0,
                     "max_games_in_a_row":4.0,
                     "service_points_won":27.0,
                     "max_points_in_a_row":10.0
                  }
               }
            ],
            "is_starter":false
         },
         {
            "player":{
               "id":"03C08D67548BE1EE",
               "name":"Aravane Rezai",
               "position":null,
               "number":null,
               "numerical_id":1449774,
               "base_id":723855
            },
            "team":{
               "id":"03C08D67548BE1EE",
               "name":"Aravane Rezai",
               "numerical_id":67335,
               "base_id":52105
            },
            "status":"live",
            "stats":[
               {
                  "period":"all",
                  "stats":{
                     "aces":2.0,
                     "double_faults":3.0,
                     "service_games_won":3.0,
                     "max_games_in_a_row":1.0,
                     "service_points_won":20.0,
                     "max_points_in_a_row":7.0
                  }
               }
            ],
            "is_starter":false
         }
      ]
   }
}

⚠️ Error Handling

If more than 1,500 unread messages accumulate in your queue:

  • The queue will be automatically cleared and deleted.
  • You must re-initiate the /queue/start flow to resume consumption