---
title: "Get Blackbox Ledger"
method: GET
path: "/api/picks/blackbox/ledger"
tags: ["picks"]
---

# Get Blackbox Ledger

`GET /api/picks/blackbox/ledger`

## 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/picks/blackbox/ledger`
- Auth: HTTP bearer

One page of the track record, `days` slate-days wide, ending strictly before
`before`.

The caller pages by handing back `next_cursor`. The cursor is exclusive, so the
UI's first page passes the featured date and the history starts beneath it with
no slate shown twice.

`before` defaults to tomorrow rather than today, so an ad-hoc call with no cursor
still includes today's slate; the UI always passes one.

## Query parameters

- `before` string, date, nullable
- `days` integer
- `sport` string, nullable

## Response `200`

Successful Response

- BlackboxLedgerResponse: One page of the track record: the picks from N *slate* days (days that actually carry picks), most recent first, ending strictly before the request's cursor. The window is counted in slates rather than calendar days on purpose. The panel commits nothing on a slate where every candidate collides with an earlier pick, and MLB has real off-days, so a calendar window goes thin exactly where the record is already sparse. `next_cursor` is the oldest date on this page, and is exclusive: passing it back as `before` returns the page beneath this one. It is None once the record runs out.
  - `picks` BlackboxPickOut[], required
    - `id` integer, required
    - `sport` string, required
    - `game_date` string, date, required
    - `external_game_id` string, required
    - `home_team` string, nullable
    - `away_team` string, nullable
    - `game_time_utc` string, date-time, nullable
    - `market` string, required
    - `side` string, required
    - `line` number, nullable
    - `bookmaker` string, required
    - `odds_taken_decimal` number, required
    - `model_probability` number, required
    - `market_fair_probability` number, nullable
    - `edge` number, required
    - `confidence_tier` string, required
    - `consensus_votes` string, required
    - `display_units` number, required
    - `reasoning` string, nullable
    - `news_sources` object[], nullable
    - `model_version` string, required
    - `generated_at` string, date-time, required
    - `result` string, nullable
    - `pnl` number, nullable
    - `voided_at` string, date-time, nullable
    - `void_reason` string, nullable
    - `clv_pct` number, nullable
    - `clv_status` string
    - `beat_close` boolean, nullable
    - `closing_decimal` number, nullable
    - `clv_pct_novig` number, nullable
    - `beat_close_novig` boolean, nullable
    - `clv_close_source_novig` string, nullable
    - `closing_fair_decimal_novig` number, nullable
    - `dissent_reasoning` string, nullable
  - `window_start` string, date, nullable
  - `window_end` string, date, nullable
  - `next_cursor` string, date, nullable
  - `has_more` boolean

## 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)
