Record the deposit of a prize from FoxLeague
const url = 'https://foxleague.ai/api/tournaments/1/prize/deposit';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"tx_hash":"example"}'};
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/1/prize/deposit \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "tx_hash": "example" }'Records the deposit transaction of a Champions FoxLeague prize. The sponsor’s wallet signs the deposit itself: a FOXSY transfer of the prize to the tournaments contract that names the tournament, its recipient count and, for a prize split by weight, its weight list (weights of the prize, in order). This route then checks that transaction and the prize the contract holds. It answers the prize as the contract shows it. Sending the same hash again answers the same. A failure on our side answers with code: "tx_pending" as well: nothing was decided, so send the same hash again.
Who: the signed-in sponsor wallet of the prize.
Refusals:
This tournament has no prize from FoxLeague.Only the wallet that set this prize can record its deposit.Your deposit is not confirmed on chain yet. Please retry in a moment.: the transaction is not final yet; send the same hash again.This deposit did not go through on chain: nothing was deposited.: the transaction failed.This transaction is not a deposit of this tournament's prize.: another wallet, another tournament, another recipient count, another weight list (or none, for a prize split by weight) or another call.The contract does not show the deposit yet. Please retry in a moment.: send the same hash again.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”The tournament id.
Request Body required
Section titled “Request Body required ”The deposit transaction of a prize from FoxLeague.
object
The hash of the deposit transaction the sponsor’s wallet signed.
Example generated
{ "tx_hash": "example"}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 total deposited in the contract, in atomic FOXSY (18 decimals). It stays after the payout or the refund. 0 before a deposit.
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.
The hash of the deposit transaction. null before it is recorded.
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.
The hash of the payout transaction. null before the payout.
The prize the admin set at create, in whole FOXSY.
When the state and the amount were read from the contract.
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).
The hash of the refund transaction of a cancelled tournament. null otherwise.
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.
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).
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.
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.
One group of a prize from FoxLeague split by weight.
object
What each team of the group gets, in atomic FOXSY (18 decimals).
The shares of each team of the group: 4, 2 or 1.
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).
The teams of the group: 8.
The tournament id.
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).
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": { "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.
Example
Session expired or invalid