List tournaments for a game
Every tournament in the game, newest first by start date, cursor-paginated. Filter by `slug`, `tier`, `region`, `year` or `status`; the filters combine with AND. Note `status` is derived from the event's dates rather than stored, so a tournament with no `starts_at` has a null status and is excluded by any `status` filter.
Every tournament in the game, newest first by start date, cursor-paginated. Filter by slug, tier, region, year or status; the filters combine with AND. Note status is derived from the event's dates rather than stored, so a tournament with no starts_at has a null status and is excluded by any status filter.
Primary auth (live). Authorization: Bearer <api-key> — the header takes precedence over the query fallback. The raw key is hashed (SHA-256, hex) and looked up in api.keys.key_hash; the raw value is never stored.
In: header
Path Parameters
Game slug. cs2 is the only populated title today; an un-onboarded game 404s cleanly.
Query Parameters
Exact-match filter on the resource's URL slug (e.g. slug=natus-vincere), scoped to {game}. Returns the single matching row — or an empty page when nothing matches — in the standard list envelope, so it is a direct by-slug lookup that never depends on page size or the cursor position. Composes with the endpoint's other filters (AND).
upcoming | ongoing | finished (derived from dates).
Value in
- "upcoming"
- "ongoing"
- "finished"
Filter to one prestige tier: S (highest) through C. Exact match, single value.
Filter to one circuit region. Values are full names, not codes — Europe, North America, South America, Asia, CIS, Oceania, Africa. Exact match, so EU matches nothing.
Only tournaments starting in this calendar year, e.g. 2026. Accepts 2000–2100; anything else is a 400. Events with no known start date are excluded.
Page size. The default and maximum vary per endpoint — this shared definition documents the common case (default 100, max 500); each operation that differs states its own numbers. cursor carries the page position, not limit.
A value above the endpoint's maximum is silently clamped, not rejected. A missing, zero, negative or non-numeric value silently falls back to the default — so ?limit=abc and ?limit=0 both return the default page size rather than a 400. Read meta.count if you need to know how many rows you actually got.
1 <= value100Opaque forward pagination cursor — pass the previous page's meta.next_cursor verbatim. Omit for the first page. Never construct one by hand.
Response Body
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/cs2/tournaments"{ "data": [ { "id": "019f23d2-5a32-7c61-9a4e-44229bd88e7f", "game_id": "019f23d1-fb5b-7d24-935d-e4d68f6f565a", "slug": "esl-pro-league-season-25", "name": "ESL Pro League Season 25", "tier": "S", "city": null, "country_code": "SA", "region": "Asia", "prize_pool": 1250000, "prize_pool_currency": "USD", "current_stage": null, "status": "upcoming", "winner_team_id": null, "num_teams": null, "starts_at": "2027-03-06T12:31:00Z", "ends_at": "2027-03-14T12:32:00Z", "created_at": "2026-07-02T17:13:36.058928Z", "updated_at": "2026-07-25T23:06:56.921667Z" }, { "id": "019f23d2-5a32-71d4-8c59-df545efdd357", "game_id": "019f23d1-fb5b-7d24-935d-e4d68f6f565a", "slug": "pgl-major-singapore-2026", "name": "PGL Major Singapore 2026", "tier": "S", "city": null, "country_code": "SG", "region": "Asia", "prize_pool": 1250000, "prize_pool_currency": "USD", "current_stage": null, "status": "upcoming", "winner_team_id": null, "num_teams": null, "starts_at": "2026-11-25T07:00:00Z", "ends_at": "2026-12-13T21:00:00Z", "created_at": "2026-07-02T17:13:36.058928Z", "updated_at": "2026-07-25T23:06:56.921667Z" } ], "meta": { "count": 2, "next_cursor": "eyJ2IjoiMjAyNi0xMS0yNVQwNzowMDowMFoiLCJpZCI6IjAxOWYyM2QyLTVhMzItNzFkNC04YzU5LWRmNTQ1ZWZkZDM1NyJ9" }}{ "error": { "code": "not_found", "message": "not found", "request_id": "019f3d18-c15f-7319-81a7-343e8a80a578" }}{ "error": { "code": "not_found", "message": "not found", "request_id": "019f3d18-c15f-7319-81a7-343e8a80a578" }}{ "error": { "code": "not_found", "message": "not found", "request_id": "019f3d18-c15f-7319-81a7-343e8a80a578" }}