Skip to content

Your MetaStaking average

GET
/api/teams/metastaking
curl --request GET \
--url https://foxleague.ai/api/teams/metastaking \
--header 'Authorization: Bearer <token>'

Answers the 30-day average of your wallet’s MultiversX MetaStaking holdings, with the latest daily value. Once a UTC day, at the snapshot hour (00:00 UTC by default, snapshot_hour_utc), the server reads every team wallet from the MultiversX gateway: active SFOXSY-e335c1 positions (FOXSY staked alone; an unbonding position is not counted) plus the FOXSY half of the dual-farm position (METAFOXSLK-2a13e3, the EGLD-FOXSY farm) at that day’s pool price: the LP amount inside your dual-farm position times the pool’s FOXSY reserve, divided by the pool’s LP supply. The average is the sum of your daily totals over the snapshot days of the last 30 UTC days, divided by the number of those days (days_covered). A day you held nothing counts 0. A day whose read of your wallet failed is left out of your average. There is no history before the first snapshot day: until 30 days exist, days_covered says how many the average covers. The window ends today once today’s snapshot is complete, else yesterday. Amounts are atomic FOXSY (18 decimals) as decimal strings. Nothing is paid or boosted by it.

Who: a signed-in player with a team. You only ever read your own wallet.

Refusals:

  • MetaStaking snapshots are not taken on this network.: carries code: "not_on_this_network"; MetaStaking exists on mainnet only.
  • Team not found: your wallet has no team.

Without a session the answer is HTTP 401. If the snapshots cannot be read on our side, the answer is HTTP 500 with an empty body.

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
average_30d_foxsy_atomic

The average of your daily totals over the snapshot days of the last 30 UTC days, in atomic FOXSY (18 decimals) as a decimal string, rounded down. null before the first snapshot day.

string | null
days_covered
required

How many snapshot days the average covers, at most window_days.

integer format: int64
last_snapshot_day

The latest snapshot day in the window, YYYY-MM-DD (UTC). null before the first one.

string | null
snapshot_hour_utc
required

The UTC hour (0 to 23) the daily snapshot is taken at.

integer format: int64
today_foxsy_atomic

Your total on last_snapshot_day, in atomic FOXSY as a decimal string. "0" when you were read holding nothing then. null when there is no snapshot day yet, that day’s read of your wallet failed or your team did not exist yet when that day’s snapshot started.

string | null
window_days
required

The window of the average in UTC days: 30.

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": {
"average_30d_foxsy_atomic": "12500000000000000000000",
"days_covered": 12,
"last_snapshot_day": "2026-10-28",
"snapshot_hour_utc": 0,
"today_foxsy_atomic": "13000000000000000000000",
"window_days": 30
},
"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 snapshots could not be read on our side. The body is empty.