Free starts for a new tournament
const url = 'https://foxleague.ai/api/tournaments/availability';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/availabilityThe calendar of Create Tournament: the other tournaments’ booked windows, the starts where a new tournament with these settings fits, whether from itself fits and the next free start. It follows the rule POST /api/tournaments/create applies to a start.
A standard tournament books from one hour before its start to one hour after its booked play time, about 3 minutes per match without the time between games. The booking covers the start, not the whole run: a tournament can keep playing after its booking for hours or days, alongside other tournaments, so its later matches do not block a start. If a team of a match is busy in another tournament at that time, the scheduler moves the match later. A start is free when it is more than one hour from now, no more than 90 days from now and its booking overlaps no other tournament’s. A 1v1 challenge (teams 2) and a developer tournament book nothing.
Who: anyone. The answer is the same for every caller.
Refusals:
Unknown tournament format.:formatis notknockout,groups_knockout,round_robin,swissorleague_knockout.This format is not offered for that number of teams.:teamsis not an allowed size offormat.
Parameters
Section titled “ Parameters ”Query Parameters
Section titled “Query Parameters ”The format of the tournament being created: knockout (the default), groups_knockout, round_robin, swiss or league_knockout.
Its number of teams, an allowed size of format. Default 8.
true when a round robin plays home and away, which lengthens its booking. Default false.
true for a developer tournament, which books nothing. Default false.
The first instant asked about (RFC 3339). Default now. The answered range starts between now and 90 days from now; from_refusal, conflict and next_free judge from as asked.
How many days the answer covers from from: 1 to 14. Default 7.
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 other tournaments’ bookings that overlap the answered range, earliest first.
Another tournament’s booked window.
object
Where its booking ends (RFC 3339): one hour after its booked play time, about 3 minutes per match without the time between games. This is not when the tournament ends: a tournament can keep playing after its booking for hours or days, alongside other tournaments.
Where its booking starts (RFC 3339): one hour before the tournament starts.
The tournament’s title.
The tournament’s id.
Another tournament’s booked window.
object
Where its booking ends (RFC 3339): one hour after its booked play time, about 3 minutes per match without the time between games. This is not when the tournament ends: a tournament can keep playing after its booking for hours or days, alongside other tournaments.
Where its booking starts (RFC 3339): one hour before the tournament starts.
The tournament’s title.
The tournament’s id.
The runs of starts in the answered range where this tournament fits, earliest first.
A run of free starts: every start from first to last is free.
object
The first free start of the run (RFC 3339).
The last free start of the run (RFC 3339).
The first instant answered (RFC 3339): the requested from, kept between now and 90 days from now.
The first free start at or after the requested from (RFC 3339): that start when it is free, else the first free quarter hour; null when there is none.
The last instant answered (RFC 3339): from plus days.
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": { "busy": [ { "end": "2026-10-03T23:30:00Z", "start": "2026-10-03T17:00:00Z", "title": "Champions League 2026", "tournament_id": 83 } ], "conflict": null, "free": [ { "first": "2026-10-02T11:15:00Z", "last": "2026-10-03T12:00:00Z" }, { "first": "2026-10-04T00:30:00Z", "last": "2026-10-09T10:00:00Z" } ], "from": "2026-10-02T10:00:00Z", "from_refusal": "too_soon", "next_free": "2026-10-02T11:15:00Z", "to": "2026-10-09T10:00:00Z" }, "success": true}