Skip to main content

Points System Overview

The AXBlade Points System rewards traders for activity on the platform. Points accumulate within each Epoch and determine token distribution at the end of each Season.

Base URL: https://api.prex.world/api/v1

Epoch & Season Structure

Season (≈56 days)
├── Epoch 1 (≈14 days)
├── Epoch 2 (≈14 days)
├── Epoch 3 (≈14 days)
└── Epoch 4 (≈14 days)
  • Each Epoch lasts approximately 14 days. Points accumulate within the epoch.
  • Every 4 Epochs form a Season. At season end, tokens are distributed to users proportionally based on their weighted points.

Point Types

TypeCodeHow Earned
Trading PointsTPCalculated per fill based on volume × tier rate
PnL PointsPPCalculated on position close based on realized PnL
Holding PointsHPAccrued per minute based on open position value
Referral PointsRPAwarded when a referee reaches the volume trigger within 7 days of binding
Staking PointsSPAccrued while staking tokens

Tier System

Trading point rates are multiplied by the user's Tier, which is mapped from the user's fee VIP level (T1 = VIP 0, T2 = VIP 1–2, T3 = VIP 3–5; upgrades are managed by the fee VIP system):

TierVIP LevelMaker RateTaker Rate
T1VIP 01.2 TP / $1,0000.8 TP / $1,000
T2VIP 1–21.5 TP / $1,0001.0 TP / $1,000
T3VIP 3–52.0 TP / $1,0001.3 TP / $1,000

Earn Level

Total raw points within an epoch determine the user's Earn Level. The level weight sets the user's Earn product subscription quota (share of daily subscription capacity) — it is not used in season token distribution:

LevelPoints RangeWeight
L00 – 9994
L11,000 – 9,9998
L210,000 – 49,99912
L350,000 – 199,99925
L4200,000 – 499,99960
L5500,000+120

Token Distribution Formula

At season end, each user's points are aggregated across the season's epochs and weighted by point type:

weighted_points = TP × 0.65 + PP × 0.20 + HP × 0.05 + RP × 0.10
share_pct = user_weighted_points / Σ(all_users_weighted_points)
token_reward = season_user_pool × share_pct

The MM pool is split pro-rata by each market maker's quality score sum. earn_level_weight does not enter this formula — it only affects Earn subscription quotas.

Claim window: 30 days after snapshot via EIP-712 signature on-chain.

Season Token Pool

SeasonEpochsUser PoolMM Pool
S11–435,000,00020,000,000
S25–825,000,00016,000,000
S39–1220,000,00013,000,000
S413–1620,000,00013,000,000
S517–2020,000,00013,000,000
S621–2430,000,00025,000,000

Authentication

Protected endpoints require a JWT Bearer token:

Authorization: Bearer <token>

Response Envelope

All points endpoints wrap their payload in a standard ApiResponse envelope:

{
"success": true,
"data": { ... },
"error": null,
"timestamp": 1745280000
}

On error, success is false, data is null, and error is { "code": "...", "message": "..." }. The response examples on the following pages show the data payload wrapped in this envelope; in code, read resp.json()["data"].

API Endpoints

Public Endpoints (No Auth Required)

MethodEndpointDescription
GET/epochsList all epochs
GET/points/earn-level-configGet Earn Level configuration
GET/points/seasonsList all seasons
GET/points/leaderboardEpoch cumulative leaderboard
GET/points/leaderboard/dailyDaily points increment leaderboard

Protected Endpoints (JWT Required)

MethodEndpointDescription
GET/pointsGet user points summary
GET/points/historyGet points history
GET/points/tierGet user tier info
GET/points/earn-quotaGet Earn Level quota info
POST/points/simulateSimulate points for a trade
GET/points/distribution/:season_idGet season token distribution
POST/points/claim/:distribution_idClaim season tokens (EIP-712)