Simulations
Intro
Our API simulations allow you to replay actual games at any time, on your own schedule.
With the replayer, you can:
- Request a list of available recordings (by league)
- Register a session (allows a game to be replayed in natural time, specific to the session)
- Continually request an endpoint as a "live" game progresses
- Open up a continuous Push simulation of a game
AuthenticationSimulations do not require an API key or any authentication
League Availability
Replay simulations are currently available for the following APIs:
Fetch Available Recordings
To see a list of available recordings the below GraphQL endpoint can be used.
curl --location --request POST 'https://playback.sportradar.com/graphql' \
--header 'Content-Type: application/json' \
--data-raw '{"query":"query getRecordings($league: String){ recordings(league: $league){ id scheduled meta league start end title apis { name description formats } }}","variables":{"league":"nfl"}}'The above query is specific to the NFL ("league":"nfl"). Click here for all available league parameters.
Recording Samples
{
"data": {
"recordings": [
{
"id": "95aa13a0-6538-11ef-9287-d597687b4672",
"title": "Baltimore Ravens AT Kansas City Chiefs",
"meta": {
"gameId": "ebb5f3ac-bb13-4dc4-ab8b-6c65623eac13",
"awayTeam": "6526d38583a47c56303cf1fa",
"homeTeam": "6526d350fb66c7d02dfb8a0f",
"scheduled": "2024-09-06T00:20:00+00:00",
"awayTeamName": "Baltimore Ravens",
"homeTeamName": "Kansas City Chiefs"
},
"league": "nfl",
"scheduled": "2024-09-06T00:20:00.000Z",
"start": 1725583604260,
"end": 1725595789187,
"apis": [
{
"name": "events",
"description": "game events",
"apiType": "push",
"formats": [
"json"
],
"versions": [
"v7"
],
"languages": [
"en"
]
},
{
"name": "statistics",
"description": null,
"apiType": "push",
"formats": [
"json"
],
"versions": [
"v7"
],
"languages": [
"en"
]
},
{
"name": "pulse",
"description": "game push pulse",
"apiType": "push",
"formats": [
"json"
],
"versions": [
"v7"
],
"languages": [
"en"
]
},
{
"name": "boxscore",
"description": "game box score",
"apiType": "rest",
"formats": [
"json",
"xml"
],
"versions": [
"v7"
],
"languages": [
"en"
]
},
{
"name": "game",
"description": "game statistics",
"apiType": "rest",
"formats": [
"json",
"xml"
],
"versions": [
"v7"
],
"languages": [
"en"
]
},
{
"name": "pbp",
"description": "game play by play",
"apiType": "rest",
"formats": [
"json",
"xml"
],
"versions": [
"v7"
],
"languages": [
"en"
]
},
{
"name": "rosters",
"description": "game rosters",
"apiType": "rest",
"formats": [
"json",
"xml"
],
"versions": [
"v7"
],
"languages": [
"en"
]
}
]
}
]
}
}{
"data": {
"recordings": [
{
"id": "fb821410-5fda-11ef-b731-154d1d4eafcf",
"title": "Astros AT Phillies",
"meta": {
"gameId": "9207104d-771d-4aa0-993f-7939d8b8c617",
"awayTeam": 3655,
"homeTeam": 3635,
"scheduled": "2024-08-27T22:40:00+00:00",
"awayTeamName": "Astros",
"homeTeamName": "Phillies"
},
"league": "mlb",
"scheduled": "2024-08-27T22:40:00.000Z",
"start": 1724798370278,
"end": 1724807855106,
"apis": [
{
"name": "boxscore",
"description": "game box score",
"apiType": "rest",
"formats": [
"json",
"xml"
],
"versions": [
"v7"
],
"languages": [
"en"
]
},
{
"name": "game",
"description": "game statistics",
"apiType": "rest",
"formats": [
"json",
"xml"
],
"versions": [
"v7"
],
"languages": [
"en"
]
},
{
"name": "pbp",
"description": "game play by play",
"apiType": "rest",
"formats": [
"json",
"xml"
],
"versions": [
"v7"
],
"languages": [
"en"
]
},
{
"name": "pitch metrics",
"description": null,
"apiType": "rest",
"formats": [
"json",
"xml"
],
"versions": [
"v7"
],
"languages": [
"en"
]
},
{
"name": "events",
"description": "game events",
"apiType": "push",
"formats": [
"json"
],
"versions": [
"v7"
],
"languages": [
"en"
]
},
{
"name": "statistics",
"description": null,
"apiType": "push",
"formats": [
"json"
],
"versions": [
"v7"
],
"languages": [
"en"
]
},
{
"name": "linescore",
"description": "game linescore",
"apiType": "push",
"formats": [
"json"
],
"versions": [
"v7"
],
"languages": [
"en"
]
}
]
},
{
"id": "024fb770-5fdb-11ef-b731-154d1d4eafcf",
"title": "Royals AT Guardians",
"meta": {
"gameId": "f7d3cb9a-9cfe-40a3-8fd1-7714b0ef5654",
"awayTeam": 3651,
"homeTeam": 3650,
"scheduled": "2024-08-28T17:10:00+00:00",
"awayTeamName": "Royals",
"homeTeamName": "Guardians"
},
"league": "mlb",
"scheduled": "2024-08-28T17:10:00.000Z",
"start": 1724864993188,
"end": 1724876267756,
"apis": [
{
"name": "boxscore",
"description": "game box score",
"apiType": "rest",
"formats": [
"json",
"xml"
],
"versions": [
"v7"
],
"languages": [
"en"
]
},
{
"name": "game",
"description": "game statistics",
"apiType": "rest",
"formats": [
"json",
"xml"
],
"versions": [
"v7"
],
"languages": [
"en"
]
},
{
"name": "pbp",
"description": "game play by play",
"apiType": "rest",
"formats": [
"json",
"xml"
],
"versions": [
"v7"
],
"languages": [
"en"
]
},
{
"name": "pitch metrics",
"description": null,
"apiType": "rest",
"formats": [
"json",
"xml"
],
"versions": [
"v7"
],
"languages": [
"en"
]
},
{
"name": "events",
"description": "game events",
"apiType": "push",
"formats": [
"json"
],
"versions": [
"v7"
],
"languages": [
"en"
]
},
{
"name": "statistics",
"description": null,
"apiType": "push",
"formats": [
"json"
],
"versions": [
"v7"
],
"languages": [
"en"
]
},
{
"name": "linescore",
"description": "game linescore",
"apiType": "push",
"formats": [
"json"
],
"versions": [
"v7"
],
"languages": [
"en"
]
}
]
}
]
}
}The NFL recording includes the below RESTful endpoints. All are available in json or xml.
- Game Boxscore (
boxscore) - Game Play-by-Play (
pbp) - Game Roster (
rosters) - Game Statistics (
game)
It also includes these Push feeds, available in json only:
- Push Events (
events) - Push Statistics (
statistics) - Push Pulse (
pulse)
Available endpoints for other leagues will vary.
Register Your Session
Once you have selected a recording you wish to replay, you may start a session. Start a session using the id of the desired recording. At this point the specific feed - if multiple feeds are available - does not matter.
PushNote that this step is unnecessary for our Push simulations. Click here for Push access workflow.
Create a Session Id
Take the recordingId ("id": "95aa13a0-6538-11ef-9287-d597687b4672" in the above sample) and use it to create a sessionId.
curl --location --request POST 'https://playback.sportradar.com/graphql' \
--header 'Content-Type: application/json' \
--data-raw '{"query":"mutation CreateSession($input: CreateSessionInput!) {\n createSession(input: $input)\n }","variables":{"input":{"recordingId":"95aa13a0-6538-11ef-9287-d597687b4672"}}}'This request will return your unique sessionId to be used in subsequent data API requests.
Session Id Sample Response
Here is a sample of a returned sessionId:
{"data":{"createSession":"60414140-53c7-11ed-bd68-ad2289887b03\_-5507944226"}}
Make an API Request
Now that you have your recordingId and sessionId you may create an API call for simulated games.
curl --location --request GET 'https://playback.sportradar.com/replay/nfl/95aa13a0-6538-11ef-9287-d597687b4672?feed=boxscore&contentType=json&sessionId=[sessionId]'This sample is a Game Boxscore (boxscore) request for recordingId 95aa13a0-6538-11ef-9287-d597687b4672. Note that you will need to include your unique sessionid from the previous step.
To receive data updates you can now continually request this path, as you would with live game data in our RESTful APIs. Click here for the complete path parameters.
RESTful Request Path
https://playback.sportradar.com/replay/{league}/{recordingId}?feed={feed}&contentType={contentType}&sessionId={sessionId}
Path Parameters
| Parameter | Description |
|---|---|
league | Desired league for the simulation. Baseball: mlb (MLB)Basketball: nba (NBA), nbdl (NBA G League), ncaamb (NCAA Men's Basketball), ncaawb (NCAA Women's Basketball), wnba (WNBA)Football: ncaafb (NCAA Football), nfl (NFL), ufl (UFL)Hockey: nhl (NHL) |
recordingId | ID of the recording. (ex. 95aa13a0-6538-11ef-9287-d597687b4672) |
Query String Parameters
| Parameter | Description |
|---|---|
feed_name | Desired feed for the simulation. Found under apis.name. Feed availability will vary for each API.boxscore, game, pbp, rostersNHL only: analytics, shot_zones, faceoffs, time_on_ice |
contentType | Desired content type.json or xml |
sessionId | Session ID returned by the session request. (ex. aa23f380-2234-11ed-8a8a-cbecc410da60\_-137242789) |
Push Request Path
https://playback.sportradar.com/subscribe/{feed_name}?recording_id={recordingId}
Path Parameters
| Parameter | Description |
|---|---|
feed_name | Desired feed for the simulation. Found under apis.name.Push feeds are indicated with "apiType": "push".events, statistics, clockpulse (NFL only), linescore (MLB only) |
recordingId | ID of the recording. (ex. 95aa13a0-6538-11ef-9287-d597687b4672) |
Using Simulations to Test Failover Behavior
Sportradar provides failover coverage for leagues where we have official data partnerships, ensuring continuous data delivery if the official league feed becomes unavailable.
While official-data leagues such as the NBA, WNBA, MLB, and NHL do not currently include failover events in their simulations, you can test failover conditions by using NCAA Men’s Basketball simulations for Top 25 games. This data is collected manually and mirrors how a failover would behave in the NBA API, including full play-by-play coverage and stat updates.
Updated 10 days ago
