Opono
Skip to content
Documentation menu Opono Tie Forecast ▾

API reference

Opono Tie Forecast

Copy as Markdown

List knockout ties

GET /v1/ties

List, at zero credits, the knockout matches in the next 8 days that need a winner on the day: a one-match tie or a second leg.

Authentication: Bearer API key with data.read; active Plus or Pro plan required.

Parameters

Path parameters

NameTypeRequiredDescription
———None.

Query parameters

NameTypeRequiredDescription
———None.

Body parameters

NameTypeRequiredDescription
———None.

Example request

bash
curl 'https://api.opono.com/v1/ties' \
  --header "Authorization: Bearer $OPONO_API_KEY"

Response

FieldTypeDescription
objectstringlist.
as_ofstring or nullWhen the forecasts were published; null when there are none.
dataarrayTies in kick-off order.
data[].fixture_idintegerFixture ID for the tie forecast and for simulations.
data[].kickoffstringKick-off in ISO 8601 UTC.
data[].legstringsingle or second.
data[].competitionobjectCompetition id and round name, when known.

Example response

200 response with a test key.

json
{
  "object": "list",
  "as_of": null,
  "data": []
}

Errors

StatusCodeMeaning
400parameter_invalidA parameter has an invalid value.
401invalid_api_keyThe credential cannot authenticate.
401key_revokedThe API key has been revoked.
401key_expiredThe API key has expired.
403scope_missingThe key lacks the required scope.
403tier_restrictedThe organisation plan does not include this operation.
403org_suspendedYour account is suspended.
403ip_not_allowedThe caller is outside the key's IP allowlist.
429rate_limitedA request or authentication rate limit was exceeded.
503dependency_unavailableRequest admission is unavailable.
503maintenanceThe API is paused for maintenance.

Opono Tie Forecast

GET /v1/fixtures/{fixture_id}/tie

Read Opono Robin's forecast of a knockout tie for 1 credit: the 90-minute result, the chances of extra time and penalties, and of the home side going through. A second leg conditions on the first-leg score. The away side goes through in the rest of the cases, less any replay the competition's rules allow. Closes at kick-off.

Authentication: Bearer API key with data.read; active Plus or Pro plan required.

Parameters

Path parameters

NameTypeRequiredDescription
fixture_idintegerYesUse a returned fixture ID instead of home, away, and date; minimum: 1.

Query parameters

NameTypeRequiredDescription
———None.

Body parameters

NameTypeRequiredDescription
———None.

Example request

bash
curl 'https://api.opono.com/v1/fixtures/19609874/tie' \
  --header "Authorization: Bearer $OPONO_API_KEY"

Response

FieldTypeDescription
objectstringtie_forecast.
fixture_idintegerSelected fixture.
kickoffstringKick-off in ISO 8601 UTC.
home / awayobjectTeam ID and name.
competitionobjectCompetition id and round name, when known.
legstringsingle, a one-match tie; or second, the second leg of two.
first_legobject or nullA second leg's first-leg home_goals and away_goals; null for a one-match tie.
rules.decided_on_the_daynumberChance a level tie is settled by extra time or penalties on the day, not by a replay.
rules.straight_to_penaltiesnumberChance a level tie goes straight to penalties.
rules.away_goalsnumberChance away goals decide a level aggregate.
result_90objecthome, draw and away after 90 minutes and added time.
p_extra_timenumberChance of extra time.
p_penaltiesnumberChance of a penalty shootout.
p_home_throughnumberChance the home side goes through, by any route.
as_ofstringWhen the forecast was published, in ISO 8601 UTC.
publicationstringThe publication's day. A new day's forecast is a new paid read; the same one replays for free.
model.public_name / model.versionstring / stringOpono Robin and its release.
credits_chargednumberOne credit on first live delivery; zero for a same-publication replay or test key.
replaybooleanWhether your organisation already read this forecast from this publication.
livemodebooleanFalse for synthetic test output.
receiptobjectCredit receipt on live delivery or replay.

Example response

200 synthetic test response; zero credits.

json
{
  "object": "tie_forecast",
  "fixture_id": 19609874,
  "kickoff": "2026-10-28T19:45:00.000Z",
  "home": {
    "team_id": 1,
    "name": "Synthetic home"
  },
  "away": {
    "team_id": 2,
    "name": "Synthetic away"
  },
  "competition": {
    "id": 1,
    "round": "Synthetic round"
  },
  "leg": "single",
  "first_leg": null,
  "rules": {
    "decided_on_the_day": 1,
    "straight_to_penalties": 0.1,
    "away_goals": 0,
    "source": "synthetic"
  },
  "result_90": {
    "home": 0.45,
    "draw": 0.27,
    "away": 0.28
  },
  "p_extra_time": 0.243,
  "p_penalties": 0.115,
  "p_home_through": 0.588,
  "as_of": "2026-10-27T10:05:28.000Z",
  "publication": "synthetic",
  "model": {
    "public_name": "Opono Robin",
    "version": "synthetic"
  },
  "credits_charged": 0,
  "replay": false,
  "livemode": false
}

Errors

StatusCodeMeaning
400parameter_invalidA parameter has an invalid value.
401invalid_api_keyThe credential cannot authenticate.
401key_revokedThe API key has been revoked.
401key_expiredThe API key has expired.
403scope_missingThe key lacks the required scope.
403tier_restrictedThe organisation plan does not include this operation.
403org_suspendedYour account is suspended.
403ip_not_allowedThe caller is outside the key's IP allowlist.
429rate_limitedA request or authentication rate limit was exceeded.
503dependency_unavailableRequest admission is unavailable.
503maintenanceThe API is paused for maintenance.
402balance_too_lowYour available balance cannot cover the request.
404tie_not_foundNo tie forecast exists for this fixture.
404fixture_not_foundNo matching simulation fixture exists.