---
title: "Returns graded player props for one completed game: what each player actually recorded and the verdict of every closing book line against it. With date instead of game_id it lists the graded games for a day so game ids can be discovered. Anything that could not be graded carries a reason instead of a guess."
method: GET
path: "/api/v1/{sport}/props/results"
tags: ["Player props"]
---

# Returns graded player props for one completed game: what each player actually recorded and the verdict of every closing book line against it. With date instead of game_id it lists the graded games for a day so game ids can be discovered. Anything that could not be graded carries a reason instead of a guess.

`GET /api/v1/{sport}/props/results`

## Request

- Base URL: `https://api.owlsinsight.com`
- URL: `https://api.owlsinsight.com/api/v1/{sport}/props/results`
- Auth: HTTP bearer

Returns graded player props for one completed game: what each player actually recorded and the verdict of every closing book line against it. With date instead of game_id it lists the graded games for a day so game ids can be discovered. Anything that could not be graded carries a reason instead of a guess.

Pass game_id or date; with neither the response is 400. meta.mode says which shape came back.

status on each entry is ok, dnp, no_stats, unmapped_category or stat_not_reported. An entry or line that could not be graded carries ungradableReason: dnp (the bet voids), no_stats (no box-score row matched, never treated as a void), stat_not_reported, unmapped_category, ungradable_structure (an integer line whose over/under versus N+ meaning is unknown), ambiguous_player (a display name shared by two players in the game, so no line is joined) or no_actual_value.

verdict on a line is over, under or push for an over/under market and hit or miss for a milestone (N+) market. A book's market structure is honoured when it published one; an absent structure is unknown and is never defaulted to over/under.

capturePhase archive marks the last in-play line, captured at game end because the pre-game close was missed. It is not a closing line, and a hit rate built on it is not comparable to one built on commence lines.

Provisional grades are included by default and every entry carries final; meta.provisional counts them. Box scores are revised for a short window after a game, so confirmed_only=true trades some delay for a grade that will not move.

meta.lineOutcomes counts verdicts per book line; meta.entryStatuses counts entries per player and category. They have different denominators, so a hit rate built from lineOutcomes is weighted by how many books quoted each player.

Grading is enabled sport by sport and runs after the game is final and the box score is published. Until then, or on a sport where grading is not enabled, data is empty and meta.message says so.

meta.checks lists exactly what was evaluated. The response never claims a game is fully graded.

## Path parameters

- `sport` string, required

## Query parameters

- `game_id` string
- `date` string
- `category` string
- `player` string
- `confirmed_only` string

## Response `200`

OK

- GetPropResultsResponse: Any of: PropResultsDayResponse, PropResultsResponse.
  - `data` unknown
  - `meta` unknown
  - `success` boolean

---

[API](https://skmtc.dev/owlsinsight/apis/owls-insight-api.md) · [All operations](https://skmtc.dev/owlsinsight/apis/owls-insight-api/llms.txt) · [OpenAPI document](https://skmtc.dev/owlsinsight/apis/owls-insight-api/revisions/76c1ea016ff1?raw)
