as-of

The odds board as it stood at an instant

The board as it was actually observed at as_of, one row per market, sportsbook and participant, each carrying the observed_at instant it was recorded and whether that was before kickoff.

NEVER AN EMPTY 200 FOR A PERIOD WE DID NOT OBSERVE. An as_of outside the observed windows is a 422 naming the floor, the ceiling and any gaps, because an empty list cannot be told apart from "no market was offered" and would let a backtest run across a window we have no record of. An in-coverage read that finds nothing IS a 200 with an empty list, and that is a different claim: it means no market was observed at that instant.

COVERAGE IS SHALLOW ON THIS RELATION AND IS NOT THE SAME AS THE PROP ARCHIVE'S. Call /v1/as-of/coverage?relation=odds before relying on a period. Depth differs per relation and per sport, and the two are never blended into one number.

get/v1/as-of/odds

Request

  • Base URL: https://api.bigballsdata.com
  • URL: https://api.bigballsdata.com/v1/as-of/odds
  • Auth: one of:
    • API key in header x-api-key
    • HTTP bearer

Query parameters

as_ofstring date-time required

The instant to read the board as of, RFC3339 (e.g. 2026-10-05T23:00:00Z). REQUIRED and has no default: a default of now would make this indistinguishable from a live read.

match_idstring uuid required

The match to read, as a bbs_id from /v1/matches. Retired ids are resolved to their canonical match.

Response

ok. { data, meta }. meta.as_of_floor and meta.as_of_ceiling bound what was observed; meta.empty_means states what an empty data means on an in-coverage read.

Changes

No recorded changes to this operation across all 3 revisions of this API.