Teams

Team endpoints mirror the Discord signup button: the same verification, capacity, and waitlist rules apply — with an optional force flag for admin overrides.

All paths are relative to https://api.zyron.pro/api/v1/guilds/:guildId/sessions/:tournamentId. Create the tournament first — see Sessions.

List teams

GET/guilds/:guildId/sessions/:tournamentId/teams

Returns every team in the tournament, including waitlisted and withdrawn teams (see status).

json
[
  {
    "teamId": "tm_51fe09c2",
    "name": "Alpha Wolves",
    "color": "#E91E63",
    "status": "active",
    "captainDiscordId": "222222222222222222",
    "memberDiscordIds": ["222222222222222222", "555555555555555555"],
    "registeredAt": "2026-07-12T14:03:55.000Z"
  },
  {
    "teamId": "tm_82ab77d0",
    "name": "Bravo",
    "color": null,
    "status": "waitlisted",
    "captainDiscordId": "999999999999999999",
    "memberDiscordIds": ["999999999999999999"],
    "registeredAt": "2026-07-12T14:10:41.000Z"
  }
]

Register a team

POST/guilds/:guildId/sessions/:tournamentId/teams

Registers a team exactly like the Discord signup button: every member needs a verified Epic link (unless the session allows unverified players), capacity and the waitlist are honored, and the team.registered webhook fires. Returns 201 Created with the team.

FieldTypeDescription
captainDiscordIdrequiredstringThe team captain.
memberDiscordIdsstring[]Remaining members. Total size must fit the session's team format.
namestringTeam name; a default is generated if omitted.
forcebooleantrue skips the open-registration and access-role gates — for admin tooling. Verification and duplicate checks still apply.
curl -X POST https://api.zyron.pro/api/v1/guilds/123456789012345678/sessions/t_7d31e0aa9c/teams \
  -H "Authorization: Bearer zyr_your_guild_key" \
  -H "Content-Type: application/json" \
  -d '{
    "captainDiscordId": "222222222222222222",
    "memberDiscordIds": ["555555555555555555"],
    "name": "Alpha Wolves"
  }'

Same rules as the button

Update a team

PATCH/guilds/:guildId/sessions/:tournamentId/teams/:teamId
FieldTypeDescription
namestringRename the team.
colorstringTeam color in #RRGGBB format (used on the leaderboard and dropmap).
forceActivatebooleantrue promotes a waitlisted team to active, bypassing the capacity check.

Kick a team

DELETE/guilds/:guildId/sessions/:tournamentId/teams/:teamId

Removes the team from the tournament. If the waitlist has teams, the first one is promoted automatically (firing team.promoted); the kicked team gets team.kicked. See the event catalog.

Errors

400 invalid_request for a wrong team size or malformed color; 404 not_found for an unknown tournament or team; 409 conflict for duplicate signups. See Errors.