Opono
Skip to content
Documentation menu Opono Availability Forecast ▾

API reference

Opono Availability Forecast

Copy as Markdown

Opono Availability Forecast

GET /v1/fixtures/{fixture_id}/availability

Read Opono Robin's availability forecast for a match for 1 credit, covering both squads: each listed player's chance he can play it, his chance of a new injury before his next match, and for some players who are out, the day he is expected back. It gives no reasons. 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/availability' \
  --header "Authorization: Bearer $OPONO_API_KEY"

Response

FieldTypeDescription
objectstringavailability_forecast.
fixture_idintegerSelected fixture.
kickoffstringKick-off in ISO 8601 UTC.
home / awayobjectEach side's team and players.
home.players[].player_id / nameinteger / string or nullPlayer labels; the same fields apply to away.
home.players[].p_availablenumberChance the player can play this match, from 0 to 1.
home.players[].p_injury_before_nextnumberChance a new injury starts before his next match.
home.players[].expected_returnobject or nullFor some players who are out: the median, p10 and p90 of the day he is expected back. Null otherwise; a null does not mean he is fit.
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, shortened; zero credits.

json
{
  "object": "availability_forecast",
  "fixture_id": 19609874,
  "kickoff": "2026-10-30T19:45:00.000Z",
  "home": {
    "team": {
      "team_id": 1,
      "name": "Synthetic home"
    },
    "players": [
      {
        "player_id": 1,
        "name": "Synthetic player 1",
        "p_available": 0.97,
        "p_injury_before_next": 0.01,
        "expected_return": null
      },
      {
        "player_id": 3,
        "name": "Synthetic player 3",
        "p_available": 0.35,
        "p_injury_before_next": 0.01,
        "expected_return": {
          "median": "2026-11-07",
          "p10": "2026-11-02",
          "p90": "2026-11-18"
        }
      }
    ]
  },
  "away": {
    "team": {
      "team_id": 2,
      "name": "Synthetic away"
    },
    "players": []
  },
  "as_of": "2026-10-29T10: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.
404availability_not_foundNo availability forecast exists for this fixture.
404fixture_not_foundNo matching simulation fixture exists.