SETTO API

Create a tournament on the free plan, with its categories (needs the `manage` scope)

POST
/v1/external/tournaments

Creates a TOURNAMENT-type tournament on the free plan («Gratis»: 2 categories, 12 pairs or 24 singles players), as a draft («Borrador»), and answers it with its categories and its public link (publicUrl). Paid plans, prices and fútbol tournaments are set up in the dashboard. Every tournament starts with one category, «Categoría 1»: the first item of divisions configures it (name, modality, colour) and the others are created after it; more categories than the plan holds is a 403 DIVISION_LIMIT_REACHED before anything is written. The slug is generated from the name (change it with updateTournament). An organization token creates in its own organization; a personal API token or an OAuth access token creates in organizationIdx (an organization its user belongs to) or, without it, a personal tournament. At most 20 tournaments a day per organizer through the API (429 TOURNAMENT_CREATE_DAILY_CAP, Retry-After). Once the tournament exists, a category step that failed is reported in warnings (DIVISION_NOT_APPLIED) and the answer is still a 201: never create it again to fix it. Optional Idempotency-Key header. Recorded in «Actividad».

Authorization

apiToken
AuthorizationBearer <token>

API token (organization or personal)

In: header

Header Parameters

Idempotency-Key?string

Optional. A unique string (1-255 visible ASCII characters) per intended write, sent again unchanged when retrying THAT write: for 24 h the same key with the same request answers the first answer again (Idempotency-Replayed: true) instead of writing twice. The same key with another request is a 422 IDEMPOTENCY_KEY_REUSED; while the first still runs, a 409 IDEMPOTENCY_IN_PROGRESS (Retry-After). A 429 or a 409 TOURNAMENT_BUSY is never stored: retry with the same key.

Lengthlength <= 255

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/external/tournaments" \  -H "Content-Type: application/json" \  -d '{    "name": "Copa Primavera",    "sport": "PADEL",    "startDate": "2027-03-14",    "endDate": "2027-03-15",    "timezone": "America/Mexico_City"  }'
{  "tournament": {    "idx": "f6a7b8c9-d0e1-4234-8f5a-6b7c8d9e0f1a",    "slug": "liga-conquistadores-2026",    "name": "Liga Conquistadores 2026",    "type": "TOURNAMENT",    "sport": "PADEL",    "status": "IN_PROGRESS",    "startDate": "2026-09-12T00:00:00.000Z",    "endDate": "2026-09-14T00:00:00.000Z",    "timezone": "America/Mexico_City",    "addOneHour": false,    "matchDays": 3,    "americanoRounds": null,    "courtNames": {      "1": "Cancha Central",      "2": "Cancha 2"    },    "scheduleType": "ASSIGNED",    "isPublic": true,    "isFormatComplete": true,    "banner": "https://cdn.setto.io/banners/liga-conquistadores-2026.jpg",    "whoCanSubmit": "ADMINS_ONLY",    "resultApprovalMode": "NONE",    "displayPoints": true,    "matchdayBonusEnabled": true,    "inscriptionCost": 1200,    "totalPrize": 50000,    "standingColumns": [      {        "ordering": 1,        "type": "GAMES_WON"      }    ],    "sportSettings": {      "modality": "F7",      "extraTime": true,      "matchMinutes": 50,      "h2hRequiresCompleteSubset": true,      "forfeitScore": 3,      "fairPlayWeights": {        "yellow": 1,        "secondYellow": 3,        "directRed": 4,        "yellowThenRed": 5      }    },    "createdAt": "2026-08-01T16:40:00.000Z",    "publicUrl": "https://www.setto.io/t/liga-conquistadores-2026",    "organization": {      "idx": "e5f6a7b8-c9d0-4123-8e4f-5a6b7c8d9e0f",      "name": "Setto Padel Tour",      "slug": "setto-padel-tour"    },    "club": {      "idx": "7c1b9d2e-3f45-4a68-8b90-1c2d3e4f5a6b",      "name": "Club Deportivo Santa Fe",      "address": "Av. Vasco de Quiroga 3800",      "website": "https://clubsantafe.mx",      "image": "https://cdn.setto.io/clubs/santa-fe.png",      "location": {        "formattedAddress": "Av. Vasco de Quiroga 3800, Santa Fe, 05348 Ciudad de Mexico",        "city": "Ciudad de Mexico",        "country": "Mexico",        "lat": 19.3607,        "lng": -99.2739,        "postalCode": "05348",        "province": "CDMX"      },      "courts": [        {          "idx": "0f3a8c1e-59d4-4b2a-9c77-1b8e2d4f6a90",          "name": "Cancha 1",          "position": 1        }      ]    },    "divisions": [      {        "idx": "a7b8c9d0-e1f2-4345-8a6b-7c8d9e0f1a2b",        "name": "Primera Varonil",        "number": 1,        "color": "#1E3A8A",        "isDoubles": true,        "isVisible": true,        "price": 1200,        "minParticipants": null,        "maxParticipants": null,        "maxRegistrations": 32,        "createdAt": "2026-08-01T16:44:00.000Z",        "tournament": {          "idx": "f6a7b8c9-d0e1-4234-8f5a-6b7c8d9e0f1a"        },        "rounds": [          {            "idx": "a9b0c1d2-e3f4-4567-8a81-920314253647",            "name": "Pool Play",            "label": {              "es": "Fase de Grupos",              "en": "Group stage"            },            "type": "ROUND_ROBIN_ROUND",            "number": 1,            "isSetup": true,            "isVisible": true,            "gamesPerTeam": 3,            "gamesRequireWinners": true,            "numberOfSets": 3,            "proSets": false,            "playAllSets": false,            "pointsPerSet": 11,            "placements": [              1,              2            ],            "playEachTeamOnce": true,            "trueDoubleEliminationRound": null,            "numQualifiers": null,            "drawSize": null,            "hasNextRoundTransitioned": false,            "createdAt": "2026-08-20T10:55:00.000Z",            "division": {              "idx": "a7b8c9d0-e1f2-4345-8a6b-7c8d9e0f1a2b",              "name": "Primera Varonil"            },            "pools": [              {                "idx": "d6e7f8a9-b0c1-4234-8d5e-6f7081920314",                "name": "Grupo A",                "number": 1,                "teams": [                  {                    "idx": "b8c9d0e1-f2a3-4456-8b7c-8d9e0f1a2b3c",                    "name": "Lugo / Ramirez"                  }                ],                "standings": [                  {                    "idx": "c5d6e7f8-a9b0-4123-8c4d-5e6f70819203",                    "rank": 1,                    "awardedPoints": 250,                    "team": {                      "idx": "b8c9d0e1-f2a3-4456-8b7c-8d9e0f1a2b3c",                      "name": "Lugo / Ramirez"                    },                    "teamStats": {                      "idx": "b4c5d6e7-f8a9-4012-8b3c-4d5e6f708192",                      "points": 9,                      "wins": 3,                      "losses": 1,                      "ties": 0,                      "cancelled": 0,                      "forfeits": 0,                      "pointsFor": 24,                      "pointsAgainst": 15,                      "setsPointsFor": 7,                      "setsPointsAgainst": 3,                      "totalGamesPlayed": 4,                      "pointsDifference": 9,                      "setsPointsDifference": 4                    }                  }                ]              }            ],            "games": [              {                "idx": "a3b4c5d6-e7f8-4901-8a2b-3c4d5e6f7081",                "number": 7,                "displayNumber": 7,                "status": "FINISHED",                "time": "2026-09-12T16:00:00.000Z",                "lengthInMinutes": 90,                "courtNumber": 2,                "matchDay": 1,                "roundDetail": "Grupo A",                "scheduleNumber": 14,                "sectionNumber": 1,                "isRetirement": false,                "isDoubleForfeit": false,                "retiredTeamId": null,                "liveStartedAt": null,                "resultApprovalStatus": "PENDING",                "submittedAt": null,                "homeTeamDetails": {                  "label": "Winner of Game 3",                  "labelEs": "Ganador del juego 3",                  "teamNumber": 2,                  "poolNumber": 1,                  "poolRank": 1,                  "sourceGameNumber": 3,                  "sourceResult": "WINNER"                },                "awayTeamDetails": {                  "label": "Winner of Game 3",                  "labelEs": "Ganador del juego 3",                  "teamNumber": 2,                  "poolNumber": 1,                  "poolRank": 1,                  "sourceGameNumber": 3,                  "sourceResult": "WINNER"                },                "createdAt": "2026-08-20T11:02:00.000Z",                "homeTeam": {                  "idx": "b8c9d0e1-f2a3-4456-8b7c-8d9e0f1a2b3c",                  "name": "Lugo / Ramirez"                },                "awayTeam": {                  "idx": "b8c9d0e1-f2a3-4456-8b7c-8d9e0f1a2b3c",                  "name": "Lugo / Ramirez"                },                "winner": {                  "idx": "b8c9d0e1-f2a3-4456-8b7c-8d9e0f1a2b3c",                  "name": "Lugo / Ramirez"                },                "court": {                  "idx": "0f3a8c1e-59d4-4b2a-9c77-1b8e2d4f6a90",                  "name": "Cancha 1",                  "position": 1                },                "score": {                  "idx": "f2a3b4c5-d6e7-4890-8f1a-2b3c4d5e6f70",                  "home": 2,                  "away": 1,                  "playerPointsBalanced": null,                  "extraTime": null,                  "penalties": null,                  "decisionMethod": "REGULATION",                  "sets": [                    {                      "idx": "e1f2a3b4-c5d6-4789-8e0f-1a2b3c4d5e6f",                      "home": 6,                      "away": 4,                      "number": 1,                      "isTieBreak": false                    }                  ]                }              }            ],            "draws": [              {                "idx": "f8a9b0c1-d2e3-4456-8f70-819203142536",                "placement": 1,                "rounds": [                  {                    "idx": "e7f8a9b0-c1d2-4345-8e6f-708192031425",                    "label": "Semifinal",                    "order": 2,                    "games": [                      {                        "idx": "a3b4c5d6-e7f8-4901-8a2b-3c4d5e6f7081",                        "number": 7,                        "displayNumber": 7,                        "status": "FINISHED",                        "time": "2026-09-12T16:00:00.000Z",                        "lengthInMinutes": 90,                        "courtNumber": 2,                        "matchDay": 1,                        "roundDetail": "Grupo A",                        "scheduleNumber": 14,                        "sectionNumber": 1,                        "isRetirement": false,                        "isDoubleForfeit": false,                        "retiredTeamId": null,                        "liveStartedAt": null,                        "resultApprovalStatus": "PENDING",                        "submittedAt": null,                        "homeTeamDetails": {                          "label": "Winner of Game 3",                          "labelEs": "Ganador del juego 3",                          "teamNumber": 2,                          "poolNumber": 1,                          "poolRank": 1,                          "sourceGameNumber": 3,                          "sourceResult": "WINNER"                        },                        "awayTeamDetails": {                          "label": "Winner of Game 3",                          "labelEs": "Ganador del juego 3",                          "teamNumber": 2,                          "poolNumber": 1,                          "poolRank": 1,                          "sourceGameNumber": 3,                          "sourceResult": "WINNER"                        },                        "createdAt": "2026-08-20T11:02:00.000Z",                        "homeTeam": {                          "idx": "b8c9d0e1-f2a3-4456-8b7c-8d9e0f1a2b3c",                          "name": "Lugo / Ramirez"                        },                        "awayTeam": {                          "idx": "b8c9d0e1-f2a3-4456-8b7c-8d9e0f1a2b3c",                          "name": "Lugo / Ramirez"                        },                        "winner": {                          "idx": "b8c9d0e1-f2a3-4456-8b7c-8d9e0f1a2b3c",                          "name": "Lugo / Ramirez"                        },                        "court": {                          "idx": "0f3a8c1e-59d4-4b2a-9c77-1b8e2d4f6a90",                          "name": "Cancha 1",                          "position": 1                        },                        "score": {                          "idx": "f2a3b4c5-d6e7-4890-8f1a-2b3c4d5e6f70",                          "home": 2,                          "away": 1,                          "playerPointsBalanced": null,                          "extraTime": null,                          "penalties": null,                          "decisionMethod": "REGULATION",                          "sets": [                            {}                          ]                        }                      }                    ]                  }                ]              }            ]          }        ],        "teams": [          {            "idx": "b8c9d0e1-f2a3-4456-8b7c-8d9e0f1a2b3c",            "name": "Lugo / Ramirez",            "seed": 3,            "seedNumber": 1,            "club": "Club Deportivo Santa Fe",            "picture": "https://cdn.setto.io/teams/lugo-ramirez.png",            "description": "Campeones 2025",            "ranking": 12,            "isWildCard": false,            "qualifierStatus": "COMPETING",            "drawAssignment": "QUALIFYING",            "withdrawn": false,            "createdAt": "2026-08-01T17:30:00.000Z",            "division": {              "idx": "a7b8c9d0-e1f2-4345-8a6b-7c8d9e0f1a2b",              "name": "Primera Varonil"            },            "players": [              {                "idx": "c9d0e1f2-a3b4-4567-8c8d-9e0f1a2b3c4d",                "firstName": "Mario",                "lastName": "Lugo",                "avatar": "https://cdn.setto.io/avatars/mario-lugo.png"              }            ],            "captainProfileIdx": "c9d0e1f2-a3b4-4567-8c8d-9e0f1a2b3c4d",            "leagueTeam": {              "idx": "d0e1f2a3-b4c5-4678-8d9e-0f1a2b3c4d5e",              "name": "Club Santa Fe",              "color": "#1E3A8A",              "logo": "https://cdn.setto.io/league-teams/santa-fe.png",              "position": 1,              "pointsAdjustment": 0            }          }        ],        "circuitCategory": {          "idx": "b2c3d4e5-f6a7-4890-8b1c-2d3e4f5a6b7c",          "name": "Primera Fuerza",          "gender": "MIXED",          "color": "#1E3A8A"        }      }    ],    "sponsors": [      {        "idx": "d4e5f6a7-b8c9-4012-8345-6789abcdef01",        "name": "Bebidas del Valle",        "logoUrl": "https://cdn.setto.io/sponsors/bebidas-del-valle.png",        "websiteUrl": "https://bebidasdelvalle.mx",        "description": "Patrocinador oficial de hidratacion",        "position": 1      }    ],    "circuit": {      "idx": "a1b2c3d4-e5f6-4789-8a0b-1c2d3e4f5a6b",      "name": "Circuito Nacional de Padel",      "slug": "circuito-nacional-de-padel",      "seasonYear": 2026    },    "circuitCategory": {      "idx": "b2c3d4e5-f6a7-4890-8b1c-2d3e4f5a6b7c",      "name": "Primera Fuerza",      "gender": "MIXED",      "color": "#1E3A8A"    },    "rankedTiebreakRules": [      {        "idx": "d4e5f6a7-b8c9-4012-8d3e-4f5a6b7c8d9e",        "rank": 1,        "rule": {          "idx": "c3d4e5f6-a7b8-4901-8c2d-3e4f5a6b7c8d",          "name": "Head to head",          "acronym": "H2H"        }      }    ]  },  "plan": {    "tier": "FREE",    "maxDivisions": 2,    "teamLimit": 12  },  "warnings": [    {      "code": "PAYMENT_REVIEW",      "message": "The team has payment marks or a payment link: review its payments in the dashboard.",      "mensaje": "revisa los pagos de este equipo en el panel",      "divisionIdx": "a7b8c9d0-e1f2-4345-8a6b-7c8d9e0f1a2b",      "teamIdx": "b8c9d0e1-f2a3-4456-8b7c-8d9e0f1a2b3c",      "name": "5a varonil",      "numberOfSets": 2    }  ]}