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
| Type | Code | How Earned |
|---|---|---|
| Trading Points | TP | Calculated per fill based on volume × tier rate |
| PnL Points | PP | Calculated on position close based on realized PnL |
| Holding Points | HP | Accrued per minute based on open position value |
| Referral Points | RP | Awarded when a referee reaches the volume trigger within 7 days of binding |
| Staking Points | SP | Accrued 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):
| Tier | VIP Level | Maker Rate | Taker Rate |
|---|---|---|---|
| T1 | VIP 0 | 1.2 TP / $1,000 | 0.8 TP / $1,000 |
| T2 | VIP 1–2 | 1.5 TP / $1,000 | 1.0 TP / $1,000 |
| T3 | VIP 3–5 | 2.0 TP / $1,000 | 1.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:
| Level | Points Range | Weight |
|---|---|---|
| L0 | 0 – 999 | 4 |
| L1 | 1,000 – 9,999 | 8 |
| L2 | 10,000 – 49,999 | 12 |
| L3 | 50,000 – 199,999 | 25 |
| L4 | 200,000 – 499,999 | 60 |
| L5 | 500,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
| Season | Epochs | User Pool | MM Pool |
|---|---|---|---|
| S1 | 1–4 | 35,000,000 | 20,000,000 |
| S2 | 5–8 | 25,000,000 | 16,000,000 |
| S3 | 9–12 | 20,000,000 | 13,000,000 |
| S4 | 13–16 | 20,000,000 | 13,000,000 |
| S5 | 17–20 | 20,000,000 | 13,000,000 |
| S6 | 21–24 | 30,000,000 | 25,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)
| Method | Endpoint | Description |
|---|---|---|
| GET | /epochs | List all epochs |
| GET | /points/earn-level-config | Get Earn Level configuration |
| GET | /points/seasons | List all seasons |
| GET | /points/leaderboard | Epoch cumulative leaderboard |
| GET | /points/leaderboard/daily | Daily points increment leaderboard |
Protected Endpoints (JWT Required)
| Method | Endpoint | Description |
|---|---|---|
| GET | /points | Get user points summary |
| GET | /points/history | Get points history |
| GET | /points/tier | Get user tier info |
| GET | /points/earn-quota | Get Earn Level quota info |
| POST | /points/simulate | Simulate points for a trade |
| GET | /points/distribution/:season_id | Get season token distribution |
| POST | /points/claim/:distribution_id | Claim season tokens (EIP-712) |