API

Public API endpoints for tournament data, pick/bans, and leaderboard integration.

Brackets

Query flags for showing tournament brackets in broadcast setups.

Streamer Mode

Hides the nav, footer, buttons and page background so the bracket renders transparent for overlaying in broadcast software. Click anywhere to exit.

/tournament/[id]/brackets?stream-mode=1

Bracket Filter

Shows only the bracket whose name matches. Matching is exact and case-insensitive, ignoring leading/trailing spaces; other brackets are hidden.

/tournament/[id]/brackets?bracket-name=Bracket%202

Combine with streamer mode using &:

/tournament/[id]/brackets?stream-mode=1&bracket-name=Bracket%202

GET /api/tournament

Returns all admin-created tournaments.

Append ?format=json or ?format=xml to control response format (default: JSON).

[
  {
    "id": "string",
    "name": "string",
    "description": "string | null",
    "date": "string | null",
    "playersPerTeam": "number",
    "subsPerTeam": "number",
    "registerByDate": "string | null",
    "rules": "string | null",
    "brackets": "array",
    "createdBy": "string | null",
    "isAdminCreated": "boolean",
    "createdAt": "string",
    "updatedAt": "string"
  }
]

GET /api/tournament/[id]

Returns a tournament by its ID.

Append ?format=json or ?format=xml to control response format (default: JSON).

{
  "id": "string",
  "name": "string",
  "description": "string | null",
  "date": "string | null",
  "playersPerTeam": "number",
  "brackets": [
    {
      "id": "string",
      "name": "string",
      "rounds": [
        {
          "id": "string",
          "name": "string",
          "format": "string | null",
          "notes": "string | null",
          "scorePrefix": "string | null",
          "linkedBracketId": "string | null",
          "advance": "winner | loser | null",
          "matches": [
            {
              "id": "string",
              "teams": [
                {
                  "id": "string",
                  "name": "string",
                  "score": "number"
                },
                {
                  "id": "string",
                  "name": "string",
                  "score": "number"
                }
              ]
            }
          ]
        }
      ]
    }
  ],
  "createdAt": "string"
}

Returns 404 with {"error":"not found"} if the tournament does not exist.

GET /api/tournament/[id]/teams

Returns all accepted (approved) teams registered for a tournament.

Append ?format=json or ?format=xml to control response format (default: JSON).

[
  {
    "id": "string",
    "name": "string",
    "captainId": "string",
    "createdAt": "string",
    "members": [
      {
        "id": "string",
        "userId": "string | null",
        "discordId": "string | null",
        "embarkid": "string | null",
        "isSub": "boolean",
        "joinedAt": "string | null"
      }
    ]
  }
]

Returns 404 with {"error":"not found"} if the tournament does not exist.

GET /api/tournament/[id]/table

Returns bracket data as a flat table — one row per round with columns for each team and their score. Designed for importing into broadcast tools like vMix via the XML format.

Append ?format=json or ?format=xml to control response format (default: JSON).

[
  {
    "Round": "Bracket Name - Round Name",
    "T1": "Team Name",
    "T1Score": "0",
    "T2": "Team Name",
    "T2Score": "0",
    "T3": "Team Name",
    "T3Score": "0",
    "T4": "Team Name",
    "T4Score": "0"
  }
]

Returns 404 with {"error":"not found"} if the tournament does not exist.

GET /api/pick-bans/[id]

Returns the pick/ban (veto) state for a match series.

Append ?format=json or ?format=xml to control response format (default: JSON).

{
  "title": "string",
  "status": "pending | active | completed",
  "stage": "string",
  "turnTimer": "string",
  "teams": [
    "string",
    "string"
  ],
  "picks": [
    {
      "map": "string",
      "image": "string | null",
      "variant": "string | null",
      "by": "string | null"
    }
  ],
  "bans": [
    {
      "map": "string",
      "image": "string | null",
      "by": "string | null"
    }
  ],
  "available": [
    {
      "name": "string",
      "image": "string"
    }
  ],
  "decider": "{ name: 'string', image: 'string' } | null"
}

Returns 404 with {"error":"Match not found"} if the match does not exist.

Leaderboards

Competitive rankings are sourced from the independent leaderboard API.

api.the-finals-leaderboard.com