Skip to content

The prize from FoxLeague of a Champions FoxLeague tournament

GET
/api/tournaments/{id}/prize
curl --request GET \
--url https://foxleague.ai/api/tournaments/1/prize

The prize an admin set for a Champions FoxLeague tournament: how much is locked in the tournaments contract and its transactions. The state and the amount are read from the contract for a signed-in caller (at most every 20 seconds per tournament); without a session the stored reading answers, which the backend refreshes every minute. The prize goes to the top 24 by how far they got: 4 shares to each quarter-finalist, 2 to each round-of-16 loser, 1 to each play-off loser (56 shares; tiers gives each team’s amount), paid only after the tournament completed; a cancelled tournament returns it to its depositor. A prize set before this split (weights null) stays split equally among its 8 quarter-finalists.

Who: anyone. With a session, can_deposit tells the sponsor’s own wallet that it may deposit now, stating weights after the recipient count.

Refusals:

  • This tournament has no prize from FoxLeague. (code none): no prize was set or no such tournament. Only this refusal carries code none; any other success: false (for example a failed read) does not.
id
required
integer format: int64

The tournament id.

Success or a refusal: read success (the refusals are in the description).

Media type application/json
object
code

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.

string | null
data

The answer. Present when success is true.

object
amount_atomic
required

The total deposited in the contract, in atomic FOXSY (18 decimals). It stays after the payout or the refund. 0 before a deposit.

string
can_deposit
required

true for the sponsor’s own wallet while the tournament is open, the terms are set and the contract, read just now for this answer, holds these terms (the sponsor, the count and the weight list) and nothing deposited yet.

boolean
deposit_tx

The hash of the deposit transaction. null before it is recorded.

string | null
from_chain
required

true when the state and the amount are a reading of the contract from the last 20 seconds. false when the stored reading answers: the caller has no session or the contract could not be read just now.

boolean
payout_tx

The hash of the payout transaction. null before the payout.

string | null
planned_foxsy
required

The prize the admin set at create, in whole FOXSY.

integer format: int64
read_at

When the state and the amount were read from the contract.

string | null format: date-time
recipients
required

The number of teams that share it: 24, the top 24 by how far they got (8 for a prize split equally among the quarter-finalists).

integer format: int32
refund_tx

The hash of the refund transaction of a cancelled tournament. null otherwise.

string | null
share_atomic

A prize split equally, once paid: what each quarter-finalist received, in atomic FOXSY. null before. Always null for a prize split by weight: tiers gives each team’s amount.

string | null
state
required

The prize as the tournaments contract holds it: none (not deposited), held (locked in the contract), paid (paid to its recipients), refunded (the tournament was cancelled and the prize went back to its depositor) or reclaimed (returned by the owner 30 days after the completion, never paid).

string
terms_set
required

true once the contract names the sponsor wallet and the recipients with their weights (weights): a deposit is possible from then on. It reads false again when the terms the contract holds are no longer these ones; the backend then sets them again.

boolean
tiers

The prize split by weight: its three groups in payout order with what each team of a group gets, computed as the contract pays it (floor of the pool times the team’s shares over 56; the remainder, under one atomic unit per team, goes back to the depositor). On the deposited amount once there is one, on the planned prize before. null for a prize split equally.

Array<object> | null

One group of a prize from FoxLeague split by weight.

object
share_atomic
required

What each team of the group gets, in atomic FOXSY (18 decimals).

string
shares
required

The shares of each team of the group: 4, 2 or 1.

integer format: int32
stage
required

quarterfinal (the 8 teams of the quarter-final round, the podium included), round_of_16 (the 8 teams that went out in the round of 16) or playoff (the 8 teams that went out in the play-off).

string
teams
required

The teams of the group: 8.

integer format: int32
tournament_id
required

The tournament id.

integer format: int64
weights

The prize split by weight: the weight list of its terms in payout order, 24 values: 4 for each of the 8 quarter-finalists, 2 for each of the 8 round-of-16 losers, 1 for each of the 8 play-off losers (56 shares). The deposit states this list after the recipient count; the contract refuses any other list and, on these terms, a deposit that states none. null for a prize split equally (the deposit states the count only).

Array<integer> | null
error

Why the request was refused, in plain words. Present when success is false.

string | null
success
required

true when the request did what it asked. false is a refusal: read error.

boolean
Example
{
"data": {
"amount_atomic": "168000000000000000000000",
"can_deposit": false,
"deposit_tx": "6f2c90b1aa3e4d17b2a1c0f5e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5b4a3f2e1d0",
"from_chain": true,
"payout_tx": null,
"planned_foxsy": 168000,
"read_at": "2026-11-02T10:00:00Z",
"recipients": 24,
"refund_tx": null,
"share_atomic": null,
"state": "held",
"terms_set": true,
"tiers": [
{
"share_atomic": "12000000000000000000000",
"shares": 4,
"stage": "quarterfinal",
"teams": 8
},
{
"share_atomic": "6000000000000000000000",
"shares": 2,
"stage": "round_of_16",
"teams": 8
},
{
"share_atomic": "3000000000000000000000",
"shares": 1,
"stage": "playoff",
"teams": 8
}
],
"tournament_id": 602,
"weights": [
4,
4,
4,
4,
4,
4,
4,
4,
2,
2,
2,
2,
2,
2,
2,
2,
1,
1,
1,
1,
1,
1,
1,
1
]
},
"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.

Media type text/plain
string
Example
Session expired or invalid