Opono
Skip to content
Documentation menu Squads ▾

API reference

Squads

Copy as Markdown

Retrieve fixture squads

GET /v1/fixtures/{fixture_id}/squads

Get eligible player IDs, names and positions for both sides at zero credits, plus supported formations. Start probabilities and expected selections belong to Opono Expected Lineup.

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

Response

FieldTypeDescription
objectstringfixture_squads.
fixture_idintegerSelected fixture.
squad_versionstringSquad identity echoed as inputs.squad_version on quotes and runs.
data_versionstringCurrent fixture input version.
as_ofstringInput watermark in ISO 8601 UTC.
lineups_announcedbooleanWhether official team sheets are published.
formationsarrayAccepted formation strings for custom lineups.
home / awayobjectEach side's team and players.
home.team / away.teamobjectTeam ID and name.
home.players / away.playersarrayEligible players for this side.
home.players[].player_idintegerPlayer ID to use in xi or bench; the same fields apply to away.
home.players[].namestringPlayer label.
home.players[].positionstring or nullgoalkeeper, defender, midfielder, attacker, or null when unlabelled.
freshnessobjectFixture freshness when present; unavailable or refreshing squads return an error.

Example response

200 synthetic test response; every player entry has only player_id, name and position.

json
{
  "object": "fixture_squads",
  "fixture_id": 19609874,
  "squad_version": "sq1:example",
  "data_version": "example-input-version",
  "as_of": "2026-10-17T09:00:00Z",
  "lineups_announced": false,
  "formations": [
    "4-3-3"
  ],
  "home": {
    "team": {
      "team_id": 1,
      "name": "Home"
    },
    "players": [
      {
        "player_id": 101,
        "name": "Home player 1",
        "position": "goalkeeper"
      },
      {
        "player_id": 102,
        "name": "Home player 2",
        "position": "defender"
      },
      {
        "player_id": 103,
        "name": "Home player 3",
        "position": "defender"
      },
      {
        "player_id": 104,
        "name": "Home player 4",
        "position": "defender"
      },
      {
        "player_id": 105,
        "name": "Home player 5",
        "position": "defender"
      },
      {
        "player_id": 106,
        "name": "Home player 6",
        "position": "midfielder"
      },
      {
        "player_id": 107,
        "name": "Home player 7",
        "position": "midfielder"
      },
      {
        "player_id": 108,
        "name": "Home player 8",
        "position": "midfielder"
      },
      {
        "player_id": 109,
        "name": "Home player 9",
        "position": "attacker"
      },
      {
        "player_id": 110,
        "name": "Home player 10",
        "position": "attacker"
      },
      {
        "player_id": 111,
        "name": "Home player 11",
        "position": "attacker"
      }
    ]
  },
  "away": {
    "team": {
      "team_id": 2,
      "name": "Away"
    },
    "players": [
      {
        "player_id": 201,
        "name": "Away player 1",
        "position": "goalkeeper"
      },
      {
        "player_id": 202,
        "name": "Away player 2",
        "position": "defender"
      },
      {
        "player_id": 203,
        "name": "Away player 3",
        "position": "defender"
      },
      {
        "player_id": 204,
        "name": "Away player 4",
        "position": "defender"
      },
      {
        "player_id": 205,
        "name": "Away player 5",
        "position": "defender"
      },
      {
        "player_id": 206,
        "name": "Away player 6",
        "position": "midfielder"
      },
      {
        "player_id": 207,
        "name": "Away player 7",
        "position": "midfielder"
      },
      {
        "player_id": 208,
        "name": "Away player 8",
        "position": "midfielder"
      },
      {
        "player_id": 209,
        "name": "Away player 9",
        "position": "attacker"
      },
      {
        "player_id": 210,
        "name": "Away player 10",
        "position": "attacker"
      },
      {
        "player_id": 211,
        "name": "Away player 11",
        "position": "attacker"
      }
    ]
  }
}

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.
404fixture_not_foundNo matching simulation fixture exists.
400fixture_not_coveredThe requested fixture is not available for simulation.
503refreshingThe request can't be checked right now.