One player card by NFT nonce
const url = 'https://foxleague.ai/api/players/nonce/1';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/players/nonce/1Answers one player card with its game data. condition includes the recovery since it was last stored.
Who: anyone.
Refusals:
Player not found: no card has this nonce.
If the card cannot be read on our side, the answer is HTTP 500 with an empty body.
Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”The card’s NFT nonce.
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
Current accuracy value, capped by rarity (Common 30, Uncommon 55, Rare 75, Epic 90, Legendary 100).
The accuracy value as last synced to chain.
Training XP toward the next accuracy point.
When the current owner got the card; null when unknown.
Career assists.
Career catches.
Appearances in competitive matches (paid tournament seats and 1v1 challenges against a real opponent; ranked matches never count). They count toward the match gate of the card’s rarity (rarity_match_gate in /api/config).
Condition from 0 to 100, the recovery up to condition_updated_at included.
The moment the recovery in condition was earned up to (RFC 3339). Recovery counts from here: the recovery after it is not in condition yet.
Current control value, capped by rarity (Common 30, Uncommon 55, Rare 75, Epic 90, Legendary 100).
The control value as last synced to chain.
Training XP toward the next control point.
Country index, 0 to 43.
When FoxLeague first recorded the card (RFC 3339). This is not the mint time.
Current defense value, capped by rarity (Common 30, Uncommon 55, Rare 75, Epic 90, Legendary 100).
The defense value as last synced to chain.
Training XP toward the next defense point.
The card’s total XP.
Total XP as last synced to chain.
When the card was made by fusion (RFC 3339); null for a card not made by fusion.
Matches bought for this card with the match waiver. They count toward the match gate of its rarity (gate in rarity_match_gate of /api/config), never toward the matches it must really play (floor).
When the card can be fused again (RFC 3339); null when it can be fused now.
Career goals.
FoxLeague’s record number of the card. Use nft_nonce to name a card.
The card’s level.
The level as last synced to chain.
true while the card is listed on the marketplace.
Every match the card has played.
When the card was minted (RFC 3339). It sets the card’s age. null when unknown.
The player’s name.
The card’s NFT nonce.
The wallet that holds the card. While the card is listed, the seller.
Career passes.
Address of the portrait image; null when none.
GK, DEF, MID or FWD.
Current power value, capped by rarity (Common 30, Uncommon 55, Rare 75, Epic 90, Legendary 100).
The power value as last synced to chain.
Training XP toward the next power point.
Common, Uncommon, Rare, Epic or Legendary.
Asking price in whole FOXSY while listed; null otherwise.
Shirt number.
Career shots on target.
Current speed value, capped by rarity (Common 30, Uncommon 55, Rare 75, Epic 90, Legendary 100).
The speed value as last synced to chain.
Training XP toward the next speed point.
Current stamina value, capped by rarity (Common 30, Uncommon 55, Rare 75, Epic 90, Legendary 100).
The stamina value as last synced to chain.
Training XP toward the next stamina point.
true when the card has changes not yet synced to chain.
Always true.
Career tackles.
Length in hours of the card’s transfer lock, counted from transferred_at; null means transfer_cooldown_hours from /api/config applies. For a rarity_gate lock it is the length now: the hours of every match bought for the card since it moved are already taken off.
The kind of a card’s transfer lock: rarity_gate (the card was sent before it reached its gate; Reduce Cooldown does not apply, each match bought for the card shortens the lock down to a floor; a listed card already sits at its floor), standard (the usual lock; Reduce Cooldown applies) or per_card (a lock set before the rarity rules; Reduce Cooldown applies).
When the card last arrived by a direct transfer from another wallet (RFC 3339); its transfer lock counts from here. A card made by fusion from cards still under a transfer lock carries on the lock that ends last. null when neither.
Current vision value, capped by rarity (Common 30, Uncommon 55, Rare 75, Epic 90, Legendary 100).
The vision value as last synced to chain.
Training XP toward the next vision point.
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": { "accuracy": 57, "accuracy_synced": 57, "accuracy_xp": 640, "acquired_at": "2026-09-16T08:03:51.004912Z", "assists": 14, "catches": 0, "competitive_matches": 21, "condition": 86, "condition_updated_at": "2026-09-30T19:42:07.318204Z", "control": 66, "control_synced": 65, "control_xp": 1530, "country": 0, "created_at": "2026-09-16T08:03:51.004912Z", "defense": 44, "defense_synced": 44, "defense_xp": 220, "experience": 7420, "experience_synced": 7210, "fused_at": null, "fusion_match_credit": 0, "fusion_ready_at": null, "goals": 9, "id": 5821, "level": 6, "level_synced": 6, "listed_for_sale": false, "matches_played": 47, "minted_at": "2026-09-15T14:27:12Z", "name": "Renan Silva", "nft_nonce": 1234, "owner_address": "erd15feryxhrdz9m6y09mr8wrerwzgj6f8ntxvhxyrdlm5aahn0t09nl4ujy86", "passes": 1288, "portrait_uri": "https://ipfs.io/ipfs/bafybeiczsscdsbs7ffqz55asqdf3smv6klcw3gofszvwlyarci47bgf354/1234.png", "position": "MID", "power": 49, "power_synced": 49, "power_xp": 0, "rarity": "Rare", "sale_price": null, "shirt_number": 8, "shots_on_target": 33, "speed": 61, "speed_synced": 60, "speed_xp": 1180, "stamina": 58, "stamina_synced": 58, "stamina_xp": 310, "stats_dirty": true, "synced_stats": true, "tackles": 61, "transfer_cooldown_hours": null, "transfer_lock_kind": null, "transferred_at": null, "vision": 63, "vision_synced": 63, "vision_xp": 905 }, "success": true}The card could not be read on our side. The body is empty.