---
title: "Get Nfl Watch"
method: GET
path: "/api/grading/nfl-watch"
tags: ["grading"]
---

# Get Nfl Watch

`GET /api/grading/nfl-watch`

## Request

- Base URL: `https://api.fairline.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.fairline.io/api/grading/nfl-watch`
- Auth: HTTP bearer

The NFL launch watch: the model against the de-vigged close, per cell.

Cumulative from the first NFL bet of the season through ``through``, never a
rolling window, because a 7-day window on NFL holds one week of games and
reads as noise. The primary number is ``brier_t``, the paired Brier of the
model against the de-vigged close in standard errors, positive meaning the
model scored worse. The return carries a 90% interval so the reader sees how
little it can say at these sample sizes.

Closing-line value is deliberately absent. It compares the price a play was
struck at against the closing price, so it measures price capture and says
nothing about whether the model picks winners.

While ``core.value_gating.NFL_VALUE_ENABLED`` is False the six game-market
cells record no bets at all, so every ``source='captured'`` row reads n=0.
The plays those cells would have flagged come back as ``source='suppressed'``
rows, scored the same way off the no-vig anchors ``suppressed_value_plays``
has carried since revision d3e4f5a6b7c8. The two sources never share a cell.

## Query parameters

- `season` integer, required: NFL season year, e.g. 2026
- `through` string, date, nullable: Last game date to include. Defaults to the end of the season.

## Response `200`

Successful Response

- NflWatchResponse: The whole watch for one season through one date.
  - `season` integer, required
  - `start_date` string, date, required
  - `end_date` string, date, required
  - `readable_n` integer, required
  - `proper_score_se_bar` number, required
  - `roi_interval_z` number, required
  - `n_rows` integer, required
  - `n_suppressed_rows` integer, required
  - `cells` NflWatchCellResponse[], required
    - `market` string, required
    - `side` string, required
    - `source` string, required
    - `gated` boolean, required
    - `n_recorded` integer, required
    - `n_graded` integer, required
    - `n_wins` integer, required
    - `n_pushes` integer, required
    - `n_scored` integer, required
    - `n_skipped_no_close` integer, required
    - `skips_by_reason` object, required
    - `brier_model` number, nullable, required
    - `brier_close` number, nullable, required
    - `brier_diff` number, nullable, required
    - `brier_diff_se` number, nullable, required
    - `brier_t` number, nullable, required
    - `roi_pct` number, nullable, required
    - `roi_sd_pct` number, nullable, required
    - `roi_se_pct` number, nullable, required
    - `roi_low_pct` number, nullable, required
    - `roi_high_pct` number, nullable, required
    - `verdict` string, required
    - `ungate_candidate` boolean, required
    - `regate_look` boolean, required
    - `reasons` string[], required
  - `notes` string[], required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/fairline/apis/fairline-api.md) · [All operations](https://skmtc.dev/fairline/apis/fairline-api/llms.txt) · [OpenAPI document](https://skmtc.dev/fairline/apis/fairline-api/revisions/9f7ed2bfdf75?raw)
