Season Stats & Analytics
Referee stats
NBA-only. In-house referee stats (derive:referee-stats): for every
official who worked a final regular-season game, the combined points,
free-throw attempts and personal fouls per game of the games they
officiated, against the league average of every final game that
season, plus the same referee's prior-season line (priorSeason,
null when they did not work it). Identity is the NBA CDN personId
from the parity officials block, so rows exist only for seasons the
basketball parity enrichment has processed (see
docs/parity-backfills.md). Optional name is a case-insensitive
substring filter. Sorted by games worked.
Requires the stats entitlement (a paid plan). See Responses & Errors for the success envelope and availability rules.
https://api.sportquanta.com/v1/nba/refereesReference context: NBA.
Overview · Response conventions
Authorizations
AuthorizationstringheaderrequiredSend a workspace API token in the Authorization: Bearer <token> header.
Query Parameters
seasonintegerrequiredSeason start year (2025 for the 2025-26 season).
Required range: 1946 <= x, x <= 2100
namestringlimitintegerdefault:200Required range: 1 <= x, x <= 2000
provenancebooleandefault:falseOpt 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/jsonReferee rows for the season.
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.
Hourly rate ceiling or monthly quota exceeded. The error code disambiguates
which limit was hit. X-RateLimit-* and X-Requests-*-Month response headers
carry the current state of both counters.
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.
The configured billing provider could not verify API access. The request is refused before the data handler and does not consume monthly quota.
dataobjectrequireddata.seasonintegerrequireddata.itemsobject[]requireddata.items.canonicalIdstringdata.items.refereeIdstringdata.items.refereeNamestring | nulldata.items.seasonnumberdata.items.gamesnumberdata.items.pointsPerGamenumber | nulldata.items.freeThrowAttemptsPerGamenumber | nulldata.items.foulsPerGamenumber | nulldata.items.leagueGamesnumberdata.items.leaguePointsPerGamenumber | nulldata.items.leagueFreeThrowAttemptsPerGamenumber | nulldata.items.leagueFoulsPerGamenumber | nulldata.items.pointsVsLeaguenumber | nulldata.items.freeThrowAttemptsVsLeaguenumber | nulldata.items.foulsVsLeaguenumber | nulldata.items.splitGamesnumberGames with the home club known, which the five splits below average over.
data.items.homeWinPctnumber | nullThe home club's win rate in those games, 0–100.
data.items.homeMarginPerGamenumber | nullThe home club's average margin (home − away points).
data.items.awayMinusHomeFoulsPerGamenumber | nullAway personal fouls − home personal fouls, per game.
data.items.awayFoulSharenumber | nullThe away club's share of all personal fouls, 0–100.
data.items.homeFoulSharenumber | nullThe home club's share of all personal fouls, 0–100.
data.items.priorSeasonobject | nulldata.items.priorSeason.seasonnumberdata.items.priorSeason.gamesnumberdata.items.priorSeason.pointsPerGamenumber | nulldata.items.priorSeason.freeThrowAttemptsPerGamenumber | nulldata.items.priorSeason.foulsPerGamenumber | nulldata.items.priorSeason.pointsVsLeaguenumber | nulldata.items.priorSeason.freeThrowAttemptsVsLeaguenumber | nulldata.items.priorSeason.foulsVsLeaguenumber | nulldata.items.priorSeason.splitGamesnumberGames with the home club known, which the five splits below average over.
data.items.priorSeason.homeWinPctnumber | nullThe home club's win rate in those games, 0–100.
data.items.priorSeason.homeMarginPerGamenumber | nullThe home club's average margin (home − away points).
data.items.priorSeason.awayMinusHomeFoulsPerGamenumber | nullAway personal fouls − home personal fouls, per game.
data.items.priorSeason.awayFoulSharenumber | nullThe away club's share of all personal fouls, 0–100.
data.items.priorSeason.homeFoulSharenumber | nullThe home club's share of all personal fouls, 0–100.
_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.