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:
| Strategy | Description |
|---|---|
placement_based | Points awarded by finish position (1st, 2nd, 3rd…) |
linear | Fixed points per position, decreasing by a set amount |
exponential | Points decrease exponentially — rewards top finishes heavily |
logarithmic | Points decrease logarithmically as position drops |
proportional | Points scaled proportionally to performance |
performance_based | Points driven by in-match performance metrics rather than finish position alone |
win_loss | Points awarded per win/loss record |
winner_takes_all | Only the top finisher earns points |
swiss_system | Points accumulate across Swiss-paired rounds |
round_robin | Points accumulate across round-robin results |
elimination | Points awarded based on the round reached in an elimination bracket |
streak_based | Bonus points for consecutive wins |
custom | Organizer-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®ion=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 createdcircuit.season.started— a new season has beguncircuit.season.completed— a season concludes and standings are finalized
Was this helpful?
