Listar torneos
Usa GET /v1/external/tournaments para encontrar los torneos de tu organización, filtrarlos por estado y deporte, y paginar el archivo de una temporada.
GET /v1/external/tournaments es la puerta de entrada de toda integración: es
como conviertes "mi organización" en una lista de valores idx de torneo que
toman los demás endpoints. Filtra por status y sport, pagina con
limit/offset, y devuelve filas ordenadas por startDate descendente. Los
usos típicos son una franja de "torneos actuales" en el sitio de un club, una
página de archivo de temporada y el paso de descubrimiento de una exportación
nocturna.
Petición
GET /v1/external/tournaments?status=IN_PROGRESS&sport=PADEL&limit=10 HTTP/1.1
Host: api.setto.io
Authorization: Bearer setto_live_…Parámetros de consulta
| Parámetro | Tipo | Por defecto | Notas |
|---|---|---|---|
status | enum | — | DRAFT, UPCOMING, IN_PROGRESS, COMPLETED, ARCHIVED |
sport | enum | — | PADEL, TENNIS, PICKLEBALL |
populate | lista | (ninguno) | Aquí solo se permite club |
limit | entero | 25 | 1–100 |
offset | entero | 0 | 0 o mayor |
curl -s -G https://api.setto.io/v1/external/tournaments \
-H "Authorization: Bearer $SETTO_API_TOKEN" \
-d status=IN_PROGRESS \
-d sport=PADEL \
-d limit=10Respuesta
{
"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 }
}Las filas de data son objetos de torneo completos — la misma forma que devuelve
getTournament — menos las relaciones, ya que
este endpoint no popula nada por defecto.
Consejos y trampas
- Los borradores y archivados vienen incluidos. Sin filtro
statusobtienes también torneosDRAFTyARCHIVED. Una franja pública de "qué hay" casi siempre quierestatus=IN_PROGRESSmásstatus=UPCOMING— dos llamadas, ya questatustoma un solo valor. isPublic: falseigual se devuelve. Te dice que el organizador apagó la página pública; la API no filtra por eso. Si estás replicando el sitio público, salta esas filas por tu cuenta.- Los torneos personales son invisibles. Solo aparecen los torneos ligados a tu organización. Si falta un torneo que esperabas, probablemente pertenece a un usuario y no a la organización.
- No popules aquí.
clubes la única relación permitida, y en una página de 100 filas son 100 joins. Mejor trae el club una vez congetTournament. - Pagina con
limit=100para las exportaciones, y elimina duplicados poridx— consulta Paginación. - El orden es
startDatedescendente, así que "el torneo actual" suele serdata[0]cuando filtras porstatus=IN_PROGRESS.
Relacionado
- Obtener un torneo — la llamada de detalle.
- Paginación — recorrer un archivo completo.
- Referencia:
listTournaments.
Herramienta MCP: list_tournaments
Límites de uso
120 peticiones por 60 segundos por token, un segundo techo por IP, las cabeceras de respuesta X-RateLimit, cómo aplicar backoff ante un 429, y cómo las peticiones condicionales con ETag ahorran ancho de banda.
Obtener un torneo
Usa GET /v1/external/tournaments/{idx} para leer un torneo e incrustar su club, categorías, rondas, patrocinadores, circuito y reglas de desempate con populate.