Your pending League + Knockout invitations
const url = 'https://foxleague.ai/api/tournaments/invitations';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
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/invitations \ --header 'Authorization: Bearer <token>'Lists your pending invitations to League + Knockout tournaments that still take entries, the soonest expiry first. Accept one by joining the tournament with POST /api/tournaments/{id}/join before expires_at, paying the entry fee on a paid tier. On a paid tier can_accept is false until your wallet is on the contract’s invite list, which follows within a minute of the invitation. seats_lock_at is the moment from which an accepted team can no longer leave.
Who: a signed-in player.
Refusals:
Not registered: the wallet has no player account.
Authorizations
Section titled “Authorizations ”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.
One of your pending invitations.
object
true when you can accept it now. On a paid tier it is false until your wallet is on the contract’s invite list. It is false while refusal is set.
The entry fee in whole FOXSY. 0 on Bronze.
Accept before this moment.
The prize from FoxLeague held in the contract for this tournament, in atomic FOXSY. null when none is held.
Why it cannot be accepted now: the sentence the join would answer while your team has a seat or an invitation in another League + Knockout tournament that is not over (one at a time). null otherwise.
From this moment an accepted team cannot leave.
bronze, silver or gold.
The tournament’s title.
The tournament id.
The wave that sent it, 1 to 3.
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": [ { "can_accept": true, "entry_fee_foxsy": 10000, "expires_at": "2026-11-05T18:00:00Z", "seats_lock_at": "2026-11-07T18:00:00Z", "tier": "gold", "title": "Champions Cup", "tournament_id": 602, "wave": 1, "prize_atomic": "100000000000000000000000" } ], "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