History & Settlement Signals
Opening lines
Which bookmaker posted each market first, at what line and price,
and when — read from a durable per-book ledger
(sportquanta_ingestion.openingOdds), not derived from ClickHouse
history. Unlike the current-odds and history endpoints, this does
not age out: an opener recorded here survives the 13-month
ClickHouse retention window that the odds-history endpoints are
bounded by.
Coverage note: "first" means first among the bookmakers that were actively being scraped at the time. A book whose route was enabled after a market opened cannot win, and the response does not distinguish that from a book that genuinely posted later.
Requires the stats entitlement (a paid plan). See Responses & Errors for the success envelope and availability rules.
https://api.sportquanta.com/v1/{league}/games/{id}/odds/openingReference context: WKBL.
Overview · Response conventions
Authorizations
AuthorizationstringheaderrequiredSend a workspace API token in the Authorization: Bearer <token> header.
Path Parameters
leagueenum<string>default:wkblrequiredLeague for this reference section: wkbl.
Available options: wkbl
idstringrequiredQuery Parameters
bookmakerstringComma-separated bookmaker ids to include.
marketstringComma-separated market keys to include.
formatenum<string>default:americanAccepted format hint (american by default, or decimal). Current responses retain both explicitly named price fields when available; this parameter does not strip or synthesize prices. Closing consensus_price_decimal remains decimal.
Available options: decimal, american
Response
application/jsonOpening line per market: the earliest bookmaker (with any tied bookmakers and the lead time to the next distinct observation), plus the full per-book ladder of opening observations.
Query validation failed. Depending on the handler, invalid_query_parameter is returned with HTTP 400 or 422. Pre-read validation is non-billable.
Missing or invalid bearer API token.
Access is forbidden: the token lacks api.read scope, the plan lacks an endpoint/bookmaker capability, or configured billing access is inactive. Inspect error.code and details.feature when present.
The id is well-formed but no document has been ingested for it yet.
Query validation failed. Depending on the handler, invalid_query_parameter is returned with HTTP 400 or 422. Pre-read validation is non-billable.
Hourly rate ceiling or monthly quota exceeded. The error code disambiguates
which limit was hit. X-RateLimit-* and X-Requests-*-Month response headers
carry the current state of both counters.
Token validation or an internal handler failed. Token-store failures use api_token_lookup_failed; unsupported internal sport dispatch can use data_layer_unavailable.
The data layer (Mongo / ClickHouse / Redis cache) is temporarily unreachable. The server attempted the lookup; it failed. Retry with backoff. Per the spec's order of evaluation, this DOES consume monthly quota — the request reached step 6.
The configured billing provider could not verify API access. The request is refused before the data handler and does not consume monthly quota.
dataobjectrequireddata.dataobjectrequireddata.data.game_idstringrequireddata.data.leaguestringrequireddata.data.bookmakersstring[] | nullrequireddata.data.marketsobject[] | nullrequireddata.data.markets.marketstringrequireddata.data.markets.periodstringdata.data.markets.selectionstringrequireddata.data.markets.first_bookmakerstringrequireddata.data.markets.first_observed_atstring<date-time>requireddata.data.markets.first_tied_withstring[]data.data.markets.lead_secondsnumberdata.data.markets.book_countintegerrequireddata.data.markets.booksobject[] | nullrequireddata.data.markets.books.bookmakerstringrequireddata.data.markets.books.observed_atstring<date-time>requireddata.data.markets.books.linenumberdata.data.markets.books.price_decimalnumberDecimal quoted odds, when available. Responses can retain both decimal and American prices; format is a hint and does not guarantee conversion or removal of the other field.
data.data.markets.books.price_americanintegerAmerican quoted odds, when available (for example -110 or +150). Responses can retain both price formats; format is a hint and does not guarantee conversion or removal of the other field.
data.data.markets.books.source_idstringdata.data.markets.books.originstringdata.data.markets.books.recorded_atstring<date-time>_metaobjectResponse request/cache metadata. Optional evidence fields are specific to this handler; cache TTL does not measure source-data freshness.
_meta.request_idstring_meta.served_fromenum<string>Available options: live, cache
_meta.cache_ttl_secondsintegerResponse cache TTL; independent of source freshness. Omitted when zero.
errorobjectrequirederror.codestringrequiredStable machine-readable error code.
error.messagestringrequiredUser-facing error summary.
error.detailsanyOptional error details.