---
title: "Per-mode averages, recent form, and sample size for one player"
method: GET
path: "/api/v1/context/player"
tags: ["Props"]
---

# Per-mode averages, recent form, and sample size for one player

`GET /api/v1/context/player`

## Request

- Base URL: `https://api.flashodds.live`
- URL: `https://api.flashodds.live/api/v1/context/player`
- Auth: HTTP bearer

Season context for a player from a sport Flash pack: per-market baselines, recent form, and sport-native splits (CoD also carries per-mode stats + a map log). Available for sports with a registered Flash pack (currently registered provider-backed sports; live depth varies by season and posted markets). Other sports and unmatched players return an honest empty context, never fabricated data. Basic on free/starter (season baselines + recent form); Pro adds the recent map/game log. No sport gating.

## Query parameters

- `name` string, required: Player gamertag. Exact match (case-insensitive), no fuzzy guessing.
- `sport` string: Sports whose registered provider has context (see /sports contextCapability) return it; others an honest empty context, not fake data.

## Response `200`

Player context

- PlayerContext
  - `sport` string, required
  - `player` string, required
  - `found` boolean, required: False when the player isn't in the sport's Flash pack (or the sport has no pack yet).
  - `gamertag` string, nullable, required: Canonical cased gamertag from the Flashpoint pack (vs. the raw query casing).
  - `team` string, nullable, required
  - `role` string, nullable, required
  - `modes` object, nullable, required
    - `hardpoint` PlayerContextMode, nullable, required
      - `kd` number, required
      - `kills` integer, required
      - `deaths` integer, required
      - `games` integer, required
    - `snd` PlayerContextMode, nullable, required
      - `kd` number, required
      - `kills` integer, required
      - `deaths` integer, required
      - `games` integer, required
    - `overload` PlayerContextMode, nullable, required
      - `kd` number, required
      - `kills` integer, required
      - `deaths` integer, required
      - `games` integer, required
  - `markets` object, nullable, required
  - `recentMaps` RecentMapRow[], required: Most recent per-map box scores, newest first. Empty (not null) when unavailable.
    - `date` string, required
    - `mapName` string, required
    - `mode` string, required
    - `opponent` string, nullable, required
    - `won` boolean, required
    - `kills` integer, required
    - `deaths` integer, required
  - `advanced` object, nullable, required: Curated advanced CoD stats (Player Stats v2). Null when the sport has no advanced pack or the player is not in it. Deliberately excludes BP Rating and its mode variants (proprietary, not ours to republish) and contested hill time (verified dead upstream, every player reads 0).
    - `generatedAt` string, required: When the advanced-stats pack was built. Refreshes on a slower cadence than the prop pack -- always compare against this, not the request time.
    - `openingDuelWinPct` object, nullable, required
      - `value` number, required
      - `sampleN` integer, required
      - `percentile` integer
      - `rolePercentile` integer
    - `cleanKillRate` object, nullable, required
      - `value` number, required
      - `sampleN` integer, required
      - `percentile` integer
      - `rolePercentile` integer
    - `damagePerKill` object, nullable, required
      - `value` number, required
      - `sampleN` integer, required
      - `percentile` integer
      - `rolePercentile` integer
    - `damagePerMin` object, nullable, required
      - `value` number, required
      - `sampleN` integer, required
      - `percentile` integer
      - `rolePercentile` integer
    - `hillTimePerMap` object, nullable, required: Hardpoint only.
      - `value` number, required
      - `sampleN` integer, required
      - `percentile` integer
      - `rolePercentile` integer
    - `clutchWinsTotal` object, nullable, required
      - `value` integer, required: Total 1v1..1v4 clutch wins (a count, not a rate -- attempts are not in the box score).
      - `sampleN` integer, required
      - `breakdown` object, required: Wins by situation, e.g. {"1":3,"2":6,"3":0,"4":0}.
    - `consistencyIndex` object, nullable, required: Inverse coefficient of variation on map rating. Higher = steadier performance.
      - `value` number, required
      - `sampleN` integer, required
      - `percentile` integer
      - `rolePercentile` integer
    - `risingForm` object, nullable, required: Season-long recent-half vs early-half performance trend.
      - `value` number, required
      - `sampleN` integer, required
      - `percentile` integer
      - `rolePercentile` integer
  - `gated` boolean, required: True when data was withheld for your tier.
  - `preview` boolean, required: True when this is a reduced/preview view.
  - `requiredTier` 'starter' | 'pro' | 'enterprise' | 'null', nullable, required: Lowest tier that unlocks the first locked field. Null when nothing is gated.
  - `lockedFields` string[], required: Dot-paths of the fields withheld for your tier.
  - `upgradeMessage` string, nullable, required: Human upgrade prompt, or null when nothing is gated.

## Other responses

- `400`: Invalid request
- `401`: Missing or invalid API key
- `429`: Rate limit or daily quota exceeded

---

[API](https://skmtc.dev/flashodds/apis/flash-props-api.md) · [All operations](https://skmtc.dev/flashodds/apis/flash-props-api/llms.txt) · [OpenAPI document](https://skmtc.dev/flashodds/apis/flash-props-api/revisions/044161ffbfd8?raw)
