Season Stats & Analytics
Player season stats
Requires stats entitlement. Separate read model; private, no-store. Requests to existing routes without include=extended retain their existing contracts.
https://api.sportquanta.com/v1/nba/players/{id}/season-statsReference context: NBA.
Overview · Response conventions
Authorizations
AuthorizationstringheaderrequiredSend a workspace API token in the Authorization: Bearer <token> header.
Path Parameters
idstringrequiredQuery Parameters
seasonintegerrequiredSeason start year. Omit or use zero for the newest stored extension. Unsupported seasons return unavailable.
Required range: 1946 <= x, x <= 2100
game_typeenum<string>default:regularExtended view only. Exact stored game scope; no cross-scope aggregation.
Available options: regular, playoffs, preseason, play-in, all-star, in-season-tournament
Response
application/jsonAdditive basketball data; unavailable values remain null.
Query validation failed. Depending on the handler, invalid_query_parameter is returned with HTTP 400 or 422. Pre-read validation is non-billable.
Missing or invalid bearer API token.
Access is forbidden: the token lacks api.read scope, the plan lacks an endpoint/bookmaker capability, or configured billing access is inactive. Inspect error.code and details.feature when present.
The league is unsupported, the endpoint is not available for that sport, or the requested data has not been ingested. Inspect error.code.
Token validation or an internal handler failed. Token-store failures use api_token_lookup_failed; unsupported internal sport dispatch can use data_layer_unavailable.
The data layer (Mongo / ClickHouse / Redis cache) is temporarily unreachable. The server attempted the lookup; it failed. Retry with backoff. Per the spec's order of evaluation, this DOES consume monthly quota — the request reached step 6.
dataobjectAggregates observed finalized game counts by actual appearances. No live games. Partial totals describe observed coverage; season highs/double/triple-double counts are null until all stored final schedule games and identities are covered. Ratios use totals, not averages of percentages. Scopes remain separate.
data.player_idstringrequireddata.seasonintegerrequireddata.game_typestringrequireddata.games_playedintegerrequireddata.games_startedinteger | nullrequiredNull if any observed appearance lacks a starter flag.
data.totalsobjectrequiredDictionary keyed by statistic name. Values are counts, per-game means or fractional efficiencies according to the containing field; null means unavailable.
data.totals.{key}number | nulldata.per_gameobjectrequiredDictionary keyed by statistic name. Values are counts, per-game means or fractional efficiencies according to the containing field; null means unavailable.
data.per_game.{key}number | nulldata.efficiencyobjectrequiredDictionary keyed by statistic name. Values are counts, per-game means or fractional efficiencies according to the containing field; null means unavailable.
data.efficiency.{key}number | nulldata.season_high_pointsnumber | nullrequireddata.double_doublesinteger | nullrequireddata.triple_doublesinteger | nullrequireddata.team_splitsobject[]requireddata.team_splits.team_idstringdata.team_splits.games_playedintegerdata.team_splits.totalsobjectDictionary keyed by statistic name. Values are counts, per-game means or fractional efficiencies according to the containing field; null means unavailable.
data.team_splits.totals.{key}number | nulldata.coverageobjectrequireddata.coverage.expected_final_gamesintegerrequireddata.coverage.observed_final_gamesintegerrequireddata.coverage.completebooleanrequiredComplete against the stored final schedule and identity/participation coverage, not proof the upstream schedule is exhaustive or all metrics are present.
data.coverage.as_ofstring | nullrequireddata.coverage.includes_live_gamesbooleanrequireddata.coverage.includes_todaybooleanrequireddata.coverage.date_basisstringrequireddata.coverage.missing_player_identitiesintegerrequireddata.coverage.unknown_participationintegerrequireddata.coverage.missing_stat_fieldsstring[]requireddata.calculation_methodstringrequireddata.percentage_scaleenum<string>requiredAvailable options: fraction
data.true_shooting_fta_coefficient0.44required_metaobjectResponse 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_secondsintegerResponse cache TTL; independent of source freshness. Omitted when zero.
errorobjectrequirederror.codestringrequiredStable machine-readable error code.
error.messagestringrequiredUser-facing error summary.
error.detailsanyOptional error details.