Opono
Skip to content
Documentation menu Opono Call-up Forecast ▾

API reference

Opono Call-up Forecast

Copy as Markdown

List call-up forecasts

GET /v1/callups

List, at zero credits, the national teams whose next international window has a call-up forecast.

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/callups' \
  --header "Authorization: Bearer $OPONO_API_KEY"

Response

FieldTypeDescription
objectstringlist.
as_ofstring or nullWhen the forecasts were published; null when there are none.
dataarrayNational teams in window order.
data[].team_idintegerTeam ID for the call-up forecast.
data[].namestring or nullTeam name.
data[].window_starts_atstringWhen the window starts, in ISO 8601 UTC.
data[].preliminarybooleanTrue until the squad cutoff.
data[].candidatesintegerPlayers ranked for the window.

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 Call-up Forecast

GET /v1/teams/{team_id}/callups

Read Opono Robin's call-up forecast for a national team's next international window for 1 credit: the players who could be called up, ranked by their chance of being called. It is preliminary until the squad cutoff, 10 days before the window, and the chances tend to run low until then.

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

Parameters

Path parameters

NameTypeRequiredDescription
team_idintegerYesRequest value; minimum: 1.

Query parameters

NameTypeRequiredDescription
limitintegerNoMaximum rows to return; range: 1–500; default: 60.

Body parameters

NameTypeRequiredDescription
———None.

Example request

bash
curl 'https://api.opono.com/v1/teams/18804/callups?limit=60' \
  --header "Authorization: Bearer $OPONO_API_KEY"

Response

FieldTypeDescription
objectstringcallup_forecast.
teamobjectTeam ID and name.
window.starts_at / window.squad_cutoffstring / stringWhen the window starts, and about when squads are named.
window.matches / window.friendlies_onlyinteger / booleanMatches in the window, and whether they are all friendlies.
window.preliminarybooleanTrue until the squad cutoff.
candidatesintegerPlayers ranked for this window; players holds the first limit.
players[].player_id / name / positioninteger / string or null / string or nullPlayer labels.
players[].p_callednumberOpono Robin's chance the player is called up, from 0 to 1.
players[].rankintegerRank by that chance, from 1.
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 to two players; zero credits.

json
{
  "object": "callup_forecast",
  "team": {
    "team_id": 18804,
    "name": "Synthetic national team"
  },
  "window": {
    "starts_at": "2026-11-09T00:00:00.000Z",
    "squad_cutoff": "2026-10-30T00:00:00.000Z",
    "matches": 2,
    "friendlies_only": false,
    "preliminary": true
  },
  "candidates": 40,
  "players": [
    {
      "player_id": 1,
      "name": "Synthetic player 1",
      "position": "goalkeeper",
      "p_called": 0.98,
      "rank": 1
    },
    {
      "player_id": 2,
      "name": "Synthetic player 2",
      "position": "defender",
      "p_called": 0.955,
      "rank": 2
    }
  ],
  "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.
404window_not_foundNo call-up forecast exists for this team.