Skip to content

Lineups & Box Scores

Pregame matchup

Composite of game + lineup (baseball) or game + rotation (basketball). Soccer leagues return 404 endpoint_not_for_sport.

Requires the stats entitlement (a paid plan). See Responses & Errors for the success envelope and availability rules.

GEThttps://api.sportquanta.com/v1/{league}/games/{id}/matchup
GETGet the pre-game matchup
GET/v1/{league}/games/{id}/matchup

Get the pre-game matchup

Composite of game + lineup (baseball) or game + rotation (basketball). Soccer leagues return 404 endpoint_not_for_sport.

Requires the stats entitlement (a paid plan). See Responses & Errors for the success envelope and availability rules.

Authorization
Path
Query
Get the pre-game matchupcURL
200Example

Reference context: WKBL.

Overview · Response conventions

Authorizations

Authorizationstringheaderrequired

Send a workspace API token in the Authorization: Bearer <token> header.

Path Parameters

leagueenum<string>default:wkblrequired

League for this reference section: wkbl.

Available options: wkbl

idstringrequired

Query Parameters

provenancebooleandefault:false

Opt in to per-field provenance on supported single game, match, team, player, and venue reads. Lists and composites accept the flag but generally omit provenance. It is returned under _meta.provenance only when source metadata exists.

Response

application/json

Game + lineup / rotation composite.

dataobjectrequired
data.gameobject | nullrequired
data.game.idstring
data.game.canonical_idstring
data.game.external_idsobject

Map from the exact stored source/namespace key to that provider's identifier for this entity. Keys vary by entity and league. Values are strings, even when the provider ID looks numeric. Use the exact key and value for external-ID lookups; these are distinct from the canonical ID. SOURCE_KEY below is an illustrative placeholder.

data.game.external_ids.{key}string
data.game.created_atstring<date-time>

Canonical document creation timestamp, when present; not the scheduled start or event time.

data.game.updated_atstring<date-time>

Canonical document update timestamp, when present. It is not a guarantee that every field was refreshed at this time; field provenance carries individual ingestion times.

data.game.seasonstring
data.game.statusstring
data.game.home_team_idstring
data.game.away_team_idstring
data.game.game_typestring
data.game.cup_stageenum<string>

NBA only. The NBA Cup round, from the note ESPN's scoreboard puts on every cup game (espn:cup-calendar); the final is also known from its own game type (in-season-tournament). Omitted for a game outside the cup. Group and knockout games are regular-season games, so their game_type stays regular.

Available options: group, quarterfinal, semifinal, final

data.game.cup_groupstring

NBA only. The NBA Cup group as the NBA's season schedule writes it (e.g. East Group A); omitted for knockout and non-cup games, and when the schedule names no group.

data.game.schedule_datestring
data.game.scheduled_start_utcstring
data.game.venue_idstring
data.game.attendanceinteger
data.game.duration_minutesinteger
data.game.linescoreobject
data.game.linescore.home_scoreinteger
data.game.linescore.away_scoreinteger
data.game.linescore.periodinteger
data.game.linescore.game_clockstring
data.game.linescore.periodsobject[]
data.game.linescore.periods.periodintegerrequired
data.game.linescore.periods.home_scoreinteger
data.game.linescore.periods.away_scoreinteger
data.game.home_scoring_breakdownobject
data.game.home_scoring_breakdown.points_in_paintobjectrequired
data.game.home_scoring_breakdown.points_in_paint.valueinteger | nullrequired
data.game.home_scoring_breakdown.points_in_paint.availabilitystringrequired
data.game.home_scoring_breakdown.points_in_paint.calculation_modestring | nullrequired
data.game.home_scoring_breakdown.points_in_paint.sourcestring | nullrequired
data.game.home_scoring_breakdown.fast_break_pointsobjectrequired
data.game.home_scoring_breakdown.fast_break_points.valueinteger | nullrequired
data.game.home_scoring_breakdown.fast_break_points.availabilitystringrequired
data.game.home_scoring_breakdown.fast_break_points.calculation_modestring | nullrequired
data.game.home_scoring_breakdown.fast_break_points.sourcestring | nullrequired
data.game.home_scoring_breakdown.second_chance_pointsobjectrequired
data.game.home_scoring_breakdown.second_chance_points.valueinteger | nullrequired
data.game.home_scoring_breakdown.second_chance_points.availabilitystringrequired
data.game.home_scoring_breakdown.second_chance_points.calculation_modestring | nullrequired
data.game.home_scoring_breakdown.second_chance_points.sourcestring | nullrequired
data.game.home_scoring_breakdown.bench_pointsobjectrequired
data.game.home_scoring_breakdown.bench_points.valueinteger | nullrequired
data.game.home_scoring_breakdown.bench_points.availabilitystringrequired
data.game.home_scoring_breakdown.bench_points.calculation_modestring | nullrequired
data.game.home_scoring_breakdown.bench_points.sourcestring | nullrequired
data.game.away_scoring_breakdownobject
data.game.away_scoring_breakdown.points_in_paintobjectrequired
data.game.away_scoring_breakdown.points_in_paint.valueinteger | nullrequired
data.game.away_scoring_breakdown.points_in_paint.availabilitystringrequired
data.game.away_scoring_breakdown.points_in_paint.calculation_modestring | nullrequired
data.game.away_scoring_breakdown.points_in_paint.sourcestring | nullrequired
data.game.away_scoring_breakdown.fast_break_pointsobjectrequired
data.game.away_scoring_breakdown.fast_break_points.valueinteger | nullrequired
data.game.away_scoring_breakdown.fast_break_points.availabilitystringrequired
data.game.away_scoring_breakdown.fast_break_points.calculation_modestring | nullrequired
data.game.away_scoring_breakdown.fast_break_points.sourcestring | nullrequired
data.game.away_scoring_breakdown.second_chance_pointsobjectrequired
data.game.away_scoring_breakdown.second_chance_points.valueinteger | nullrequired
data.game.away_scoring_breakdown.second_chance_points.availabilitystringrequired
data.game.away_scoring_breakdown.second_chance_points.calculation_modestring | nullrequired
data.game.away_scoring_breakdown.second_chance_points.sourcestring | nullrequired
data.game.away_scoring_breakdown.bench_pointsobjectrequired
data.game.away_scoring_breakdown.bench_points.valueinteger | nullrequired
data.game.away_scoring_breakdown.bench_points.availabilitystringrequired
data.game.away_scoring_breakdown.bench_points.calculation_modestring | nullrequired
data.game.away_scoring_breakdown.bench_points.sourcestring | nullrequired
data.game.liveobject
data.game.live.status_codestringrequired
data.game.live.status_labelstringrequired
data.game.live.period_labelstring
data.game.live.period_ordinalintegerrequired
data.game.live.scoreobject
data.game.live.score.homeintegerrequired
data.game.live.score.awayintegerrequired
data.game.live.clockobject
data.game.live.clock.minuteinteger
data.game.live.clock.secondinteger
data.game.live.clock.displaystring
data.game.live.clock.is_runningbooleanrequired
data.game.live.state_revisioninteger
data.game.live.updated_atstring<date-time>required
data.rotationobject
data.rotation.idstring
data.rotation.canonical_idstring
data.rotation.external_idsobject

Map from the exact stored source/namespace key to that provider's identifier for this entity. Keys vary by entity and league. Values are strings, even when the provider ID looks numeric. Use the exact key and value for external-ID lookups; these are distinct from the canonical ID. SOURCE_KEY below is an illustrative placeholder.

data.rotation.external_ids.{key}string
data.rotation.created_atstring<date-time>

Canonical document creation timestamp, when present; not the scheduled start or event time.

data.rotation.updated_atstring<date-time>

Canonical document update timestamp, when present. It is not a guarantee that every field was refreshed at this time; field provenance carries individual ingestion times.

data.rotation.game_idstringrequired
data.rotation.homeobject
data.rotation.home.teamIdstring

Canonical team ID for this side.

data.rotation.home.playersobject[]

Player rotation/box-score entries, with starter flags and source-reported minutes.

data.rotation.home.players.playerIdstring | null
data.rotation.home.players.positionstring | null
data.rotation.home.players.starterboolean

Whether this source entry identifies the player as a starter.

data.rotation.home.players.minutesstring | null

Source box-score playing-time string, when available. The reconciler accepts M:SS, ISO-8601 PT durations, or numeric minutes; use reconciliation.boxScoreSeconds for parsed seconds.

data.rotation.home.substitutionsobject[]

Explicit substitution events with player-in/player-out IDs and remaining period clock, when available.

data.rotation.home.substitutions.periodnumber | null
data.rotation.home.substitutions.clockstring | null
data.rotation.home.substitutions.teamIdstring | null
data.rotation.home.substitutions.playerInIdstring | null
data.rotation.home.substitutions.playerOutIdstring | null
data.rotation.home.substitutions.playerInEventNumnumber | null
data.rotation.home.substitutions.playerOutEventNumnumber | null
data.rotation.home.substitutions.sourcestring | null
data.rotation.home.periodLineupsobject[]

Player IDs used to establish the lineup for a period, with the source/method of that lineup.

data.rotation.home.periodLineups.periodnumber
data.rotation.home.periodLineups.playerIdsstring[]
data.rotation.home.periodLineups.sourcestring
data.rotation.home.stintsobject[]

Reconstructed on-court intervals per player and period. Read availability, issues, and reconciliation before treating them as complete.

data.rotation.home.stints.playerIdstring
data.rotation.home.stints.periodnumber
data.rotation.home.stints.startClockstring

Remaining period clock at stint start, formatted M:SS (counts down).

data.rotation.home.stints.endClockstring

Remaining period clock at stint end, formatted M:SS (counts down).

data.rotation.home.stints.startEventNumnumber | null

Source event number at the interval start, or null when the boundary has no event number.

data.rotation.home.stints.endEventNumnumber | null

Source event number at the interval end, or null when the boundary has no event number.

data.rotation.home.stints.durationSecondsnumber

Nonnegative seconds in this on-court interval: start-clock seconds minus end-clock seconds.

data.rotation.home.stints.sourcestring
data.rotation.home.reconciliationobject[]

Per-player comparison of reconstructed stint seconds against parsed box-score minutes.

data.rotation.home.reconciliation.playerIdstring
data.rotation.home.reconciliation.boxScoreSecondsnumber | null

Box-score minutes parsed into seconds; null when unavailable or unparseable.

data.rotation.home.reconciliation.stintSecondsnumber

Total reconstructed on-court seconds across this player's stints.

data.rotation.home.reconciliation.deltaSecondsnumber | null

stintSeconds minus boxScoreSeconds; positive means the reconstructed timeline assigns more time. Null when box-score minutes are unavailable.

data.rotation.home.reconciliation.withinToleranceboolean | null

Whether absolute deltaSeconds is within provenance.minuteToleranceSeconds. Null when box-score minutes cannot be compared.

data.rotation.home.availabilityenum<string>

Available options: available, partial, provider_unavailable

data.rotation.home.issuesstring[]

Machine-readable explanations of incomplete or inconsistent rotation reconstruction, when present.

data.rotation.home.provenanceobject
data.rotation.home.provenance.sourcestring
data.rotation.home.provenance.method"starting_lineup_and_explicit_substitutions"

Reconstruction uses starting lineups and explicit substitution events.

data.rotation.home.provenance.minuteToleranceSecondsnumber

Maximum allowed absolute difference between reconstructed and box-score seconds for a player.

data.rotation.home.confirmedboolean

Side-level rotation/lineup confirmation. Derived timelines set this false when reconstruction issues remain; inspect availability and reconciliation as well.

data.rotation.awayobject
data.rotation.away.teamIdstring

Canonical team ID for this side.

data.rotation.away.playersobject[]

Player rotation/box-score entries, with starter flags and source-reported minutes.

data.rotation.away.players.playerIdstring | null
data.rotation.away.players.positionstring | null
data.rotation.away.players.starterboolean

Whether this source entry identifies the player as a starter.

data.rotation.away.players.minutesstring | null

Source box-score playing-time string, when available. The reconciler accepts M:SS, ISO-8601 PT durations, or numeric minutes; use reconciliation.boxScoreSeconds for parsed seconds.

data.rotation.away.substitutionsobject[]

Explicit substitution events with player-in/player-out IDs and remaining period clock, when available.

data.rotation.away.substitutions.periodnumber | null
data.rotation.away.substitutions.clockstring | null
data.rotation.away.substitutions.teamIdstring | null
data.rotation.away.substitutions.playerInIdstring | null
data.rotation.away.substitutions.playerOutIdstring | null
data.rotation.away.substitutions.playerInEventNumnumber | null
data.rotation.away.substitutions.playerOutEventNumnumber | null
data.rotation.away.substitutions.sourcestring | null
data.rotation.away.periodLineupsobject[]

Player IDs used to establish the lineup for a period, with the source/method of that lineup.

data.rotation.away.periodLineups.periodnumber
data.rotation.away.periodLineups.playerIdsstring[]
data.rotation.away.periodLineups.sourcestring
data.rotation.away.stintsobject[]

Reconstructed on-court intervals per player and period. Read availability, issues, and reconciliation before treating them as complete.

data.rotation.away.stints.playerIdstring
data.rotation.away.stints.periodnumber
data.rotation.away.stints.startClockstring

Remaining period clock at stint start, formatted M:SS (counts down).

data.rotation.away.stints.endClockstring

Remaining period clock at stint end, formatted M:SS (counts down).

data.rotation.away.stints.startEventNumnumber | null

Source event number at the interval start, or null when the boundary has no event number.

data.rotation.away.stints.endEventNumnumber | null

Source event number at the interval end, or null when the boundary has no event number.

data.rotation.away.stints.durationSecondsnumber

Nonnegative seconds in this on-court interval: start-clock seconds minus end-clock seconds.

data.rotation.away.stints.sourcestring
data.rotation.away.reconciliationobject[]

Per-player comparison of reconstructed stint seconds against parsed box-score minutes.

data.rotation.away.reconciliation.playerIdstring
data.rotation.away.reconciliation.boxScoreSecondsnumber | null

Box-score minutes parsed into seconds; null when unavailable or unparseable.

data.rotation.away.reconciliation.stintSecondsnumber

Total reconstructed on-court seconds across this player's stints.

data.rotation.away.reconciliation.deltaSecondsnumber | null

stintSeconds minus boxScoreSeconds; positive means the reconstructed timeline assigns more time. Null when box-score minutes are unavailable.

data.rotation.away.reconciliation.withinToleranceboolean | null

Whether absolute deltaSeconds is within provenance.minuteToleranceSeconds. Null when box-score minutes cannot be compared.

data.rotation.away.availabilityenum<string>

Available options: available, partial, provider_unavailable

data.rotation.away.issuesstring[]

Machine-readable explanations of incomplete or inconsistent rotation reconstruction, when present.

data.rotation.away.provenanceobject
data.rotation.away.provenance.sourcestring
data.rotation.away.provenance.method"starting_lineup_and_explicit_substitutions"

Reconstruction uses starting lineups and explicit substitution events.

data.rotation.away.provenance.minuteToleranceSecondsnumber

Maximum allowed absolute difference between reconstructed and box-score seconds for a player.

data.rotation.away.confirmedboolean

Side-level rotation/lineup confirmation. Derived timelines set this false when reconstruction issues remain; inspect availability and reconciliation as well.

_metaobject

Response request/cache metadata. Optional evidence fields are specific to this handler; cache TTL does not measure source-data freshness.

_meta.request_idstring
_meta.served_fromenum<string>

Available options: live, cache

_meta.cache_ttl_secondsinteger

Response cache TTL; independent of source freshness. Omitted when zero.