Skip to main content

Seasons

Returns all seasons with metadata including token pool sizes and status.

GET /v1/points/seasons

No authentication required.

Response​

[
{
"season_id": "a1b2c3d4-...",
"season_no": 1,
"label": "Season 1",
"start_epoch": 1,
"end_epoch": 4,
"user_pool_tokens": 35000000,
"mm_pool_tokens": 20000000,
"status": "completed",
"snapshot_at": "2026-02-01T00:00:00Z",
"snapshot_taken_at": "2026-02-01T00:05:32Z",
"distribution_at": "2026-02-03T00:00:00Z"
},
{
"season_id": "b2c3d4e5-...",
"season_no": 2,
"label": "Season 2",
"start_epoch": 5,
"end_epoch": 8,
"user_pool_tokens": 25000000,
"mm_pool_tokens": 16000000,
"status": "active",
"snapshot_at": null,
"snapshot_taken_at": null,
"distribution_at": null
}
]

Response Fields​

FieldTypeDescription
season_idstringSeason UUID
season_nointSeason number
labelstringHuman-readable label
start_epochintFirst epoch number in the season
end_epochintLast epoch number in the season
user_pool_tokensintToken pool allocated for regular users
mm_pool_tokensintToken pool allocated for market makers
statusstringSeason status (see below)
snapshot_atstring | nullScheduled snapshot time (ISO 8601)
snapshot_taken_atstring | nullActual snapshot execution time
distribution_atstring | nullScheduled distribution time

Season Status​

ValueDescription
pendingNot yet started
activeCurrently running
snapshotSnapshot period
completedFully completed

These four values are enforced by a DB CHECK constraint; new seasons default to active.

Code Examples​

Python​

import requests

BASE_URL = "https://api.rocky.exchange"

resp = requests.get(f"{BASE_URL}/v1/points/seasons")
seasons = resp.json()

for s in seasons:
print(f"Season {s['season_no']} [{s['status']}]: Epochs {s['start_epoch']}–{s['end_epoch']}, user pool={s['user_pool_tokens']:,}")