Listar torneos
Usa GET /v1/external/tournaments para encontrar los torneos que alcanza tu token, 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 "mis torneos" 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, FUTBOL |
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.
El campo cuya forma depende del deporte es sportSettings: un torneo FUTBOL
lleva ahí un objeto, y los torneos de PADEL, TENNIS y PICKLEBALL llevan
null. standingColumns también sigue al deporte: una fila de FUTBOL puede
listar GOALS_FOR, GOALS_AGAINST y GOAL_DIFFERENCE, que nunca aparecen en
un torneo de raqueta (consulta
Modelo de datos).
{
"sport": "FUTBOL",
"type": "TOURNAMENT",
"sportSettings": {
"modality": "F7",
"extraTime": true,
"matchMinutes": 50,
"h2hRequiresCompleteSubset": true,
"forfeitScore": 3,
"fairPlayWeights": null
}
}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. sport=FUTBOLselecciona los torneos de fútbol. Esas filas siempre llevantype: "TOURNAMENT"y unsportSettingsno nulo, inscriben equipos en lugar de parejas, y nunca forman parte de un circuito. Trata el enum como abierto: deja pasar unsportque no reconozcas en lugar de lanzar un error.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.- Lo que trae la lista depende del token. Un token de organización lista los
torneos de esa organización (incluidos los compartidos con ella); un token
personal lista todos los torneos que su dueño administra hoy, incluidos los
personales. Si falta un torneo que esperabas en la lista de un token de
organización, probablemente pertenece a un usuario y no a la organización:
usa un token personal para alcanzarlo. Con un token personal, la
organizationde cada fila es la organización principal del torneo, onullpara un torneo personal. - 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.