Skip to contents

One game's header: teams, score, venue, status, rules (periods, overtime, shot clock) and captains.

Endpoint: GET https://embed-api.eui.connect.sportradar.com/v1/embed/{website_id}/fixture_detail?sub=statistics

The rules (number_of_periods, period_length in minutes, overtime_length, shot_clock in seconds, ...) come from the game's profile. *_captain_person_id is the person id of each team's captain.

Usage

atrium_fixture(website_id, fixture_id, locale = NULL)

Arguments

website_id

(integer required): Site config id: which league site's widget this is (12 LNB France, 14 LNBP Mexico, 3 NBL1 Australia, 13 El Salvador, 22 Panama, 236 Austria, 326 Montenegro). Not a league id: one site serves several competitions.

fixture_id

(character required): Game UUID (fixture_id in atrium_fixtures()), e.g. "0dc631bd-c34c-11f1-8d16-4d5a21afb79d".

locale

(character optional): Locale of the labels, e.g. "en-EN" or "fr-FR". Omitted = the site's own language. Ids and codes never change.

Value

A wehoop_data tibble, one row for the game:

col_nametypedescription
website_idintegerSite config id the body came from (12 LNB, 14 LNBP, 3 NBL1, 13 El Salvador, 22 Panama, 236 Austria, 326 Montenegro), read from the body's links.self.
fixture_idcharacterGame UUID (fixture); the key of every game frame and of the fixture_detail routes.
season_idcharacterSeason UUID of the game.
competition_namecharacterName of the competition, in the site's language.
namecharacterFixture name; null on LNBP.
fixture_typecharacterKind of game as sent: REGULAR, PLAYOFF, ... (the set is open).
age_groupcharacterAge group of the competition, e.g. SENIOR.
statuscharacterStatus code of the game, e.g. CONFIRMED (final), as sent.
status_labelcharacterStatus of the game as the site words it in its own language (e.g. Termine, Final).
start_time_utcPOSIXctScheduled start, naive datetime in UTC (the API sends no offset).
start_time_localcharacterScheduled start in the venue's local time, as the API sends it (YYYY-MM-DDTHH:MM:SS, no offset; timezone gives the zone, which varies per row).
timezonecharacterIANA time zone of the venue (e.g. Europe/Paris, Mexico/General) that start_time_local is in.
venuecharacterName of the arena where the game is played.
venue_idcharacterVenue UUID; joins no other route.
attendanceintegerSpectators at the game; null when not reported.
external_idcharacterThe league's own match number (LNB: the lnb.fr number); null elsewhere.
updatedPOSIXctWhen the record was last updated, naive datetime (no offset; zone unverified).
live_data_availablelogicalTrue when live data feeds are enabled for the game.
live_video_availablelogicalTrue when a live video stream is attached.
disciplinecharacterDiscipline label of the game; null in every body seen.
seriescharacterPlayoff series the game belongs to as sent (JSON text when an object); null outside a series.
number_of_periodsintegerRegulation periods in the game (4).
period_lengthintegerLength of a regulation period, in minutes.
overtime_allowedlogicalTrue when the game may go to overtime.
overtime_lengthintegerLength of an overtime period, in minutes.
shot_clockintegerShot clock length, in seconds.
max_fouls_personalintegerPersonal fouls that disqualify a player.
fouls_before_bonusintegerTeam fouls in a period before the bonus applies.
maximum_players_on_courtintegerPlayers a team has on court at once.
maximum_roster_sizeintegerLargest roster a team may enter for the game.
home_entity_idcharacterTeam UUID of the home team.
home_codecharacterShort code of the home team (e.g. PAB).
home_namecharacterName of the home team.
home_scoreintegerPoints scored by the home team (the API sends a string; Int64 here).
home_result_statuscharacterResult status of the home team's score, e.g. CONFIRMED.
away_entity_idcharacterTeam UUID of the away team.
away_codecharacterShort code of the away team (e.g. PAB).
away_namecharacterName of the away team.
away_scoreintegerPoints scored by the away team (the API sends a string; Int64 here).
away_result_statuscharacterResult status of the away team's score, e.g. CONFIRMED.
home_captain_person_idcharacterPerson UUID of the home team's captain; null when the body names none.
away_captain_person_idcharacterPerson UUID of the away team's captain; null when the body names none.

Details

Unofficial. This is the public endpoint the Sportradar Atrium / Synergy "Connect" widget calls from every visitor's browser (keyless; the host has no robots.txt). The data is Sportradar's and the leagues'. The wrappers read it on the caller's behalf, one request at least 1 s after the last to the host, and it is not republished as release assets. Keep crawls small and incremental.

Sites and seasons. website_id picks the league site; one site carries many competitions. Seasons are END years (season = 2026): the site's own year is the START year on LNB and the calendar year elsewhere, and a year can hold several competitions, so pair season with competition_id (see atrium_seasons()) or pass season_id. atrium_end_year() maps a site's own year to that END year, and atrium_season_id() finds the season UUID.

Columns are configured per site: a statistic one site omits is NA. A key the documented columns do not list is appended with an inferred type. Player and team ids (UUIDs, character) are shared across sites; the player stat tables carry names only, so person_id there is decoded from the widget link beside each name.

Errors (classed conditions, all inheriting wehoop_error): wehoop_no_data when the site has nothing for the request (HTTP 404, no such season, an empty fixture list, a game with no play-by-play yet, or a fixture id the site does not serve: an unknown id or a game of another site, which the API answers alike with an empty fixture); wehoop_bad_request for HTTP 400 / 422 or an argument that cannot be mapped (an ambiguous END year, season with season_id); wehoop_asset_fetch for any other failed fetch, an error / stub body, or a body that belongs to another site, type, season, game, player or team than the one asked for.

Examples

# \donttest{
  try(atrium_fixture(website_id = 14, fixture_id = "0dc631bd-c34c-11f1-8d16-4d5a21afb79d"))
#> ── Atrium fixture from embed-api.eui.connect.sportradar.com ──── wehoop 3.1.0 ──
#> ℹ Data updated: 2026-10-22 02:33:43 UTC
#> # A tibble: 1 × 42
#>   website_id fixture_id  season_id competition_name name  fixture_type age_group
#>        <int> <chr>       <chr>     <chr>            <chr> <chr>        <chr>    
#> 1         14 0dc631bd-c… cc7d79f3… LIGA CALIENTE.M… NA    PLAYOFF      SENIOR   
#> # ℹ 35 more variables: status <chr>, status_label <chr>, start_time_utc <dttm>,
#> #   start_time_local <chr>, timezone <chr>, venue <chr>, venue_id <chr>,
#> #   attendance <int>, external_id <chr>, updated <dttm>,
#> #   live_data_available <lgl>, live_video_available <lgl>, discipline <chr>,
#> #   series <chr>, number_of_periods <int>, period_length <int>,
#> #   overtime_allowed <lgl>, overtime_length <int>, shot_clock <int>,
#> #   max_fouls_personal <int>, fouls_before_bonus <int>, …
# }