History & Settlement Signals
Source-tier changes
Primary/secondary source-tier change events for chart annotations on odds-history views. ClickHouse-backed, same 502 semantics as the history endpoints.
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}/source-tier-changesReference 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
bookmakerstringOne bookmaker ID (not a CSV list).
fromstring<date-time>Inclusive start time, RFC 3339.
tostring<date-time>Inclusive end time, RFC 3339.
limitintegerdefault:200Maximum returned rows; defaults to 200. Values outside 1-1000 fall back to 200.
Required range: x <= 1000
Response
application/jsonTier change events, oldest first.
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.
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.itemsobject[] | nullrequireddata.items.event_timestring<date-time>requireddata.items.leaguestringrequireddata.items.bookmakerstringrequireddata.items.game_idstringrequireddata.items.feed_typestringdata.items.market_familystringdata.items.old_selected_source_idstringdata.items.new_selected_source_idstringdata.items.old_selected_source_tierstringdata.items.new_selected_source_tierstringdata.items.fallback_activebooleanrequireddata.items.reasonstring_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.