Season Stats & Analytics
Team shot dashboard
NBA-only. teamdashptshots, per game: the general (catch-and-shoot
/ pull-up / less than 10 ft / other), shotClock, dribbles,
closestDefender, closestDefender10ftPlus and touchTime bucket
tables, each row with FGA frequency, FGM / FGA / FG%, eFG% and the
2PT / 3PT lines. A dimension upstream did not return is null. Written
daily by statsapi:shot-dashboards.
Requires the stats entitlement (a paid plan). See Responses & Errors for the success envelope and availability rules.
https://api.sportquanta.com/v1/nba/teams/{id}/shot-dashboardReference context: NBA.
Overview · Response conventions
Authorizations
AuthorizationstringheaderrequiredSend a workspace API token in the Authorization: Bearer <token> header.
Path Parameters
idstringrequiredQuery Parameters
seasonintegerrequiredSeason start year (2025 for the 2025-26 season).
Required range: 1946 <= x, x <= 2100
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/jsonThe stored (subject, season) row.
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 id is well-formed but no document has been ingested for it yet.
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.generalobject[] | nulldata.general.bucketstringUpstream bucket label, e.g. "0-2 Feet - Very Tight", "22-18", "0 Dribbles".
data.general.fgaFrequencynumber | nulldata.general.fieldGoalsMadenumber | nulldata.general.fieldGoalsAttemptednumber | nulldata.general.fieldGoalPctnumber | nulldata.general.effectiveFieldGoalPctnumber | nulldata.general.fg2aFrequencynumber | nulldata.general.twoPointersMadenumber | nulldata.general.twoPointersAttemptednumber | nulldata.general.twoPointPctnumber | nulldata.general.fg3aFrequencynumber | nulldata.general.threePointersMadenumber | nulldata.general.threePointersAttemptednumber | nulldata.general.threePointPctnumber | nulldata.shotClockobject[] | nulldata.shotClock.bucketstringUpstream bucket label, e.g. "0-2 Feet - Very Tight", "22-18", "0 Dribbles".
data.shotClock.fgaFrequencynumber | nulldata.shotClock.fieldGoalsMadenumber | nulldata.shotClock.fieldGoalsAttemptednumber | nulldata.shotClock.fieldGoalPctnumber | nulldata.shotClock.effectiveFieldGoalPctnumber | nulldata.shotClock.fg2aFrequencynumber | nulldata.shotClock.twoPointersMadenumber | nulldata.shotClock.twoPointersAttemptednumber | nulldata.shotClock.twoPointPctnumber | nulldata.shotClock.fg3aFrequencynumber | nulldata.shotClock.threePointersMadenumber | nulldata.shotClock.threePointersAttemptednumber | nulldata.shotClock.threePointPctnumber | nulldata.dribblesobject[] | nulldata.dribbles.bucketstringUpstream bucket label, e.g. "0-2 Feet - Very Tight", "22-18", "0 Dribbles".
data.dribbles.fgaFrequencynumber | nulldata.dribbles.fieldGoalsMadenumber | nulldata.dribbles.fieldGoalsAttemptednumber | nulldata.dribbles.fieldGoalPctnumber | nulldata.dribbles.effectiveFieldGoalPctnumber | nulldata.dribbles.fg2aFrequencynumber | nulldata.dribbles.twoPointersMadenumber | nulldata.dribbles.twoPointersAttemptednumber | nulldata.dribbles.twoPointPctnumber | nulldata.dribbles.fg3aFrequencynumber | nulldata.dribbles.threePointersMadenumber | nulldata.dribbles.threePointersAttemptednumber | nulldata.dribbles.threePointPctnumber | nulldata.closestDefenderobject[] | nulldata.closestDefender.bucketstringUpstream bucket label, e.g. "0-2 Feet - Very Tight", "22-18", "0 Dribbles".
data.closestDefender.fgaFrequencynumber | nulldata.closestDefender.fieldGoalsMadenumber | nulldata.closestDefender.fieldGoalsAttemptednumber | nulldata.closestDefender.fieldGoalPctnumber | nulldata.closestDefender.effectiveFieldGoalPctnumber | nulldata.closestDefender.fg2aFrequencynumber | nulldata.closestDefender.twoPointersMadenumber | nulldata.closestDefender.twoPointersAttemptednumber | nulldata.closestDefender.twoPointPctnumber | nulldata.closestDefender.fg3aFrequencynumber | nulldata.closestDefender.threePointersMadenumber | nulldata.closestDefender.threePointersAttemptednumber | nulldata.closestDefender.threePointPctnumber | nulldata.closestDefender10ftPlusobject[] | nulldata.closestDefender10ftPlus.bucketstringUpstream bucket label, e.g. "0-2 Feet - Very Tight", "22-18", "0 Dribbles".
data.closestDefender10ftPlus.fgaFrequencynumber | nulldata.closestDefender10ftPlus.fieldGoalsMadenumber | nulldata.closestDefender10ftPlus.fieldGoalsAttemptednumber | nulldata.closestDefender10ftPlus.fieldGoalPctnumber | nulldata.closestDefender10ftPlus.effectiveFieldGoalPctnumber | nulldata.closestDefender10ftPlus.fg2aFrequencynumber | nulldata.closestDefender10ftPlus.twoPointersMadenumber | nulldata.closestDefender10ftPlus.twoPointersAttemptednumber | nulldata.closestDefender10ftPlus.twoPointPctnumber | nulldata.closestDefender10ftPlus.fg3aFrequencynumber | nulldata.closestDefender10ftPlus.threePointersMadenumber | nulldata.closestDefender10ftPlus.threePointersAttemptednumber | nulldata.closestDefender10ftPlus.threePointPctnumber | nulldata.touchTimeobject[] | nulldata.touchTime.bucketstringUpstream bucket label, e.g. "0-2 Feet - Very Tight", "22-18", "0 Dribbles".
data.touchTime.fgaFrequencynumber | nulldata.touchTime.fieldGoalsMadenumber | nulldata.touchTime.fieldGoalsAttemptednumber | nulldata.touchTime.fieldGoalPctnumber | nulldata.touchTime.effectiveFieldGoalPctnumber | nulldata.touchTime.fg2aFrequencynumber | nulldata.touchTime.twoPointersMadenumber | nulldata.touchTime.twoPointersAttemptednumber | nulldata.touchTime.twoPointPctnumber | nulldata.touchTime.fg3aFrequencynumber | nulldata.touchTime.threePointersMadenumber | nulldata.touchTime.threePointersAttemptednumber | nulldata.touchTime.threePointPctnumber | nulldata.canonicalIdstringdata.teamIdstring | nulldata.seasonnumberdata.gamesPlayednumber | null_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.