Skip to main content

Points History

Returns the authenticated user's point event history with pagination.

GET /v1/points/history
Authorization: Bearer <token>

Query Parameters​

ParameterTypeRequiredDescription
pageintegerNoPage number, starting from 1 (default: 1); values below 1 are treated as 1
page_sizeintegerNoResults per page (default: 20); clamped to the range 1–100, never rejected

epoch and type filters are not supported: the endpoint returns the user's events across all epochs and all point types, newest first (created_at DESC).

Errors: 401 with a plain-text body (missing bearer token / invalid session) when the session token is missing or invalid.

Response​

{
"events": [
{
"id": "b2c3d4e5-...",
"point_type": "trading",
"points": "1.20",
"metadata": {
"trade_id": "7f3a9c2e-...",
"symbol": "BTCUSDT",
"notional": "1000.000000",
"is_maker": true
},
"created_at": "2026-04-15T10:00:00Z"
},
{
"id": "c3d4e5f6-...",
"point_type": "trading",
"points": "0.80",
"metadata": {
"trade_id": "5b1d0e88-...",
"symbol": "ETHUSDT",
"notional": "1000.000000",
"is_maker": false
},
"created_at": "2026-04-14T08:30:00Z"
}
],
"total": 125,
"page": 1,
"page_size": 20
}

The root key is events (not items). Each record contains only {id, point_type, points, metadata, created_at} — associated trade/order/position IDs are not returned by this endpoint.

Response Fields​

FieldTypeDescription
eventsarrayList of point events
totalintTotal number of events for the user (all epochs, all types)
pageintCurrent page number
page_sizeintResults per page

events[]​

FieldTypeDescription
idstringEvent UUID
point_typestringPoint type: trading / pnl / holding / referral / staking. Only trading events are written today (see Overview); the others are reserved
pointsDecimalPoints awarded (2 decimals)
metadataobjectEvent-specific context. For trading: {trade_id, symbol, notional (string), is_maker (bool)}
created_atstringEvent timestamp (ISO 8601)

Code Examples​

Python​

import requests

BASE_URL = "https://api.rocky.exchange"
SESSION_TOKEN = "your_session_token" # from POST /v1/wallet/verify

resp = requests.get(
f"{BASE_URL}/v1/points/history",
headers={"Authorization": f"Bearer {SESSION_TOKEN}"},
params={"page": 1, "page_size": 20},
)
data = resp.json()

print(f"Total events: {data['total']}")
for e in data["events"]:
print(f" [{e['point_type']}] +{e['points']} pts at {e['created_at']}")