Visuals

A player's shot chart and shot zones (NBA) or percentile profile (CoD)

Real shot locations (1 ft court cells, espn-halfcourt-v1) and deterministic zone splits for one player and season, with provenance and a status per capability (available, insufficient_sample, offseason, source_stale, source_unavailable, rights_blocked). A miss has its 2/3 value derived from location (the source records 0); the count is in shots.summary.valueFromGeometry. Attribution in provenance.attribution must be shown with any display. For cod, percentileProfile lists league and role percentiles, each with the named population it ranks against; a percentile that cannot be reproduced over a named pool is omitted.

get/api/v1/visuals/player

Request

  • Base URL: https://api.flashodds.live
  • URL: https://api.flashodds.live/api/v1/visuals/player
  • Auth: HTTP bearer

Query parameters

sportstring required

Sport id. nba has spatial visuals; cod has a percentile profile; other sports answer with no capability.

Example:nba
slugstring required

Canonical player slug (the same slug /archive/player uses).

Example:kevin-durant
seasoninteger

Season END year (2026 = 2025-26). Default: the newest published season.

Example:2026
lastNinteger

The player's last N games in the filtered view.

Example:10
homeAway'home' | 'away'
opponentstring

Opponent team slug.

Example:boston-celtics
period'1' | '2' | '3' | '4' | 'ot'

Quarter 1-4, or ot for any overtime.

shotValue'2' | '3'
result'made' | 'missed'
seasonType'regular' | 'postseason' | 'all'

Default regular. postseason includes the play-in.

Response

Player visuals

foundboolean required
sportstring required
seasonsinteger[] required

Example response

{
  "percentileProfile": [
    {
      "metric": "cleanKillRate",
      "label": "Clean kill rate",
      "population": {
        "label": "CDL 2026 players",
        "size": 47
      }
    }
  ]
}

Changes

No recorded changes to this operation across all 1 revision of this API.