- Sanctum for
sol-liquid-stake(raSOL). - thevalidators.io for
sol-native-stake(Hubra validator). - rasol-max daily-cron snapshot for
sol-leveraged-stake(per-epoch points; the same series the leverage page’s bar chart shows). - Voltr for
usdc-earn.
sol-leveraged-stake only writes one row per epoch (~12 points retained), and the upstream doesn’t slice into 1M / 3M / 6M windows the way Sanctum and thevalidators.io do — the same series is returned under every range so the response shape stays consistent across strategies.
Request
| Query parameter | Type | Required | Description |
|---|---|---|---|
strategy | string | yes | Canonical strategy key. |
range | "1M" | "3M" | "6M" | "All" | no | Time range. Default "1M". |
Response
| Field | Type | Description |
|---|---|---|
strategy | string | Echoed strategy key. |
range | string | Echoed range ("1M" if not specified). |
points | { date, apy }[] | Time-series points, ordered oldest → newest. |
points[].date | string | ISO 8601 date. |
points[].apy | number | APY as a percentage. |
"All" returns the full series the upstream provides.
Errors
| Status | Slug | When |
|---|---|---|
400 | invalid_request | Missing strategy or invalid range. |
404 | not_found | Unknown strategy key. |
502 | upstream_error | Upstream provider could not return history (Sanctum / thevalidators.io / Voltr unreachable or unparseable). |
503 | service_unavailable | Strategy is announced but not live; no APY history yet. |
When to call
- Rendering a chart to the user.
- Computing rolling averages or comparing strategies.
- Auditing performance of a position over time.
GET /api/v1/strategies/{key} instead — it is a single round-trip and always fresh.