Inicio rápido
Crea un token de API de organización en el panel de SETTO y haz tus primeras tres peticiones a la API externa con curl, JavaScript o Python.
Esta página te lleva de cero a un payload de torneo en cinco minutos: crea un
token en el panel de organizador de SETTO, confírmalo con
GET /v1/external/me, lista tus torneos y luego trae un torneo con sus
categorías incrustadas. Cada petición es un GET simple con una cabecera
Authorization: Bearer — sin SDK, sin baile de OAuth, sin client secret.
Antes de empezar
Necesitas una organización en SETTO y haberla creado tú o tener el rol
ADMIN en ella. Los torneos personales — los que no están ligados a una
organización — no son accesibles a través de esta API.
Crea un token de API
En app.setto.io, abre Organización, elige tu
organización y ve a la pestaña API. Selecciona Crear token, ponle un
nombre que reconozcas después (Website widget, Season export, …),
opcionalmente elige una expiración de 30, 90 o 365 días, y confirma.
El secreto se muestra exactamente una vez
SETTO guarda solo un hash del token. El valor completo setto_live_… aparece
en el diálogo justo después de crearlo y nunca más — cópialo a tu gestor de
secretos antes de cerrarlo. Si lo pierdes, revoca el token y crea uno nuevo.
Una organización puede tener hasta 10 tokens activos. Todos los tokens son
de solo lectura (scopes: ["read"]) y se pueden revocar en cualquier momento
desde esa misma pestaña.
Confirma el token
GET /v1/external/me es la forma más barata de comprobar que un token
funciona. Te dice a qué organización pertenece el token, cuándo se creó, cuándo
expira y cuál es tu límite de uso.
export SETTO_API_TOKEN="setto_live_YOUR_TOKEN_HERE"
curl -s https://api.setto.io/v1/external/me \
-H "Authorization: Bearer $SETTO_API_TOKEN"{
"organization": {
"idx": "6f1d9c2e-4a7b-4f3d-9d2c-8b5e1a0f7c43",
"name": "Club Padel Monterrey",
"slug": "club-padel-monterrey",
"avatar": "https://cdn.setto.io/organizations/club-padel-monterrey.png",
"website": "https://clubpadelmty.mx"
},
"token": {
"idx": "b8e3f107-5c92-4d6a-8e71-0a4c9d2b3f65",
"name": "Website widget",
"prefix": "setto_live_9f2ca",
"scopes": ["read"],
"createdAt": "2026-09-01T16:04:22.113Z",
"expiresAt": null,
"lastUsedAt": "2026-09-17T09:12:44.005Z"
},
"rateLimit": { "limit": 120, "windowSeconds": 60 }
}Un 401 aquí significa que falta la cabecera o que el token es incorrecto —
consulta Errores.
Lista tus torneos
GET /v1/external/tournaments devuelve una página de torneos ordenados por
startDate descendente, del más reciente al más antiguo.
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=5{
"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",
"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": 5, "offset": 0, "total": 1 }
}Guarda el idx — es el identificador que toman todos los demás endpoints.
Trae un torneo con sus categorías
Las relaciones son opcionales. Pídelas con populate, una lista separada por
comas. GET /v1/external/tournaments/{idx} usa por defecto club,divisions;
pedir solo divisions mantiene el payload pequeño.
curl -s -G \
https://api.setto.io/v1/external/tournaments/3c9b7f52-6d41-4a8e-b1f0-2e7d5c9a4b18 \
-H "Authorization: Bearer $SETTO_API_TOKEN" \
-d populate=divisions{
"idx": "3c9b7f52-6d41-4a8e-b1f0-2e7d5c9a4b18",
"slug": "torneo-apertura-2026",
"name": "Torneo Apertura 2026",
"type": "TOURNAMENT",
"sport": "PADEL",
"status": "IN_PROGRESS",
"publicUrl": "https://www.setto.io/t/torneo-apertura-2026",
"divisions": [
{
"idx": "7b2f4d16-9c83-4e50-a7d1-3f6c8b204e59",
"name": "Cuarta Fuerza Varonil",
"number": 1,
"color": "#2563eb",
"isDoubles": true,
"isVisible": true,
"price": 900,
"tournament": { "idx": "3c9b7f52-6d41-4a8e-b1f0-2e7d5c9a4b18" }
}
]
}Siguientes pasos
- Populate — la lista exacta de relaciones por endpoint y por qué una ruta anidada necesita a sus padres.
- Obtener una ronda — grupos, clasificación, partidos y cuadros en una sola petición. Es el endpoint donde la mayoría de las integraciones pasan su tiempo.
- Límites de uso — 120 peticiones por minuto por token, y un segundo techo de 300 peticiones por minuto por IP.
- Referencia de la API — cada parámetro, con un panel Try it donde puedes pegar un token.
API externa de SETTO
Una API HTTP de solo lectura que permite a un organizador llevar sus torneos, categorías, equipos, rondas, partidos y clasificaciones de SETTO a un sitio web, una hoja de cálculo o un agente de IA.
Autenticación
Cómo funcionan los tokens de API de SETTO — la cabecera bearer, los prefijos live y test, el alcance por organización, expiración, rotación y revocación, y la diferencia entre 401 y 403.