List tournaments
Use GET /v1/external/tournaments to find your organization's tournaments, filter them by status and sport, and page through a season archive.
GET /v1/external/tournaments is the entry point of every integration: it is how
you turn "my organization" into a list of tournament idx values that the other
endpoints take. It filters by status and sport, pages with limit/offset,
and returns rows ordered by startDate descending. Typical uses are a "current
tournaments" strip on a club website, a season archive page, and the discovery
step of a nightly export.
Request
GET /v1/external/tournaments?status=IN_PROGRESS&sport=PADEL&limit=10 HTTP/1.1
Host: api-production-ea80.up.railway.app
Authorization: Bearer setto_live_…Query parameters
| Parameter | Type | Default | Notes |
|---|---|---|---|
status | enum | — | DRAFT, UPCOMING, IN_PROGRESS, COMPLETED, ARCHIVED |
sport | enum | — | PADEL, TENNIS, PICKLEBALL |
populate | list | (none) | Only club is allowed here |
limit | integer | 25 | 1–100 |
offset | integer | 0 | 0 or greater |
curl -s -G https://api-production-ea80.up.railway.app/v1/external/tournaments \
-H "Authorization: Bearer $SETTO_API_TOKEN" \
-d status=IN_PROGRESS \
-d sport=PADEL \
-d limit=10Response
{
"data": [
{
"idx": "3c9b7f52-6d41-4a8e-b1f0-2e7d5c9a4b18",
"slug": "torneo-apertura-2026",
"name": "Torneo Apertura 2026",
"type": "TOURNAMENT",
"sport": "PADEL",
"status": "IN_PROGRESS",
"startDate": "2026-09-18T00:00:00.000Z",
"endDate": "2026-09-20T00:00:00.000Z",
"timezone": "America/Monterrey",
"matchDays": null,
"isPublic": true,
"isFormatComplete": true,
"banner": "https://cdn.setto.io/banners/torneo-apertura-2026.jpg",
"displayPoints": true,
"inscriptionCost": 900,
"totalPrize": 40000,
"createdAt": "2026-06-02T18:21:07.442Z",
"publicUrl": "https://www.setto.io/t/torneo-apertura-2026",
"organization": {
"idx": "6f1d9c2e-4a7b-4f3d-9d2c-8b5e1a0f7c43",
"name": "Club Padel Monterrey",
"slug": "club-padel-monterrey"
}
}
],
"meta": { "limit": 10, "offset": 0, "total": 1 }
}The data rows are full tournament objects — the same shape
getTournament returns — minus any relations, since
this endpoint populates nothing by default.
Tips and pitfalls
- Drafts and archives are included. With no
statusfilter you getDRAFTandARCHIVEDtournaments too. A public "what's on" strip almost always wantsstatus=IN_PROGRESSplusstatus=UPCOMING— two calls, sincestatustakes a single value. isPublic: falseis still returned. It tells you the organizer has turned the public page off; the API does not filter on it. If you are mirroring the public site, skip those rows yourself.- Personal tournaments are invisible. Only tournaments attached to your organization appear. If an expected tournament is missing, it is probably owned by a user rather than by the organization.
- Do not populate here.
clubis the only allowed relation, and on a page of 100 rows it is 100 joins. Fetch the club once withgetTournamentinstead. - Page with
limit=100for exports, and de-duplicate onidx— see Pagination. - Sort is
startDatedescending, so "the current tournament" is usuallydata[0]when you filter bystatus=IN_PROGRESS.
Related
- Get a tournament — the detail call.
- Pagination — walking a full archive.
- Reference:
listTournaments.
MCP tool: list_tournaments