Points Balance
The authenticated user's points summary for an epoch.
GET /points?epoch=3
Aliases: GET /points/balance, GET /points/summary. Auth: Authorization: Bearer <JWT> from the EIP-712 login. API keys are not accepted.
Query parameters
| Param | Type | Required | Description |
|---|---|---|---|
epoch | int | no | Defaults to the active epoch |
Response (data)
{
"user_address": "0xabcd...1234",
"epoch_number": 3,
"epoch_status": "active",
"trading_points": "1250.50",
"pnl_points": "0.00",
"holding_points": "0.00",
"referral_points": "0.00",
"referral_code": "4DDDC2D4",
"staking_points": "0.00",
"total_points": "1250.50",
"tier": "T1",
"tier_multiplier": "1.2",
"earn_level": 1,
"earn_level_weight": 8,
"earn_level_points_to_next": "8749.50",
"rank": null,
"trading_volume": "2500000.00",
"trade_count": 47,
"referral_count": 0,
"updated_at": "2026-04-15T12:30:00Z"
}
A user with no activity gets a synthesized row with every points field "0.00", tier: "T1", earn_level: 0, earn_level_weight: 4, rank: null. Users with a balance row also receive the cap counters (tp_daily_used, tp_weekly_used, rp_daily_used, reset timestamps).
| Field | Description |
|---|---|
epoch_status | pending / active / ended / settled |
tier / tier_multiplier | Points tier (from VIP level) and its maker rate |
earn_level, earn_level_weight, earn_level_points_to_next | Earn Level state |
rank | Leaderboard rank, null if not ranked |