History & Settlement Signals
Sharp / mainstream divergence
How far the mainstream market sits from the sharp one, per market.
Compares DE-VIGGED probabilities, never prices. Books carry different margins, so a sharp book at 2% against a soft one at 8% shows a wide price gap on a market they agree about perfectly — comparing prices measures margin and calls it disagreement.
gap is mainstream minus sharp per selection. A positive gap means the
mainstream market rates that selection higher than the sharp market
does, which is the side to fade. Markets are ordered by max_gap, so a
truncated response keeps the useful half.
Read sharp_book_count and mainstream_book_count before acting: a
consensus of one book is a price, not a market.
Markets where either side has not priced every selection are omitted rather than reported. De-vigging a partial market normalizes over a subset, which inflates every probability in it and manufactures a gap out of a quote we simply did not collect.
Requires the signals entitlement (Max plan). See Responses & Errors for the success envelope and availability rules.
https://api.sportquanta.com/v1/{league}/games/{id}/odds/divergenceReference 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
bookmakerstringCSV of bookmaker IDs used to build sharp and mainstream consensus.
Response
application/jsonDivergence per market.
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.
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.game_idstringrequireddata.leaguestringrequireddata.countintegerrequireddata.marketsobject[] | nullrequireddata.markets.marketstringrequireddata.markets.periodstringdata.markets.linenumberdata.markets.sharp_book_countintegerrequireddata.markets.mainstream_book_countintegerrequireddata.markets.sharp_fair_probabilitiesobject | nullrequiredFair probabilities keyed by selection (for example home, away, draw, over, under as appropriate to the market). Values are 0–1 fractions. Only returned selections appear.
data.markets.sharp_fair_probabilities.{key}numberdata.markets.mainstream_fair_probabilitiesobject | nullrequiredFair probabilities keyed by selection (for example home, away, draw, over, under as appropriate to the market). Values are 0–1 fractions. Only returned selections appear.
data.markets.mainstream_fair_probabilities.{key}numberdata.markets.gapobject | nullrequiredMainstream minus sharp fair probability, keyed by selection. Values are signed probability fractions (0.03 means 3 percentage points); positive means mainstream assigns the selection more probability.
data.markets.gap.{key}numberdata.markets.max_gapnumberrequiredLargest absolute selection probability gap; used to order markets.
_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.