Tournament detail
const url = 'https://foxleague.ai/api/tournaments/1';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://foxleague.ai/api/tournaments/1Returns one tournament with its participants, rounds, matches and standings. A match’s score appears once its broadcast ends. A next-round slot names its team once the match that sends the team there has finished, also while the next-round match is on air. Each Swiss round is listed once every match of the round before it has finished. In Champions FoxLeague each leg of a two-legged tie carries its own score and the aggregate adds both legs up from the seats (the home team of leg 2 is the away team of leg 1). Standings and recent form count finished matches only. The podium appears when the tournament completes.
Who: anyone. With a session:
- the creator and the invitees of a private tournament read its invite list in
whitelist; - the creator and the target of a targeted 1v1 challenge read
target_user_id; - with
wallet_addressset to your own wallet, the per-viewer fieldsuser_is_participant,user_can_join_private,user_can_join_developer,viewer_blocked_active_1v1,viewer_blocked_tournament_windowandviewer_tournament_window_opens_in_secsare filled.
Refusals:
Tournament not found: no tournament has this id.
Authorizations
Section titled “Authorizations ”- None
- session
Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”The tournament id.
Query Parameters
Section titled “Query Parameters ”Your own wallet address, the one of your session. It fills the per-viewer fields of the answer. Any other value is ignored, as is the parameter without a session.
Responses
Section titled “ Responses ”Success or a refusal: read success (the refusals are in the description).
object
A machine-readable reason next to error, set only where the caller must act differently. tx_pending: the payment was not refused but could not be verified yet; keep the transaction hash and confirm again with the same hash, never pay twice.
The answer. Present when success is true.
object
The matches, by round, then by position. A Swiss round’s matches are listed once every match of the round before it has finished.
One match of a tournament as its schedule and bracket show it.
object
Badge of the away team, named by the same rule as away_team_name; null when none.
away_elo_at_match plus this match’s rating change (away_elo_after minus away_elo_at_match is the change the match applied; it is not the player’s current rating), present once the match has finished and its rating change applied. Absent otherwise and for an older match whose away_elo_at_match is null.
The away player’s rating for this match, from the moment the match is on air and the away team is named: the player’s current rating until the result is applied after the broadcast, then the rating the match’s change was computed from; null otherwise. null too for a slot with no match (a bye) and for an older match whose rating was not recorded this way: its change is in away_elo_change.
The away player’s rating change in this match (away_elo_after minus away_elo_at_match, also for an older match that answers neither), present once the match has finished and its rating change applied. Absent otherwise.
The away team’s OVR, one decimal. Until the match’s broadcast ends (broadcast_ended_at null) it is the team’s best XI OVR: the average OVR of the strongest XI it can field from the cards it owns (no lineup choice is shown); from then on it is the team OVR of the eleven that played: the average OVR of its eleven, each card’s OVR computed from the stats the match was played with, recorded when the match started. null while the away team is not named, in a developer tournament and, once the broadcast has ended, for a walkover or a match started before the OVR was recorded.
The formation the away team’s best XI is built in (such as 4-3-3) while away_ovr is its best XI OVR, until the broadcast ends; null from then on (the OVR is then the eleven’s that played) and whenever away_ovr is null.
A finished match decided on penalties: shootout goals of the away side. null otherwise.
Goals of the away side once the match’s broadcast ends; null before. In leg 2 of a Champions FoxLeague tie: the leg’s own goals, without the score carried over from leg 1.
Champions FoxLeague: the league place drawn into the away seat, by the same rule as home_seed_place.
Away team name, by the same rule as home_team_name.
Position of the match within its round; null when none.
When the match’s broadcast ended (RFC 3339); null before.
A finished knockout match: regular, extra_time or penalties. null otherwise. In a two-legged Champions FoxLeague tie leg 1 is always regular; leg 2 goes to extra time and penalties when the aggregate is level, so its value tells how the tie was decided.
Hash of the prize payout transaction of a paid tournament, set when the tournament completes; null before and for a free tournament.
Why a finished match was decided without being played, for example a team could not field a complete squad; null unless is_forfeit is true.
A, B and so on for a group match, League for a round robin and for the league phase of Champions FoxLeague, 3rd Place for the third place match; null for knockout and Swiss matches.
Badge of the home team, named by the same rule as home_team_name; null when none.
home_elo_at_match plus this match’s rating change (home_elo_after minus home_elo_at_match is the change the match applied; it is not the player’s current rating), present once the match has finished and its rating change applied. Absent otherwise and for an older match whose home_elo_at_match is null.
The home player’s rating for this match, from the moment the match is on air and the home team is named: the player’s current rating until the result is applied after the broadcast, then the rating the match’s change was computed from; null otherwise. null too for a slot with no match (a bye) and for an older match whose rating was not recorded this way: its change is in home_elo_change.
The home player’s rating change in this match (home_elo_after minus home_elo_at_match, also for an older match that answers neither), present once the match has finished and its rating change applied. Absent otherwise.
The home team’s OVR, one decimal. Until the match’s broadcast ends (broadcast_ended_at null) it is the team’s best XI OVR: the average OVR of the strongest XI it can field from the cards it owns (no lineup choice is shown); from then on it is the team OVR of the eleven that played: the average OVR of its eleven, each card’s OVR computed from the stats the match was played with, recorded when the match started. null while the home team is not named, in a developer tournament and, once the broadcast has ended, for a walkover or a match started before the OVR was recorded.
The formation the home team’s best XI is built in (such as 4-3-3) while home_ovr is its best XI OVR, until the broadcast ends; null from then on (the OVR is then the eleven’s that played) and whenever home_ovr is null.
A finished match decided on penalties: shootout goals of the home side. null otherwise.
Goals of the home side once the match’s broadcast ends; null before. In leg 2 of a Champions FoxLeague tie: the leg’s own goals, without the score carried over from leg 1.
Champions FoxLeague: the league place drawn into the home seat when the bracket was made (both seats of a play-off match, the top-8 seat of a round of 16 match), for example 24; null on a seat that a tie fills and in every other format.
Home team name. Group, league and first-round matches name it from the start. A later match names it once the match that sends the team here has finished, also while this match is on air: after a group stage, once every match of the team’s group has finished; in Swiss, once every match of the round before has finished. In the knockout phase of Champions FoxLeague a seat drawn from a league place (a play-off seat, the top-8 seat of a round of 16 match) names its team once every league match has finished; any other knockout seat once every match of the ties that lead to it has finished. A match that has finished names both its teams. null until then. In a developer tournament, the developer team’s name.
The match’s public id: 22 URL-safe characters with no order. Watch the match, read its statistics and download its files by it: GET /api/public/tournament-match/{id}, GET /api/live/tournament-match/{id}, GET /api/replay/tournament-match/{id}, GET /api/public/tournament-match/{id}/stats, GET /api/public/tournament-match/{id}/log. No answer carries the match’s own id.
true for a seed that goes through without an opponent.
true for a finished match that was decided without being played.
true for the match that settles the prizes: the final and the third place match of a knockout phase; the last match of a round robin or Swiss tournament.
true while the match is on air. After its broadcast, true when its replay can be watched.
Champions FoxLeague: 1 or 2 for the two matches of a two-legged tie (a tie is one round_number with one bracket_position); null for a single match and in every other format. Each leg carries its own score; the aggregate adds both legs up from the seats (the home team of leg 2 is the away team of leg 1).
The lineup changes made for each side when the lineups were locked, about 30 minutes before the kickoff: a starter who could not play (injured, suspended, below the condition floor, listed for sale or saved outside his line) and the bench player who took his place. Answered once the match’s broadcast has ended; an empty list before, whatever was changed.
One lineup change made when a match’s lineups were locked: who was relieved, who took his place and why.
object
The name of the bench player who took his place. null when the card no longer exists.
The name of the starter who was relieved. null when the card no longer exists (it was fused since).
Why the starter was relieved: injured, suspended, low_condition (below the condition floor), listed (listed for sale) or out_of_line (saved in a shirt of another line).
The side the change was made for: home or away.
A match’s permanent public record on Autonomys: its CID and the gateway link.
object
The record’s CID on Autonomys Auto Drive.
The record on the public Autonomys gateway, readable without an account: https://gateway.autonomys.xyz/file/{cid}.
A match’s full replay file on Autonomys: its CID and the gateway link.
object
The replay file’s CID on Autonomys Auto Drive.
The replay file on the public Autonomys gateway, readable without an account: https://gateway.autonomys.xyz/file/{cid}.
Label of the round, for example Semifinal, Group A - Matchday 2, Matchday 3 or Round 2; null when none.
Round number, from 1.
Kickoff (RFC 3339).
The match’s state: pending before kickoff, live while it is on air, then its final state once its broadcast ends: forfeit for a match decided without being played and otherwise finished. The score shows from broadcast_ended_at on; a bye has none.
The seated teams by seed.
One seated team of a tournament.
object
Team badge: an IPFS URI or an older inline image; null when the team has none. In a developer tournament: the path of the developer team’s logo; null when it has none.
Developer tournament only: the name of the player’s verified developer team. null otherwise.
The player’s current rating.
Formation of the squad the team entered with; 4-4-2 when unknown.
Seat id; standings rows refer to it as participant_id.
Final place, 1, 2 or 3, set when the tournament completes; null otherwise.
Up to five latest results, newest first: W, D or L. A tournament match counts once its broadcast ends.
Seed number from the draw at the deadline; may be null before the draw. In Champions FoxLeague it gives the pot of the league draw: 1 to 9 pot 1, 10 to 18 pot 2, 19 to 27 pot 3, 28 to 36 pot 4 (seeded by rating at the snapshot).
The team’s OVR, one decimal: its best XI OVR, the average OVR of the strongest XI it can field from the cards it owns now (for every formation in Tactics the best card of each position for its slots, each card in its own position, the highest average kept; cards listed for sale count). The same number every page and the OVR range use. null when no card it owns fits a slot and in a developer tournament.
The formation that best XI is built in, such as 4-3-3. null with squad_ovr.
The team name; Team #<user_id> when the player has no team.
User id of the player.
Wallet of the player.
The prize split one tournament pays, in whole percents summing to 100.
object
Platform fee, in percent. Fixed when the tournament is created.
The runner-up’s share, in percent.
The third place’s share, in percent.
The winner’s share, in percent.
The rounds, by round number. A Swiss round is listed once every match of the round before it has finished.
One round of a tournament.
object
Label of the round, for example Semifinal, Group A - Matchday 2, Matchday 3 or Round 2; null when none.
Round number, from 1.
group (group stage, round robin or the league phase of Champions FoxLeague), knockout or swiss.
Scheduled time of the round (RFC 3339).
pending until the broadcast of every match of the round has ended, then finished.
The tournament id.
The group, league or Swiss table from finished matches, as GET /api/tournaments/{id}/standings answers it. null for a knockout tournament.
One team’s row in a group, league or Swiss table.
object
Matches drawn.
Goals conceded.
Goals scored.
A, B and so on for a group, League for a round robin and for the league phase of Champions FoxLeague; null for a Swiss tournament.
Id of the row.
Matches lost.
Seat id of the team: the id of its row in participants.
Finished matches played.
Points: 3 for a win, 1 for a draw, minus 1 for each match neither team could play.
The tournament id.
Matches won.
The tournament.
object
Completed 1v1 challenge rows decided on penalties: shootout goals of the away side. Absent otherwise.
Completed 1v1 challenge rows of the tournament lists: goals of the away side. Absent otherwise.
End of that reserved window (RFC 3339): one hour after the tournament’s booked play time, about 3 minutes per match without the time between games; null when there is none. This is not when the tournament ends: it can keep playing after its window for hours or days.
Start of the time window a standard tournament reserves on the schedule, one hour before kickoff (RFC 3339). No other tournament may reserve an overlapping window. null for 1v1 challenges and developer tournaments.
When the tournament was cancelled (RFC 3339); null when it was not.
1v1 challenge: the minutes it was opened for. null for a standard tournament.
When the tournament completed (RFC 3339); null before.
When the tournament was created (RFC 3339).
1v1 challenge rows of the tournament lists: the creator’s team badge. Absent otherwise.
1v1 challenge rows still to be played (not completed nor cancelled, not a developer one): the creator’s team OVR, one decimal, its best XI OVR (the average OVR of the strongest XI it can field from the cards it owns now (for every formation in Tactics the best card of each position for its slots, each card in its own position, the highest average kept; cards listed for sale count)). Absent otherwise and when no card it owns fits a slot.
The formation the creator’s best XI is built in, such as 4-3-3. Absent with creator_ovr.
1v1 challenge rows of the tournament lists: the creator’s team name. Absent otherwise.
User id of the creator (the organizer).
Registration closes at this time (RFC 3339).
Completed 1v1 challenge rows of the tournament lists: regular, extra_time or penalties. Absent otherwise.
Text written by the creator; null when none.
true when only teams with a verified developer binary may join.
Completed 1v1 challenge rows of the tournament lists: hash of the prize payout transaction. Absent otherwise.
Entry fee in whole FOXSY; 0 for a free tournament (every Bronze before the competition levels go live, a developer one always).
true for a tournament the game features: it is listed first and enters the hall of fame when it completes.
knockout, groups_knockout, round_robin, swiss or league_knockout (Champions FoxLeague: 36 teams in one league table drawn from four pots, then two-legged knockout ties up to a single-match final).
true when a match for third place is played. A Champions FoxLeague tournament always plays one, before its final.
true for a round robin where every pair of teams meets twice.
Completed 1v1 challenge rows decided on penalties: shootout goals of the home side. Absent otherwise.
Completed 1v1 challenge rows of the tournament lists: goals of the home side. Absent otherwise.
Completed 1v1 challenge rows of GET /api/tournaments: user id of the home side, to match the score to the teams (the creator is not always at home). Absent otherwise.
The tournament id.
true when only invited teams may join.
Seats. 2 for a 1v1 challenge.
Teams needed to start; with fewer at the deadline the tournament is cancelled.
1v1 challenge rows of the tournament lists: the opponent’s team badge once an opponent holds the second seat. Absent otherwise.
The opponent’s team OVR, read like creator_ovr, once an opponent holds the second seat. Absent otherwise.
The formation the opponent’s best XI is built in. Absent with opponent_ovr.
1v1 challenge rows of the tournament lists: the opponent’s team name once an opponent holds the second seat. Absent otherwise.
Tournament detail only: true when the creator runs the tournament without a seat. Absent elsewhere.
The highest best XI OVR a team may have to join, a whole number from 1 to 100. Absent when there is none. While registration is open its creator or an admin can raise it or remove it; it never drops.
The lowest best XI OVR a team may have to join, a whole number from 1 to 100. Absent when there is none. The best XI OVR is the average OVR of the strongest XI a manager can field from the cards they own; it is checked once, when a team joins. While registration is open its creator or an admin can lower it or remove it (POST /api/tournaments/{id}/ovr-range); it never rises.
Seats taken. Filled by GET /api/tournaments; null in other answers.
Minutes between one match’s kickoff and the next.
User id of the runner-up, set when the tournament completes; null before.
Id of the tournament on chain (equal to id) for a paid tournament once it is created there; null for a free tournament.
When registration closed and the draw was made (RFC 3339); null before.
Kickoff of the first match (RFC 3339).
open: registration is open. pending_sc: a paid tournament is being created on chain and cannot be joined yet. active: registration closed and the tournament is under way. completed: finished, podium set. cancelled: too few teams at the deadline or cancelled by its creator. awaiting_payment: a challenge or tournament its creator authorized with POST /api/tournaments/challenges/authorize and has not paid yet; only its creator is ever answered it.
Targeted 1v1 challenge: user id of the only opponent who may accept. Given to the creator and the target only; null for everyone else and for any other tournament.
true for a 1v1 challenge locked to one opponent. Absent otherwise.
true when you are the opponent a targeted 1v1 challenge is locked to. Absent otherwise.
User id of the third-placed team, set when the tournament completes; null before and when no third place is decided.
bronze, silver or gold. A Bronze with an entry fee (possible once the competition levels are live) is paid like Silver; one without is free.
Name of the tournament.
User id of the winner, set when the tournament completes; null before.
With wallet_address: true for a normal tournament; for a developer tournament, true when you have a verified developer binary. null without wallet_address.
With wallet_address: true for a public tournament; for a private one, true when you are invited or are the creator (not an organizer-only creator). null without wallet_address.
With wallet_address: true when you hold a seat. null without wallet_address.
1v1 challenge with wallet_address: true when you already have another open or running 1v1 challenge, so a join would be refused. null otherwise.
1v1 challenge with wallet_address: true when a join would be refused: from an hour before a tournament or challenge match of yours until its result is out; from an hour before your group’s last kickoff until the group’s results are out; from an hour before your Swiss round match until all the round’s results are out. false when you already hold a seat in this challenge. null otherwise.
1v1 challenge with wallet_address: the seconds until viewer_blocked_tournament_window can turn true, read from the same matches and from a tournament you registered for that has not started yet (it can block you from the moment its registration closes, when it starts within the hour after that); zero or less while it is true. null when viewer_blocked_tournament_window is null or you already hold a seat in this challenge. Also null when nothing of yours would block a join.
The teams invited to a private tournament, given to its creator and its invitees. An empty list for everyone else and for a public tournament.
One team invited to a private tournament.
object
The invited team’s badge: an IPFS URI or an older inline image; null when none.
The invited player’s team name; null when the player has no team.
User id of the invited player.
Why the request was refused, in plain words. Present when success is false.
true when the request did what it asked. false is a refusal: read error.
Example
{ "data": { "matches": [ { "away_badge": "ipfs://bafkreim6p4g37ztnovmizwdiaeq3kdfyspsc5lkr4aqxvupctnw", "away_elo_after": 1288, "away_elo_at_match": 1302, "away_elo_change": -14, "away_ovr": 50.1, "away_ovr_formation": null, "away_penalty": null, "away_score": 1, "away_seed_place": null, "away_team_name": "North Gate", "bracket_position": 0, "broadcast_ended_at": "2026-10-02T17:09:12Z", "decided_by": "regular", "distribute_tx_hash": null, "forfeit_reason": null, "group_name": null, "home_badge": "ipfs://bafkreij7ufrdl3erbfqfoeqh5av2ricphkqdlmttns4lrwbqcab", "home_elo_after": 1284, "home_elo_at_match": 1270, "home_elo_change": 14, "home_ovr": 52.6, "home_ovr_formation": null, "home_penalty": null, "home_score": 2, "home_seed_place": null, "home_team_name": "Harbor Foxes", "id": "b8HcT0vW3qLs-Jm6Nd2yUe", "is_bye": false, "is_forfeit": false, "is_prize_deciding": false, "is_watchable": true, "leg": null, "lock_swaps": [ { "in_name": "Dan Petrescu", "out_name": "Maximiliano Romero", "reason": "injured", "side": "home" } ], "round_label": "Semifinal", "round_number": 1, "scheduled_at": "2026-10-02T17:00:00Z", "status": "finished" }, { "away_badge": "ipfs://bafkrei7qa5efe6qeqpno57ye6scmejvqtia6d7rgn7ss555hmtf", "away_elo_at_match": null, "away_ovr": 50.1, "away_ovr_formation": "4-4-2", "away_penalty": null, "away_score": null, "away_seed_place": null, "away_team_name": "Copper Valley", "bracket_position": 1, "broadcast_ended_at": null, "decided_by": null, "distribute_tx_hash": null, "forfeit_reason": null, "group_name": null, "home_badge": "ipfs://bafkreilavyf6rmpafqfjzczbttofjyu7jsjc3ibofbcixgy4dbp", "home_elo_at_match": null, "home_ovr": 52.6, "home_ovr_formation": "4-3-3", "home_penalty": null, "home_score": null, "home_seed_place": null, "home_team_name": "Ember Town", "id": "Lp5zXa9_Gf1Kr7Qw2Ve8Tm", "is_bye": false, "is_forfeit": false, "is_prize_deciding": false, "is_watchable": false, "leg": null, "lock_swaps": [], "round_label": "Semifinal", "round_number": 1, "scheduled_at": "2026-10-02T17:30:00Z", "status": "pending" }, { "away_badge": null, "away_elo_at_match": null, "away_ovr": null, "away_ovr_formation": null, "away_penalty": null, "away_score": null, "away_seed_place": null, "away_team_name": null, "bracket_position": 0, "broadcast_ended_at": null, "decided_by": null, "distribute_tx_hash": null, "forfeit_reason": null, "group_name": null, "home_badge": "ipfs://bafkreij7ufrdl3erbfqfoeqh5av2ricphkqdlmttns4lrwbqcab", "home_elo_at_match": null, "home_ovr": 52.6, "home_ovr_formation": "4-3-3", "home_penalty": null, "home_score": null, "home_seed_place": null, "home_team_name": "Harbor Foxes", "id": "Zt3Mn6Bq-Hy0Wc8Ja4Ls1d", "is_bye": false, "is_forfeit": false, "is_prize_deciding": true, "is_watchable": false, "leg": null, "lock_swaps": [], "round_label": "Final", "round_number": 2, "scheduled_at": "2026-10-02T18:00:00Z", "status": "pending" } ], "participants": [ { "badge": "ipfs://bafkreij7ufrdl3erbfqfoeqh5av2ricphkqdlmttns4lrwbqcab", "dev_team_name": null, "elo_rating": 1284, "formation": "4-3-3", "id": 2201, "placement": null, "recent_form": [ "W", "W", "D", "L", "W" ], "seed": 1, "squad_ovr": 61.4, "squad_ovr_formation": "4-3-3", "team_name": "Harbor Foxes", "user_id": 57, "wallet_address": "erd15feryxhrdz9m6y09mr8wrerwzgj6f8ntxvhxyrdlm5aahn0t09nl4ujy86" }, { "badge": "ipfs://bafkreim6p4g37ztnovmizwdiaeq3kdfyspsc5lkr4aqxvupctnw", "dev_team_name": null, "elo_rating": 1288, "formation": "4-4-2", "id": 2202, "placement": null, "recent_form": [ "L", "W", "W", "W", "D" ], "seed": 2, "squad_ovr": 63.2, "squad_ovr_formation": "4-4-2", "team_name": "North Gate", "user_id": 61, "wallet_address": "erd124fl6zy54klay937yrnujckpak28lrdjg0eel92ue3gm36kcwf9tfwwqlt" }, { "badge": "ipfs://bafkreilavyf6rmpafqfjzczbttofjyu7jsjc3ibofbcixgy4dbp", "dev_team_name": null, "elo_rating": 1190, "formation": "4-3-3", "id": 2203, "placement": null, "recent_form": [ "D", "L", "W" ], "seed": 3, "squad_ovr": 58.7, "squad_ovr_formation": "5-3-2", "team_name": "Ember Town", "user_id": 73, "wallet_address": "erd1sjqf6h5graeeeex7ervydu284rxqfxhpydcfskh788la77n9fx4s72pdhf" }, { "badge": "ipfs://bafkrei7qa5efe6qeqpno57ye6scmejvqtia6d7rgn7ss555hmtf", "dev_team_name": null, "elo_rating": 1225, "formation": "3-5-2", "id": 2204, "placement": null, "recent_form": [ "W", "L", "L", "W", "W" ], "seed": 4, "squad_ovr": 60.1, "squad_ovr_formation": "4-2-3-1", "team_name": "Copper Valley", "user_id": 88, "wallet_address": "erd1pn9sh2kw4wv0ewvlkpp37svkukh9wxw7v4d7q7k98cv7tm49eae922gpfa" } ], "rounds": [ { "round_label": "Semifinal", "round_number": 1, "round_type": "knockout", "scheduled_at": "2026-10-02T17:00:00Z", "status": "pending", "tournament_id": 398 }, { "round_label": "Final", "round_number": 2, "round_type": "knockout", "scheduled_at": "2026-10-02T18:00:00Z", "status": "pending", "tournament_id": 398 } ], "standings": null, "tournament": { "blocking_window_end": "2026-10-02T18:12:00Z", "blocking_window_start": "2026-10-02T16:00:00Z", "cancelled_at": null, "challenge_deadline_minutes": null, "completed_at": null, "created_at": "2026-09-29T08:03:11Z", "creator_user_id": 73, "deadline": "2026-10-02T16:00:00Z", "description": null, "developer_mode": false, "entry_fee_foxsy": 5000, "featured": true, "format": "knockout", "has_third_place_match": false, "home_and_away": false, "id": 398, "is_private": false, "max_teams": 4, "min_teams": 4, "organizer_only": false, "participant_count": null, "round_interval_minutes": 30, "runner_up_user_id": null, "sc_tournament_id": 398, "started_at": "2026-10-02T16:00:41Z", "starts_at": "2026-10-02T17:00:00Z", "status": "active", "target_user_id": null, "third_place_user_id": null, "tier": "gold", "title": "Autumn Knockout", "winner_user_id": null }, "user_can_join_developer": null, "user_can_join_private": null, "user_is_participant": null, "viewer_blocked_active_1v1": null, "viewer_blocked_tournament_window": null, "viewer_tournament_window_opens_in_secs": null, "whitelist": [] }, "success": true}No valid session. The body is plain text: Missing Authorization header, Invalid Authorization format, Invalid session token or Session expired or invalid. Sign in again.
Example
Session expired or invalid