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
| Name | Type | Required | Description |
|---|---|---|---|
fixture_id | integer | Yes | Use a returned fixture ID instead of home, away, and date; minimum: 1. |
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
| — | — | — | None. |
Body parameters
| Name | Type | Required | Description |
|---|---|---|---|
| — | — | — | None. |
Example request
bash
curl 'https://api.opono.com/v1/fixtures/19609874/availability' \
--header "Authorization: Bearer $OPONO_API_KEY"Response
| Field | Type | Description |
|---|---|---|
object | string | availability_forecast. |
fixture_id | integer | Selected fixture. |
kickoff | string | Kick-off in ISO 8601 UTC. |
home / away | object | Each side's team and players. |
home.players[].player_id / name | integer / string or null | Player labels; the same fields apply to away. |
home.players[].p_available | number | Chance the player can play this match, from 0 to 1. |
home.players[].p_injury_before_next | number | Chance a new injury starts before his next match. |
home.players[].expected_return | object or null | For 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_of | string | When the forecast was published, in ISO 8601 UTC. |
publication | string | The publication's day. A new day's forecast is a new paid read; the same one replays for free. |
model.public_name / model.version | string / string | Opono Robin and its release. |
credits_charged | number | One credit on first live delivery; zero for a same-publication replay or test key. |
replay | boolean | Whether your organisation already read this forecast from this publication. |
livemode | boolean | False for synthetic test output. |
receipt | object | Credit 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
| Status | Code | Meaning |
|---|---|---|
| 400 | parameter_invalid | A parameter has an invalid value. |
| 401 | invalid_api_key | The credential cannot authenticate. |
| 401 | key_revoked | The API key has been revoked. |
| 401 | key_expired | The API key has expired. |
| 403 | scope_missing | The key lacks the required scope. |
| 403 | tier_restricted | The organisation plan does not include this operation. |
| 403 | org_suspended | Your account is suspended. |
| 403 | ip_not_allowed | The caller is outside the key's IP allowlist. |
| 429 | rate_limited | A request or authentication rate limit was exceeded. |
| 503 | dependency_unavailable | Request admission is unavailable. |
| 503 | maintenance | The API is paused for maintenance. |
| 402 | balance_too_low | Your available balance cannot cover the request. |
| 404 | availability_not_found | No availability forecast exists for this fixture. |
| 404 | fixture_not_found | No matching simulation fixture exists. |