Skip to content

Fusion match waiver quote for your card

GET
/api/players/nonce/{nonce}/match-waiver-quote
curl --request GET \
--url https://foxleague.ai/api/players/nonce/1/match-waiver-quote \
--header 'Authorization: Bearer <token>'

Answers how many matches toward its rarity’s match gate you can buy for your own card right now, the price of one, the gate and the matches it must really play. The numbers are read live from the chain, so they are the ones the contract accepts. While the card is under a transfer lock, the answer also says when the lock ends, how much each bought match takes off and where it stops.

Who: a signed-in player, for a card the wallet holds.

Refusals:

  • Player not found: no card has this nonce.
  • Not your player: the card belongs to another wallet.
  • The chain cannot be read right now. Please try again in a moment.: the chain cannot be read right now.
  • Could not read the card on chain: the chain read failed. Try again.

If the card cannot be read on our side, the answer is HTTP 500 with an empty body.

nonce
required
integer format: int64

The NFT nonce of your card.

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
chain_played
required

Competitive matches the card has on chain.

integer format: int64
credit
required

Matches already bought for this card.

integer format: int64
floor
required

Of those, the matches it must really play.

integer format: int64
gate
required

Competitive matches this card needs before it can be fused or listed, bought matches included.

integer format: int64
max_purchasable
required

How many matches you can buy for this card now; 0 when none.

integer format: int64
meets_gate
required

true when the card already has its gate: enough matches played and bought.

boolean
price_per_match
required

Price of one match for this card’s rarity, in whole FOXSY; 0 means matches cannot be bought for it.

integer format: int64
price_wei
required

Price of one match in FOXSY wei, as a decimal string.

string
rarity
required

The card’s rarity, as the chain stores it.

string
row_set
required

true when the contract holds this rarity’s own gate.

boolean
transfer_lock
One of:

A card’s running transfer lock and what bought matches do to it.

object
ends_at
required

When the lock ends now.

string format: date-time
first_shortening_waiver
required

Which bought match, counting from the next one, is the first to shorten the lock: 1 when each one does, 0 when none can.

integer format: int64
hours_per_waived_match
required

Hours one more bought match takes off the lock; 0 when bought matches do not shorten it.

integer format: int32
kind
required

rarity_gate: the card was sent before it reached its gate; each bought match shortens the lock down to stops_at and Reduce Cooldown does not apply. standard: the usual lock; Reduce Cooldown applies and bought matches do not shorten it. per_card: a lock set before the rarity rules; Reduce Cooldown applies.

string
Allowed values: rarity_gate standard per_card
reduce_cooldown
required

true when Reduce Cooldown can shorten this lock.

boolean
stops_at
required

The earliest end bought matches can reach.

string format: date-time
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": {
"chain_played": 12,
"credit": 0,
"floor": 5,
"gate": 15,
"max_purchasable": 3,
"meets_gate": false,
"price_per_match": 20,
"price_wei": "20000000000000000000",
"rarity": "Uncommon",
"row_set": true,
"transfer_lock": {
"ends_at": "2026-11-04T18:00:00Z",
"first_shortening_waiver": 1,
"hours_per_waived_match": 6,
"kind": "rarity_gate",
"reduce_cooldown": false,
"stops_at": "2026-11-04T00:00:00Z"
}
},
"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

The card could not be read on our side. The body is empty.