ScoreProbResult
Market-implied correct-score probabilities for ONE football match. The de-vigged 1x2 + totals markets are inverted into a bivariate-Poisson (Dixon-Coles) score grid; the asian-handicap fair price is held out and reported as ``ah_ev_check`` (≈0 = the markets agree with the grid). When the moneyline is suspended (common once a match is decided) but the books keep totals + AH open, supremacy is solved from the handicap instead and ``ah_ev_check`` is null. Live matches are conditioned on the current score: the lambdas describe REMAINING goals and scorelines are still full-time (never below the current score). This is what the market implies, not a house prediction. ``status`` mirrors get_sharp_line: ok | ambiguous | not_found | no_data.
Properties
| Name | Type | Description |
|---|---|---|
| status | string | |
| query | string | |
| summary | string | |
| match | object | |
| scores | array | Top-K scorelines by probability, descending. |
| top_cum | object | Probability mass covered by the returned scores. |
| implied_1x2 | object | The grid's home/draw/away probabilities — the de-vigged 1x2 it was fit to, or, when the moneyline was suspended and supremacy came from the asian handicap, the 1x2 the fitted grid implies. |
| lambda_home | object | Fitted Poisson goal rate, home (remaining goals when the match is live). |
| lambda_away | object | Fitted Poisson goal rate, away (remaining goals when the match is live). |
| rho | object | Dixon-Coles low-score adjustment. |
| ah_ev_check | object | EV of the fair asian-handicap price under the fitted grid (held-out cross-check; ≈0 means 1x2/totals/AH are internally consistent). |
| fair_from | object | Bookmaker whose de-vigged 1x2 anchored the fit. |
| as_of | object | |
| stale | object | |
| alternatives | array | |
| ask_user | object | |
| decision | object |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/infersports-dev/json-schema/infersports-dev-score-prob-result-schema.json",
"title": "ScoreProbResult",
"description": "Market-implied correct-score probabilities for ONE football match.\n\nThe de-vigged 1x2 + totals markets are inverted into a bivariate-Poisson\n(Dixon-Coles) score grid; the asian-handicap fair price is held out and\nreported as ``ah_ev_check`` (≈0 = the markets agree with the grid). When the\nmoneyline is suspended (common once a match is decided) but the books keep\ntotals + AH open, supremacy is solved from the handicap instead and\n``ah_ev_check`` is null. Live matches are conditioned on the current score:\nthe lambdas describe REMAINING goals and scorelines are still full-time\n(never below the current score). This is what the market implies, not a\nhouse prediction. ``status`` mirrors get_sharp_line: ok | ambiguous |\nnot_found | no_data.",
"x-generated": "2026-11-12",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/infersports-dev-openapi.json#/components/schemas/ScoreProbResult",
"properties": {
"status": {
"type": "string",
"title": "Status"
},
"query": {
"type": "string",
"title": "Query"
},
"summary": {
"type": "string",
"title": "Summary"
},
"match": {
"anyOf": [
{
"$ref": "#/$defs/MatchSummary"
},
{
"type": "null"
}
]
},
"scores": {
"items": {
"$ref": "#/$defs/ScoreEntry"
},
"type": "array",
"title": "Scores",
"description": "Top-K scorelines by probability, descending."
},
"top_cum": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Top Cum",
"description": "Probability mass covered by the returned scores."
},
"implied_1x2": {
"anyOf": [
{
"additionalProperties": {
"type": "number"
},
"type": "object"
},
{
"type": "null"
}
],
"title": "Implied 1X2",
"description": "The grid's home/draw/away probabilities — the de-vigged 1x2 it was fit to, or, when the moneyline was suspended and supremacy came from the asian handicap, the 1x2 the fitted grid implies."
},
"lambda_home": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Lambda Home",
"description": "Fitted Poisson goal rate, home (remaining goals when the match is live)."
},
"lambda_away": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Lambda Away",
"description": "Fitted Poisson goal rate, away (remaining goals when the match is live)."
},
"rho": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Rho",
"description": "Dixon-Coles low-score adjustment."
},
"ah_ev_check": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Ah Ev Check",
"description": "EV of the fair asian-handicap price under the fitted grid (held-out cross-check; ≈0 means 1x2/totals/AH are internally consistent)."
},
"fair_from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Fair From",
"description": "Bookmaker whose de-vigged 1x2 anchored the fit."
},
"as_of": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "As Of"
},
"stale": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Stale"
},
"alternatives": {
"items": {
"$ref": "#/$defs/MatchAlternative"
},
"type": "array",
"title": "Alternatives"
},
"ask_user": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Ask User"
},
"decision": {
"$ref": "#/$defs/Decision"
}
},
"type": "object",
"required": [
"status",
"query",
"summary",
"decision"
],
"$defs": {
"Decision": {
"properties": {
"safe_to_proceed": {
"type": "boolean",
"title": "Safe To Proceed",
"description": "True when the result is unambiguous enough to act on without asking the user."
},
"confidence": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Confidence",
"description": "Resolution confidence 0–1 (null when not applicable)."
},
"ask_user": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Ask User",
"description": "A disambiguation question to put to the user; null when safe_to_proceed."
},
"next_action": {
"anyOf": [
{
"$ref": "#/$defs/NextAction"
},
{
"type": "null"
}
],
"description": "Suggested next call; null when the caller must ask first or nothing follows."
}
},
"type": "object",
"required": [
"safe_to_proceed"
],
"title": "Decision",
"description": "Pre-computed go/no-go for the caller (W3): we decide whether it's safe to proceed so the\nagent doesn't have to reason it out (and risk guessing). Branch on ``safe_to_proceed``:\ntrue → act on the result without asking; false → put ``ask_user`` to the human, or follow\n``next_action`` when there's a clear recovery step (e.g. nothing resolved → list fixtures)."
},
"MatchAlternative": {
"properties": {
"event_id": {
"type": "string",
"title": "Event Id"
},
"label": {
"type": "string",
"title": "Label",
"description": "'Home vs Away' label for disambiguation."
},
"confidence": {
"type": "number",
"title": "Confidence"
}
},
"type": "object",
"required": [
"event_id",
"label",
"confidence"
],
"title": "MatchAlternative",
"description": "A runner-up fixture when a query is ambiguous."
},
"MatchSummary": {
"properties": {
"event_id": {
"type": "string",
"title": "Event Id",
"description": "Canonical event id (evt_…); pass to get_match_odds / compare_lines."
},
"sport": {
"type": "string",
"title": "Sport",
"description": "football | basketball"
},
"league": {
"type": "string",
"title": "League",
"description": "League name, e.g. 'English Premier League'."
},
"home_team": {
"type": "string",
"title": "Home Team"
},
"away_team": {
"type": "string",
"title": "Away Team"
},
"scheduled_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Scheduled At",
"description": "Kickoff, ISO-8601 UTC."
},
"scheduled_at_local": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Scheduled At Local",
"description": "Kickoff in the requested timezone (ISO-8601); null when no timezone was given."
},
"status": {
"type": "string",
"title": "Status",
"description": "scheduled | live | finished"
},
"score": {
"anyOf": [
{
"$ref": "#/$defs/Score"
},
{
"type": "null"
}
],
"description": "Current score when live, else null."
},
"red_cards": {
"anyOf": [
{
"$ref": "#/$defs/Score"
},
{
"type": "null"
}
],
"description": "Red cards per side; null when not tracked by upstream."
},
"clock": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Clock",
"description": "Match clock when live, humanized for display: e.g. '1st half 25'', '2nd half 47'' (the real minute, not estimated) or 'half-time'; null pre-match or when the feed omits it. Basketball clocks (e.g. 'Q2 4:12') pass through as-is."
},
"confidence": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Confidence",
"description": "Fuzzy-match confidence 0–1 (find_match only; null elsewhere)."
},
"summary": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Summary",
"description": "One-line human-readable status, e.g. \"Man City vs Arsenal — LIVE 1h 23 2-1.\" or \"… — Kicks off 18:00 UTC on Jun 01.\" — ready to read to a user."
}
},
"type": "object",
"required": [
"event_id",
"sport",
"league",
"home_team",
"away_team",
"status"
],
"title": "MatchSummary",
"description": "A fixture flattened for agent consumption (teams as names, optional live score)."
},
"NextAction": {
"properties": {
"tool": {
"type": "string",
"title": "Tool",
"description": "Tool to call next, e.g. 'get_match_odds' | 'compare_lines' | 'list_today_matches'."
},
"args": {
"additionalProperties": {
"type": "string"
},
"type": "object",
"title": "Args",
"description": "Ready-to-use arguments for that call, e.g. {'event_id': 'evt_…'}."
},
"reason": {
"type": "string",
"title": "Reason",
"description": "Why this is the suggested next step."
}
},
"type": "object",
"required": [
"tool",
"reason"
],
"title": "NextAction",
"description": "The single best next call to make, pre-computed so the agent doesn't have to plan it (W3)."
},
"Score": {
"properties": {
"home": {
"type": "integer",
"title": "Home"
},
"away": {
"type": "integer",
"title": "Away"
}
},
"type": "object",
"required": [
"home",
"away"
],
"title": "Score"
},
"ScoreEntry": {
"properties": {
"score": {
"type": "string",
"title": "Score",
"description": "Full-time scoreline home-away, e.g. '1-0'."
},
"prob": {
"type": "number",
"title": "Prob",
"description": "Market-implied probability of that exact score."
}
},
"type": "object",
"required": [
"score",
"prob"
],
"title": "ScoreEntry"
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
curl "https://apis.io/api/v1/json-schemas/infersports-dev-score-prob-result"
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.