Participants
How players and teams register, get approved, check in, and participate in Tournament Suite tournaments.
Participants are the players or teams registered in a tournament. Tournament Suite supports both individual participants (single players) and team participants depending on the tournament's teamSize configuration.
Participant types
| Type | When used |
|---|---|
individual | teamSize = 1 — each registered user is an individual participant |
team | teamSize > 1 — participants are teams with a roster of players |
For team tournaments, one player acts as the team captain and registers on behalf of the team, submitting the roster as a list of team members. Other members can be added or swapped before check-in closes.
Registration flow
Register → (optional) organizer approval → Check in → Seed into bracket
Some tournaments require organizer approval before a registration is confirmed, and some hold surplus registrants on a reserve bench until a roster slot opens up. See Registration approval and the reserve bench below.
Register for a tournament
POST /api/v1/tournaments/:tournamentId/participants/register
Authorization: Bearer USER_ACCESS_TOKEN
Content-Type: application/json
{
"teamName": "Alpha Squad",
"teamMembers": [
{ "userId": "user-id-1", "role": "captain" },
{ "userId": "user-id-2", "role": "player" },
{ "userId": "user-id-3", "role": "player" },
{ "userId": "user-id-4", "role": "player" },
{ "userId": "user-id-5", "role": "substitute" }
]
}
For individual tournaments, no body is required — the authenticated user is registered directly. For team tournaments, teamMembers is an array of member objects (userId plus a roster role), not a plain list of user IDs.
List participants
GET /api/v1/tournaments/:tournamentId/participants
This endpoint is public and does not require authentication or an API key. Pass an Authorization: Bearer token to also receive fields scoped to the caller (for example, whether they can manage a given participant).
Registration approval and the reserve bench
By default, registration completes immediately. Organizers can instead require approval, in which case a new registration starts in a pending state until an organizer approves or rejects it:
PATCH /api/v1/tournaments/:tournamentId/registrations/:participantId/approve
PATCH /api/v1/tournaments/:tournamentId/registrations/:participantId/reject
Authorization: Bearer ORGANIZER_ACCESS_TOKEN
When a tournament fills up, the bracket is sized to its approved entrants only — additional registrants are held on a reserve bench rather than rejected outright. Organizers move entrants onto and off of the reserve bench, and promote a reserve entrant into an open roster slot, as capacity changes:
PATCH /api/v1/tournaments/:tournamentId/registrations/:participantId/waitlist
PATCH /api/v1/tournaments/:tournamentId/registrations/:participantId/promote
Authorization: Bearer ORGANIZER_ACCESS_TOKEN
Promoting a reserve entrant fails if the approved roster is already at the tournament's participant cap.
Managing your own registration
Players can view, and — depending on the tournament's settings — cancel or edit their own registration:
GET /api/v1/tournaments/:tournamentId/registrations/me
POST /api/v1/tournaments/:tournamentId/registrations/me/cancel
PATCH /api/v1/tournaments/:tournamentId/registrations/me
Authorization: Bearer USER_ACCESS_TOKEN
Cancelling and editing are each gated by an organizer-configured setting (allowCancel, allowEdit) — if the organizer has disabled one, the corresponding request is rejected.
Check-in
Check-in confirms a participant's attendance before the tournament starts. The check-in window opens and closes according to the tournament's schedule.
Self check-in
POST /api/v1/tournaments/:tournamentId/participants/checkin/me
Authorization: Bearer USER_ACCESS_TOKEN
Some tournaments require a running anti-cheat client before self check-in is allowed. If the tournament has this requirement enabled and no anti-cheat session is detected for the player, the check-in request is rejected.
Organizer check-in of a specific participant
POST /api/v1/tournaments/:tournamentId/participants/:participantId/checkin
Authorization: Bearer ORGANIZER_ACCESS_TOKEN
Participants who do not check in before the deadline may be removed from the bracket at the organizer's discretion.
Custom registration fields
Tournaments can require additional information at registration — for example, a game-specific ID like a Riot account name. These custom fields are defined by the organizer when setting up the tournament.
To discover what fields a tournament requires before attempting registration:
GET /api/v1/tournaments/:tournamentId/registration/form
The response describes the custom fields and team-size constraints for the tournament. Submit the required values in the registration request body under the customFields key. After registering, your own submitted values are available on your registration:
GET /api/v1/tournaments/:tournamentId/registrations/me
Look for customFields in the response.
Participant statuses
| Status | Description |
|---|---|
registered | Successfully registered, pending check-in |
checked_in | Confirmed attendance, eligible to be seeded |
active | Currently competing |
eliminated | No longer in the competition |
disqualified | Removed by an organizer for a rule violation |
withdrew | Voluntarily withdrew from the tournament |
no_show | Did not check in or appear for a scheduled match |
A participant's position in the bracket is tracked separately as a numeric seed field, not as a status.
Managing participants (organizer)
Organizers, moderators, and admins can remove, disqualify, or substitute participants before or during a tournament. Each of these is a distinct operation.
Remove a participant
DELETE /api/v1/tournaments/:tournamentId/participants/:participantId
Authorization: Bearer ORGANIZER_ACCESS_TOKEN
This unregisters the participant entirely.
Disqualify a participant
POST /api/v1/tournaments/:tournamentId/participants/:participantId/disqualify
Authorization: Bearer ORGANIZER_ACCESS_TOKEN
Content-Type: application/json
{
"reason": "Confirmed cheating in match 3"
}
Disqualification is tracked with a reason and is reversible:
POST /api/v1/tournaments/:tournamentId/participants/:participantId/reinstate
Authorization: Bearer ORGANIZER_ACCESS_TOKEN
Substitute a participant
For team tournaments, an organizer or moderator can swap in a different user for an existing participant slot rather than removing and re-registering the whole entry:
POST /api/v1/tournaments/:tournamentId/participants/:participantId/substitute
Authorization: Bearer ORGANIZER_ACCESS_TOKEN
Content-Type: application/json
{
"substituteUserId": "user-id-6",
"reason": "Original player unavailable"
}
All of the endpoints in this section require an authenticated organizer, moderator, or admin role — they are not accessible with an API key.
Was this helpful?
