/api/v1/tournamentsList or search tournaments
With the default scope=mine this returns the tournaments the credential owns, at every visibility. With scope=public it searches published tournaments and needs no credential, which is exactly what the browse page calls.
Auth: Session or API key for scope=mine, none for scope=public
Query parameters
| Field | Type | Description |
|---|---|---|
| scope | mine | public | Defaults to mine. |
| q | string | Case-insensitive substring of the name or game. Up to 80 characters. |
| game | string | Case-insensitive substring of the game. |
| format | single_elim | double_elim | round_robin | swiss | Exact format. |
| state | pending | ready | underway | complete | cancelled | Exact lifecycle state. |
| archived | exclude | include | only | Defaults to exclude. Honoured only for scope=mine; public search never returns archived tournaments. |
| sort | recent | largest | Newest first, or most entrants first. Defaults to recent. |
| limit | integer (1 to 50) | Page size. Defaults to 24. |
| offset | integer (0 to 10000) | Rows to skip. Defaults to 0. |
Response · 200 · Matching tournaments plus the total, so a caller can page without guessing.
{
"tournaments": [
{
"id": "0f1c...",
"slug": "spring-invitational-Rk2p8Q",
"name": "Spring Invitational",
"game": "Rocket League",
"format": "double_elim",
"state": "underway",
"visibility": "public",
"participantCount": 16,
"startedAt": "2026-08-11T18:00:00.000Z",
"createdAt": "2026-08-10T09:12:41.000Z"
}
],
"total": 37,
"limit": 24,
"offset": 0
}Errors
| Status | Code | When |
|---|---|---|
| 401 | unauthorized | scope=mine without a credential. |