Skip to main content

Overview

GZCTF uses a team-based system for CTF participation. Users can create teams, join existing teams, or play solo (as a team of one). Teams are required to participate in games.

Creating a Team

Each user can create up to 3 teams where they are the captain.
1

Navigate to Teams

Go to the Teams section in your user dashboard.
2

Create New Team

Click “Create Team” and provide:
  • Team Name: Your team’s display name (required)
  • Bio: Optional team description
Team names must be unique across the platform.
3

Team Created

You’ll be automatically set as the team captain and can now:
  • Invite members
  • Update team information
  • Register for games
You cannot create more than 3 teams. If you’ve reached the limit, you must delete an existing team or transfer ownership first.

Joining a Team

There are two ways to join an existing team:
Team captains can share an invitation code with you.

Invitation Code Format

TeamName:123:a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
The code contains:
  • Team name
  • Team ID
  • Invitation token (32-character hash)

Joining Process

1

Get Invitation Code

Receive the invitation code from the team captain.
2

Accept Invitation

Go to Teams → Join Team and paste the invitation code.
3

Join Team

Click “Join” to become a team member immediately.
You’ll see a success message: “Successfully joined [Team Name]”
  • You cannot join a team you’re already a member of
  • The invitation token must match the current valid token
  • Team captains can regenerate tokens to invalidate old invitations

Team Management

As Team Captain

Team captains have full control over their teams:

Get Invitation Code

GET /api/Team/{teamId}/Invite
Retrieve the current invitation code to share with potential members.

Regenerate Invitation Token

PUT /api/Team/{teamId}/Invite
Generate a new invitation token, invalidating all previous invitation codes.
Use this to revoke outstanding invitations or enhance security.

Update Team Information

  • Team Name: Rename your team
  • Bio: Update team description
  • Avatar: Upload team logo (max 3MB, resized to 300x300)

Kick Members

Remove members from your team:
You cannot kick members while the team is locked during an active game.
POST /api/Team/{teamId}/Kick/{userId}

Transfer Ownership

Transfer team captain status to another member:
1

Select New Captain

Choose a current team member to become the new captain.
2

Verify Eligibility

The new captain must have fewer than 3 teams where they are captain.
3

Complete Transfer

Ownership is transferred immediately and cannot be undone.
You will no longer have captain privileges after the transfer.

Delete Team

Permanently delete your team:
  • You cannot delete a team during an active game
  • This action cannot be undone
  • All team data and participation history will be removed

As Team Member

Leave Team

You can leave any team you’re a member of:
POST /api/Team/{teamId}/Leave
You cannot leave a team that’s locked during an active game.

View Team Information

Access your team details:
  • Team members and their roles
  • Team statistics
  • Participation history

Team Locking

Teams become locked during active game participation:
  • Locked Status: Team roster cannot be modified
  • Triggers: Joining a game with accepted participation
  • Restrictions:
    • Cannot kick members
    • Cannot leave team
    • Cannot delete team
Locking prevents roster changes during competition to ensure fairness.

Team Limits

LimitValue
Teams per user (as captain)3
Team name lengthVariable
Team bio lengthVariable
Avatar file size3 MB
Members per teamNo hard limit*
*Game-specific member limits may apply when joining competitions. See Participating in Games.

Common Issues

”You have exceeded the team creation limit”

Solution: You can only create 3 teams. Delete an existing team or transfer ownership to free up a slot.

”Team is locked”

Solution: Wait until the active game ends. Teams are locked during competition.

”Invalid invitation code”

Causes:
  • Invitation token was regenerated
  • Code was copied incorrectly
  • Team no longer exists
Solution: Request a new invitation code from the team captain.

”User not in team”

Solution: Verify you’re a member of the team before attempting team operations.

API Reference

Team operations are available at /api/Team/*. See TeamController.cs for implementation details.

Key Endpoints

  • POST /api/Team - Create team (TeamController.cs:76-116)
  • POST /api/Team/Accept - Join team via invitation (TeamController.cs:352-417)
  • PUT /api/Team/{id} - Update team info (TeamController.cs:120-155)
  • GET /api/Team/{id}/Invite - Get invitation code (TeamController.cs:217-247)
  • POST /api/Team/{id}/Kick/{userId} - Remove member (TeamController.cs:287-346)
  • POST /api/Team/{id}/Leave - Leave team (TeamController.cs:420-472)
  • DELETE /api/Team/{id} - Delete team (TeamController.cs:528-565)

Build docs developers (and LLMs) love