What a tournament would cost its organizer
const url = 'https://foxleague.ai/api/tournaments/organizer-fee/quote';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"developer_mode":true,"format":"example","has_third_place_match":true,"home_and_away":true,"max_teams":1,"private":true,"starts_at":"2026-04-15T12:00:00Z"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://foxleague.ai/api/tournaments/organizer-fee/quote \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "developer_mode": true, "format": "example", "has_third_place_match": true, "home_and_away": true, "max_teams": 1, "private": true, "starts_at": "2026-04-15T12:00:00Z" }'The private tournament fee and the calendar deposit of a tournament of this shape, for the signed-in wallet, before anything is signed. Once they apply, the organizer of a tournament that books the calendar pays one shopPay of total_foxsy, then sends its hash with the create. A 1v1, a developer tournament and an admin’s event owe nothing. The deposit comes back after the last game, with the fee of any game not played; a cancel within the free time returns everything; a later cancel or a tournament with too few teams to start keeps the deposit and returns the fee.
Authorizations
Section titled “Authorizations ”Request Body required
Section titled “Request Body required ”The tournament to price.
object
A developer tournament: it pays nothing.
The tournament’s format.
A knockout with a third-place game.
A round robin played twice.
The teams it holds.
It has an invite list.
The start asked for (RFC 3339), so the answer can say when this time slot has no free cancellation. Optional.
Example generated
{ "developer_mode": true, "format": "example", "has_third_place_match": true, "home_and_away": true, "max_teams": 1, "private": true, "starts_at": "2026-04-15T12:00:00Z"}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 calendar deposit, in whole FOXSY.
The scheduled games the amounts are counted on.
Minutes after the create during which a cancel returns the deposit. 0 when this time slot has no free cancellation.
A tournament of yours overlapping this time slot was cancelled in its free time in the last 24 hours (or, created with one signature, did not open: still waiting for its verdict, voided unpaid or refused once paid in the last 24 hours), so this one has no free cancellation.
Whether this tournament owes a payment now. False: pay nothing, send no hash.
The private tournament fee, in whole FOXSY. 0 on a public tournament.
The one payment: exactly this, in whole FOXSY.
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": { "owed": true, "games": 28, "private_fee_foxsy": 420, "deposit_foxsy": 700, "total_foxsy": 1120, "grace_minutes": 60, "no_free_cancel": false }, "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