Skip to content

Your ranked tickets and their price

GET
/api/shop/ranked-ticket
curl --request GET \
--url 'https://foxleague.ai/api/shop/ranked-ticket?wallet_address=example' \
--header 'Authorization: Bearer <token>'

What a ranked game costs its starter, whether ranked costs it yet and how many ranked tickets you hold. From live_from (the competition levels switch) the team that starts a ranked game pays price_foxsy FOXSY before its opponent is drawn: one ticket per game. A game the AI fills is free and keeps the ticket. A game that ended in an error before its result gives its ticket back.

Who: a signed-in player, for their own wallet. A wallet without an account holds 0 tickets.

Refusals:

  • Wallet mismatch: sign with the correct wallet: wallet_address is not the session wallet.
wallet_address
required
string

Your wallet; it must be the session wallet.

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

Whether ranked costs a ticket now: the competition levels switch has passed.

boolean
live_from

When the competition levels govern (RFC 3339, UTC); null while the switch is off.

string | null
price_foxsy
required

What one ranked game costs its starter, in whole FOXSY.

integer format: int64
tickets
required

The ranked tickets you hold: each pays for one ranked game against a real opponent.

integer format: int64
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": {
"live": true,
"live_from": "2026-11-09T14:00:00Z",
"price_foxsy": 100,
"tickets": 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