---
title: "Get first-half / first-five / first-set lines and live progress for an event"
method: GET
path: "/v1/events/{event_id}/period-odds"
tags: ["events"]
---

# Get first-half / first-five / first-set lines and live progress for an event

`GET /v1/events/{event_id}/period-odds`

## Request

- Base URL: `https://lumify.ai`
- URL: `https://lumify.ai/v1/events/{event_id}/period-odds`
- Auth: HTTP bearer

NFL, NCAAF, NBA, NCAAB, MLB, Soccer, and Tennis only. Joins persisted first_half_spreads / first_half_totals mains to this-event period scores (1H = Q1+Q2, NCAAB or soccer native 1H; MLB F5 = innings 1–5; tennis S1 = first-set games) and grades the period, not the full game. GET /odds stays on h2h/spreads/totals. Other sports return HTTP 400. available:false is free.

## Path parameters

- `event_id` integer, required: Lumify event ID

## Response `200`

One row per (scope, market, line) with per-book prices, scope scores, and result (in_progress until the scope is complete). 400 if the event's sport is not NFL, NCAAF, NBA, NCAAB, MLB, Soccer, and Tennis. 404 if the event does not exist.

- PeriodOddsResponse
  - `event_id` integer, required: Lumify event ID.
  - `available` boolean, required: False when no first-half / first-five / first-set mains have been ingested for this event. available:false is not charged.
  - `sport` string, nullable: Sport slug (nfl, ncaaf, nba, ncaab, or mlb on this endpoint).
  - `status` string, nullable: Event status: scheduled, inprogress, delayed, final, …
  - `period` string, nullable: Current period label from the live score snapshot (e.g. '3').
  - `clock` string, nullable: Game clock from the live score snapshot (e.g. '8:42').
  - `period_odds` PeriodOddsLine[]: One row per (scope, market, line). All books at that exact line are nested under books. Empty when available is false.
    - `scope` string, required: Period this line settles against. '1H' for NFL/NCAAF/NBA/NCAAB (Q1+Q2, or the native 1H row on NCAAB) and soccer (native 1H). 'F5' for MLB (innings 1–5). 'S1' for tennis (first-set games).
    - `market` string, required: Persisted market_key: first_half_spreads or first_half_totals.
    - `line` number, required: Main number. Spreads are home-perspective (home -2.5 pairs with away +2.5). Totals are the Over/Under point.
    - `home_score` number, nullable: This-event home points in the scope, summed from period scores.
    - `away_score` number, nullable: This-event away points in the scope, summed from period scores.
    - `current` number, nullable: Scope total (home + away). Totals rows only. Null on spreads.
    - `current_margin` number, nullable: Home minus away in the scope. Spreads rows only. Null on totals.
    - `pct_of_line` number, nullable: current / line as a percent (one decimal). Totals rows only.
    - `settleable` boolean, required: True — these markets grade from lumify_period_scores.
    - `scope_complete` boolean, required: True when every required period label is present and numeric for both sides AND the following period has started (e.g. Q3 for a 1H line, inning 6 for F5) — or the event itself is final/walkover. The next-period check exists because live feeds mark the period in progress as already 'confirmed'; grade only when scope_complete is true, otherwise in_progress.
    - `result` string, nullable: Totals only: in_progress / over / under / push / void. Null on spread rows (use home_result / away_result).
    - `home_result` string, nullable: Spreads only: in_progress / won / lost / push / void. Null on totals.
    - `away_result` string, nullable: Spreads only: in_progress / won / lost / push / void. Null on totals.
    - `books` object: Per-book American prices at this exact line. Spreads use home/away; totals use over/under. Keys are odds slugs (fanduel, …).

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/lumify/apis/lumify-sports-intelligence-api.md) · [All operations](https://skmtc.dev/lumify/apis/lumify-sports-intelligence-api/llms.txt) · [OpenAPI document](https://skmtc.dev/lumify/apis/lumify-sports-intelligence-api/revisions/f91ea41a2606?raw)
