SETTO API

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ámetroTipoPor defectoNotas
statusenumDRAFT, UPCOMING, IN_PROGRESS, COMPLETED, ARCHIVED
sportenumPADEL, TENNIS, PICKLEBALL
populatelista(ninguno)Aquí solo se permite club
limitentero251100
offsetentero00 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=10

Respuesta

200 OK (una fila, recortada)
{
  "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 status obtienes también torneos DRAFT y ARCHIVED. Una franja pública de "qué hay" casi siempre quiere status=IN_PROGRESS más status=UPCOMING — dos llamadas, ya que status toma un solo valor.
  • isPublic: false igual 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í. club es la única relación permitida, y en una página de 100 filas son 100 joins. Mejor trae el club una vez con getTournament.
  • Pagina con limit=100 para las exportaciones, y elimina duplicados por idx — consulta Paginación.
  • El orden es startDate descendente, así que "el torneo actual" suele ser data[0] cuando filtras por status=IN_PROGRESS.

Relacionado

Herramienta MCP: list_tournaments

En esta página