History & Settlement Signals
Closing-line value
Open versus close per bookmaker and selection, with the implied probability shift between them.
anchor decides what "close" means:
window(default) — the last tick inside the requested history window. Right for inspecting a window, and it drifts as history ages past the 13-month ClickHouse retention, after which it silently means "the last tick we still have".closing— the durable closing ledger: each book's genuine last price before the fixture started. Requires the signals entitlement (Max); without it this parameter returns 403 while the default keeps working.
Each item carries close_anchor under anchor=closing, because a row
the ledger does not cover keeps its window-derived close rather than
disappearing. Dropping it would make the response quietly incomplete.
Needs ClickHouse; returns 502 where odds history is not deployed.
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/clvReference 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
anchorenum<string>default:windowWhat the close side is taken from.
Available options: window, closing
marketstringbookmakerstringselectionstringlimitintegerdefault:5000Response
application/jsonClosing-line value per selection.
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 league is unsupported, the endpoint is not available for that sport, or the requested data has not been ingested. Inspect error.code.
Query validation failed. Depending on the handler, invalid_query_parameter is returned with HTTP 400 or 422. Pre-read validation is non-billable.
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.
dataobjectrequireddata.dataobjectrequireddata.data.game_idstringrequireddata.data.anchorstringrequireddata.data.itemsobject[] | nullrequireddata.data.items.marketstringrequireddata.data.items.periodstringdata.data.items.bookmakerstringrequireddata.data.items.selectionstringrequireddata.data.items.linenumberdata.data.items.open_atstring<date-time>data.data.items.close_atstring<date-time>data.data.items.open_price_decimalnumberdata.data.items.close_price_decimalnumberdata.data.items.open_impliednumberdata.data.items.close_impliednumberdata.data.items.clv_impliednumberDifference between closing and opening implied probability.
data.data.items.close_anchorstringSource of the closing side, when annotated.
_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.