braket.gg BETA
EN

Getting started: your first Braket tournament

This is a hands-on walkthrough. By the end you will have an arena on Braket, branded for your game, connected to your Steam AppID, and you will have run a tournament from registration through to a resolved podium. No game code is required for this chapter; you only need a browser and your Steam account.

1. Create your arena

An arena is your studio's isolated tenant. It has a slug, a Steam AppID, and a name.

When an arena is first created its status is sandbox. In this state you can configure everything and run test tournaments with mock personas before you go live. Statuses progress sandbox to active to (if ever) suspended or archived.

2. Branding

Each arena carries its own look, stored as a JSON theme (tenants.themeJson) covering colors, fonts, logo, and links. A null theme falls back to the platform default look. You also control:

These are all set from the arena's Admin area under Site settings.

3. Steam sign-in works immediately (no keys)

Player sign-in uses Steam OpenID, which requires no API keys at all. As soon as your arena exists, players can sign in at /auth/login with their Steam account, and Braket learns their SteamID64. In your arena's local development / sandbox you can sign in as fixture personas without real Steam at all.

To show real persona names and avatars, and to unlock game-verified results and Steam trophies, you add Steam Web API keys. That is the subject of the next section; you can run a full tournament without them (mock personas or basic OpenID identity suffice), so it is fine to skip on your first pass.

4. Add your Steam keys (optional for a first run)

Two tiers of Steam Web API key exist, and they do different things:

You add these in Admin under Steam settings. When you save a key it goes straight into the encrypted vault (see Trust and data); the plaintext is never stored in the arena database. See Steam integration for exactly what each tier can and cannot do.

5. Mint a publisher key and go live

To activate real Steam integration (real personas, trophies, and game-verified results) you enter your publisher Web API key and it is verified against your AppID. Once that is in place, your arena can move from sandbox to active.

6. Run a tournament end to end

From the Admin area, create a tournament. The key settings you choose (all stored on the tournaments row) are:

Setting Field Default Meaning
Name name (required) Display title
Slug slug (required) Unique per arena; used in URLs and the API
Format format groups_playoffs World Cup (groups_playoffs) or straight knockout (playoffs_only)
Registration opens registrationOpensAt (required) When players may register
Registration closes registrationClosesAt (required) Registration cutoff
Max players maxPlayers 32 Registration cap
Group size groupSize 4 Players per round-robin group
Qualifiers per group qualifiersPerGroup 2 How many advance from each group to playoffs
Group stage starts groupStageStartsAt (required) When the group stage begins
Round duration roundDurationHours 48 Length of each match window
Allow spectators allowSpectators true Whether third parties may cast the match (from its recording)
Min players per side teamMinPlayers 1 1 for classic 1v1
Max players per side teamMaxPlayers 1 Greater than 1 for NvM team battles

Then the lifecycle proceeds through these tournament statuses: draft, registration_open, registration_closed, group_stage, playoffs, completed (or cancelled). See Tournament formats and lifecycle for the full state machine.

The end-to-end flow:

  1. Registration. Players sign in and register while the tournament is registration_open (subject to maxPlayers). You can also invite players by link, email, or Steam friend invite.
  2. Group stage. When you generate the group stage, Braket splits registrants into groups of groupSize and creates a round-robin schedule. Each match is a scheduled window [opensAt, closesAt] of length roundDurationHours.
  3. Ready up and play. Within a match window each player marks themselves ready. When both are ready and fresh, the match goes live, Braket mints a per-match session nonce, and the players play your game on Steam.
  4. Report the result. Without any game integration, one player reports the winner and score, and the opponent confirms (or disputes). Uncontested reports auto-confirm after a grace period. Admins can override anything. See Result verification: the resultSource model.
  5. Standings and qualifiers. Group standings rank players by points with tiebreakers; the top qualifiersPerGroup per group are seeded into the playoff bracket.
  6. Playoffs. Single-elimination bracket resolves down to a final. Semifinal losers meet in a small final (third-place match).
  7. Podium and trophies. The bracket resolves 1st, 2nd, and 3rd. With a publisher key, the top three receive a Steam-visible tournament trophy (Steam Inventory Service item); in mock mode a mock grant is recorded. The tournament is stamped completed and anchored to a ladder season.

7. See it over the API

Everything you just produced is immediately readable over the REST API. For example:

curl https://summergame.braket.gg/api/v1/tournaments/summer-cup | jq '.podium'

returns the resolved podium. See Public REST API reference.

8. Mint a public API key

To raise your API rate limit from 60 to 600 requests per minute and to prepare for future write scopes, mint an API key in Admin, Site settings, API keys. The full key (bk_<prefix>_<secret>) is shown once at creation and stored only as a SHA-256 hash. It is bound to your arena and ignored on any other host. Revoke it any time.

Where to go next