TOURNAMENTSUITE
TOURNAMENTSUITE
Developer Documentation
Core ConceptsProjects & CredentialsTournamentsParticipantsMatchesCircuitsThe Data API: Public Read-Only AccessAnti-Cheat Integration API
Core Concepts

Circuits

How circuits link multiple tournaments into a season with cumulative standings on Tournament Suite.

A circuit is a competitive series that spans multiple tournaments. Participants earn points in each tournament according to a configured scoring system, and those points accumulate into a season-wide leaderboard called standings.

Circuits are useful for league operators, publishers, and studios that run recurring competitive programs — for example, a monthly tournament series leading to an annual championship.

Circuit structure

Circuit
└── Season
    ├── Tournament A  →  Points
    ├── Tournament B  →  Points
    └── Tournament C  →  Points
                └── Standings (cumulative)

A circuit has one or more seasons. Each season has a start and end date, a set of contributing tournaments, and a point scoring configuration. At the end of a season, standings are finalized and can be used to determine championship qualifiers.

Scoring strategies

When you configure a circuit, you choose how points are awarded. The API accepts lowercase snake_case strategy values:

StrategyDescription
placement_basedPoints awarded by finish position (1st, 2nd, 3rd…)
linearFixed points per position, decreasing by a set amount
exponentialPoints decrease exponentially — rewards top finishes heavily
logarithmicPoints decrease logarithmically as position drops
proportionalPoints scaled proportionally to performance
performance_basedPoints driven by in-match performance metrics rather than finish position alone
win_lossPoints awarded per win/loss record
winner_takes_allOnly the top finisher earns points
swiss_systemPoints accumulate across Swiss-paired rounds
round_robinPoints accumulate across round-robin results
eliminationPoints awarded based on the round reached in an elimination bracket
streak_basedBonus points for consecutive wins
customOrganizer-defined scoring logic

Example placement configuration:

{
  "strategy": "placement_based",
  "placements": {
    "1": 100,
    "2": 75,
    "3": 60,
    "4-8": 40,
    "9-16": 20
  }
}

Key endpoints

Circuit management is authenticated with an organizer or admin account (an Authorization: Bearer access token carrying the circuit_organizer or admin role) rather than a project API key — circuits are not part of the API-key-based Data API. A number of read-only endpoints are public and require no authentication at all.

Discover public circuits

GET /api/v1/circuits/public/active?disciplineSlug=valorant&region=north-america&limit=10

No authentication required. Returns publicly visible active circuits, optionally filtered by discipline slug and region.

Circuits can also be listed and filtered directly — including by status, discipline, region, tier, or organizer — without authentication:

GET /api/v1/circuits?organizerId=YOUR_ORGANIZER_ID&status=draft

Use the organizerId filter to find circuits belonging to a specific organizer, including drafts.

Get circuit standings

GET /api/v1/circuits/:circuitId/standings
Authorization: Bearer YOUR_ACCESS_TOKEN

Returns the current ranked list of participants with their accumulated points, wins, and rank. A public, unauthenticated equivalent is available at GET /api/v1/circuits/:circuitId/standings/public.

Get season details

GET /api/v1/circuits/:circuitId/seasons/:id
Authorization: Bearer YOUR_ACCESS_TOKEN

Classify a tournament into a circuit

Once a tournament completes, its results can be classified into a circuit to award points. The circuit is identified in the request body, not the URL:

POST /api/v1/circuit/v2/tournaments/:id/classify
Authorization: Bearer YOUR_ACCESS_TOKEN
Content-Type: application/json

{
  "circuitId": "5756452414364442624",
  "seasonId": "5617559294676615168",
  "pointsMultiplier": 1.5
}

circuitId is required; seasonId, regionId, tierId, and pointsMultiplier are optional. pointsMultiplier scales the base points — useful for giving "major" tournaments higher weight in the standings.

Sponsors

Circuits can carry their own sponsorships, separate from tournament-level sponsors. Organizers create, list, update, and remove sponsors on a circuit, upload a sponsor logo, and reorder sponsor display positions — all under /api/v1/circuits/:circuitId/sponsors. A sponsor performance analytics endpoint (GET /api/v1/circuits/:circuitId/sponsors/analytics/performance) reports exposure across the circuit's tournaments. The public GET /api/v1/circuits/:id/sponsors endpoint returns a circuit's sponsors without authentication.

Tiers, regions, and qualification

A circuit can be organized into tiers — skill-based divisions (for example, Open, Contender, Elite) that each maintain their own ranking pool, under /api/v1/circuits/:circuitId/tiers. A tournament's tier assignment (set at classification time via tierId) affects how its results weigh toward circuit standings and which qualification path its participants follow.

Circuits can also be split into regions for geographically structured competition, under /api/v1/circuits/:circuitId/regions. A tournament can be classified into a specific region via the regionId field on the classification request.

Qualification status — who has met the cutoff to advance or qualify for a championship — is available without authentication:

GET /api/v1/circuits/:id/qualification

Promotion and relegation

For tiered circuits, Tournament Suite supports promotion and relegation between tiers at the end of a season: top performers in a tier move up, bottom performers move down. The system supports optional promotion/relegation playoffs, protection rules (for example, newcomer or recently-promoted protection), and an appeal process for contested movements. This is configured as part of a circuit's tier settings and runs as part of season-end processing.

Real-time standings

Subscribe to circuit events via Webhooks:

  • circuit.created — a new circuit is created
  • circuit.season.started — a new season has begun
  • circuit.season.completed — a season concludes and standings are finalized

Was this helpful?

Matches

How matches are created, played, and resolved in Tournament Suite.

The Data API: Public Read-Only Access

What the public Data API is, the resources it exposes, and how it differs from the tournament-management endpoints described elsewhere in these docs.

On this page

Circuit structureScoring strategiesKey endpointsDiscover public circuitsGet circuit standingsGet season detailsClassify a tournament into a circuitSponsorsTiers, regions, and qualificationPromotion and relegationReal-time standings