SETTO API

List teams

Use GET /v1/external/tournaments/{idx}/teams to read every registered pair or player, filter by category, and embed players, captain and league team.

GET /v1/external/tournaments/{idx}/teams lists every entry registered in a tournament — a pair in doubles, a single player in singles, a squad in a team league. Each team carries its seed, its category, and (populated by default) its players. Use it for an entry list, a seeding sheet, or to resolve the { idx, name } team references that appear inside round payloads.

Like divisions, the response is a bare JSON array and is not paginated.

Request

GET /v1/external/tournaments/3c9b7f52-6d41-4a8e-b1f0-2e7d5c9a4b18/teams?division=7b2f4d16-9c83-4e50-a7d1-3f6c8b204e59 HTTP/1.1
Host: api-production-ea80.up.railway.app
Authorization: Bearer setto_live_…

Parameters

ParameterInNotes
idxpathThe tournament's UUID v4
divisionqueryRestrict to one category. Must be a UUID v4 — a bad value is a 400
populatequeryAny of playerProfiles, captainProfile, leagueTeam, division. Default playerProfiles,division
curl -s -G \
  https://api-production-ea80.up.railway.app/v1/external/tournaments/3c9b7f52-6d41-4a8e-b1f0-2e7d5c9a4b18/teams \
  -H "Authorization: Bearer $SETTO_API_TOKEN" \
  -d division=7b2f4d16-9c83-4e50-a7d1-3f6c8b204e59 \
  -d populate=playerProfiles,division

Response

200 OK (trimmed)
[
  {
    "idx": "e0c4b839-2d17-4a56-9fb3-6e8d1c05a274",
    "name": "Álvarez / Peña",
    "seed": 1,
    "seedNumber": 1,
    "club": "Club Padel Monterrey",
    "picture": null,
    "ranking": 412,
    "isWildCard": false,
    "qualifierStatus": null,
    "drawAssignment": null,
    "createdAt": "2026-08-14T15:02:31.770Z",
    "division": {
      "idx": "7b2f4d16-9c83-4e50-a7d1-3f6c8b204e59",
      "name": "Cuarta Fuerza Varonil"
    },
    "players": [
      {
        "idx": "f3a7d02c-8b19-4e65-97c4-5d1b0a6e3f82",
        "firstName": "Mariana",
        "lastName": "Álvarez",
        "avatar": "https://cdn.setto.io/avatars/f3a7d02c.jpg"
      },
      {
        "idx": "0d6c81b4-72ef-4a30-8b19-c5e73f2a9d64",
        "firstName": "Sofía",
        "lastName": "Peña",
        "avatar": null
      }
    ]
  },
  {
    "idx": "b71f3a05-6c28-49ed-8a94-2f5b0d7e1c63",
    "name": "Ramos / Ortega",
    "seed": null,
    "seedNumber": null,
    "isWildCard": true,
    "createdAt": "2026-08-19T11:47:03.214Z",
    "division": {
      "idx": "7b2f4d16-9c83-4e50-a7d1-3f6c8b204e59",
      "name": "Cuarta Fuerza Varonil"
    },
    "players": [
      {
        "idx": "6a2e9f47-0c53-4b81-9d26-8f1c4a7b0e35",
        "firstName": "Daniela",
        "lastName": "Ramos",
        "avatar": null
      },
      {
        "idx": "c94b7d18-3e60-4a27-85f9-2b0d6e1a7c84",
        "firstName": "Regina",
        "lastName": "Ortega",
        "avatar": null
      }
    ]
  }
]

Tips and pitfalls

  • playerProfiles embeds as players. The populate key and the response key differ. Likewise captainProfile embeds as captainProfileIdx — an id, not an object.
  • Players carry no contact data, by design. idx, firstName, lastName, avatar — that is the whole player object. There is no email, phone or social handle in the External API.
  • Ordering is seed ascending, unseeded last, then name. Do not assume teams[0] is the top seed if the organizer has not seeded the draw yet.
  • Singles categories still return "teams" with one entry in players. Check division.isDoubles — from listDivisions — if you need to label them differently.
  • division can be null on a team that has not been assigned to a category.
  • Use the division filter, not client-side filtering, on large tournaments: it is applied in the query.
  • Team leagues: populate leagueTeam to get the squad ({ idx, name, color, logo, position, pointsAdjustment }) each entry plays for.
  • name is what you render. It is the organizer's chosen label for the pair and is what round payloads echo in their { idx, name } team references, so you can display bracket slots without joining back to this list.

MCP tool: list_teams

On this page