List divisions
Use GET /v1/external/tournaments/{idx}/divisions to read a tournament's categories, their rounds, and optionally every team registered in each one.
GET /v1/external/tournaments/{idx}/divisions lists a tournament's categories —
what organizers and players call categorías. Each division carries its display
order, colour, price, capacity and visibility, and by default its rounds. Use it
to build a category selector, to find the round ids you will feed to
getRound, or — with populate=teams — to dump an
entire draw sheet in one request.
The response is a bare JSON array, not a data/meta envelope, and it is not
paginated.
Request
GET /v1/external/tournaments/3c9b7f52-6d41-4a8e-b1f0-2e7d5c9a4b18/divisions?populate=rounds HTTP/1.1
Host: api-production-ea80.up.railway.app
Authorization: Bearer setto_live_…Parameters
| Parameter | In | Notes |
|---|---|---|
idx | path | The tournament's UUID v4 |
populate | query | Any of rounds, teams, teams.playerProfiles, teams.leagueTeam, circuitCategory. Default rounds |
curl -s -G \
https://api-production-ea80.up.railway.app/v1/external/tournaments/3c9b7f52-6d41-4a8e-b1f0-2e7d5c9a4b18/divisions \
-H "Authorization: Bearer $SETTO_API_TOKEN" \
-d populate=rounds,teams,teams.playerProfilesResponse
[
{
"idx": "7b2f4d16-9c83-4e50-a7d1-3f6c8b204e59",
"name": "Cuarta Fuerza Varonil",
"number": 1,
"color": "#2563eb",
"isDoubles": true,
"isVisible": true,
"price": 900,
"minParticipants": 8,
"maxParticipants": 32,
"maxRegistrations": 32,
"createdAt": "2026-06-02T18:24:55.901Z",
"tournament": { "idx": "3c9b7f52-6d41-4a8e-b1f0-2e7d5c9a4b18" },
"rounds": [
{
"idx": "9d3c6a84-7e15-4b02-8f6d-1c4a9e7b53f2",
"name": "Pool Play",
"type": "ROUND_ROBIN_ROUND",
"number": 1,
"isSetup": true,
"isVisible": true,
"numberOfSets": 3,
"proSets": false,
"playAllSets": false,
"hasNextRoundTransitioned": true,
"createdAt": "2026-06-02T18:25:10.338Z",
"division": {
"idx": "7b2f4d16-9c83-4e50-a7d1-3f6c8b204e59",
"name": "Cuarta Fuerza Varonil"
}
},
{
"idx": "2e7f5b10-8c94-4d63-a1b8-7f0e3d6c2a95",
"name": "Playoffs",
"type": "SINGLE_ELIMINATION_ROUND",
"number": 2,
"isSetup": true,
"isVisible": true,
"drawSize": 8,
"numQualifiers": 8,
"placements": [1, 3],
"createdAt": "2026-06-02T18:25:10.512Z",
"division": {
"idx": "7b2f4d16-9c83-4e50-a7d1-3f6c8b204e59",
"name": "Cuarta Fuerza Varonil"
}
}
]
},
{
"idx": "c58a1e93-0b74-42df-96e8-5a3d7f1b28c0",
"name": "Segunda Fuerza Femenil",
"number": 2,
"color": "#db2777",
"isDoubles": true,
"isVisible": false,
"price": 900,
"tournament": { "idx": "3c9b7f52-6d41-4a8e-b1f0-2e7d5c9a4b18" },
"rounds": []
}
]Tips and pitfalls
- It is an array. There is no
datakey and nometa.res.json()gives you the list directly. - Ordered by
numberascending — the order the organizer arranged the categories in. Render in that order; do not sort alphabetically. isVisible: falsecategories are included. The second row above is hidden on setto.io but present here. Filter it out for a public page.- An empty
roundsarray is real information: the organizer has created the category but has not built its format yet. Combine with the tournament'sisFormatComplete. teamscan be large. A 64-pair category withpopulate=teams,teams.playerProfilesis a big payload, multiplied by every category in the tournament. If you only need one category's entries, uselistTeamswith itsdivisionfilter instead.priceis per the category, in the tournament's currency, and may benullwhen the organizer did not set one.- Rounds here carry
division, so you can key them without a second lookup. In aTEAM_LEAGUEa round'sdivisionmay benull— those rounds belong to the tournament, not to one category, and will not appear under any division.
Related
- Get a round — feed it a round
idxfrom here. - List teams — per-category entries, filterable.
- Reference:
listDivisions.
MCP tool: list_divisions