v20

latestOpenAPI 3.1.0raw.githubusercontent.com2026-08-011984401.2 MB
Tournament: Lifecycle

Start a tournament

Seeds the participants, generates the bracket structure and moves the tournament to IN_PROGRESS. ASYNCHRONOUS: this answers 202 and RETURNS BEFORE ANY MATCH EXISTS. The actual matches are generated by a background scheduler chain that runs after the response, and that chain can partially fail - it gives a node ONE attempt and then moves on, so a 202 is not a promise that every match will appear. Poll GET /tournaments/{identifier}/bracket to observe real matches, and use POST /tournaments/{identifier}/regenerate-matches to re-attempt any that are missing. Preconditions: the tournament must be APPROVED and in REGISTRATION_OPEN or REGISTRATION_CLOSED, otherwise 403 error_approval_required or 400. WARNING - when check-in is required, starting REMOVES every approved participant who has not checked in, and the run is then rejected with 400 if fewer than minParticipants remain (the removals are rolled back with it). Requires an API key holding the tournaments lifecycle capability whose owner is a tournament ADMIN - a tournamentStaff MODERATOR is NOT sufficient and receives 403.

post/tournaments/{identifier}/start

Path parameters

identifierstring required

Tournament slug.

Tournament slug.

Request body

seedMethod'manual' | 'random' | 'registration' required

How to order participants into seeds. manual requires manualOrder. random is deterministic for a given tournament, not re-rollable. registration seeds by registration order.

manualOrderstring[]

Participant ids in seed order, seed 1 first. REQUIRED when seedMethod is manual. Every id must belong to this tournament (a foreign id answers 404) and duplicates are rejected. The list must still match the participant set AFTER the check-in drop below, so build it from the participants that are actually checked in.

Response

The tournament started and the bracket was created. Match generation is still in flight - poll the bracket.

acceptedtrue required

The tournament was started and the bracket structure persisted. It does NOT mean matches exist yet.

status'IN_PROGRESS' required

The lifecycle status this call set.

nodeCountinteger required

Size of the generated BRACKET STRUCTURE (nodes), not a count of playable matches and not a count of matches that will be generated. Do not use it as a completion target.

matchGeneration'pending' required

Always pending. Match generation runs asynchronously after this response and can partially fail, so there is no success value to report here.

timestampstring required