Data Reference
Data Conventions
APR format, snapshot intervals, reward types, and response envelope specification.
APR Format
APR is stored as a decimal: 0.05 = 5%. Display by multiplying by 100.
| Field | Description |
|---|---|
apr_net | Total APR including base yield + incentive rewards. Point-in-time from last sync. |
base_apr | Native protocol yield only (lending rate, share price accrual), before rewards. |
apr_forward | Forward-looking estimate (when available). |
Invariant: apr_net = base_apr + SUM(vault_rewards.apr)
Protocols without identifiable rewards set base_apr = apr_net and rewards = [].
Reward Types
| Type | Description | Examples |
|---|---|---|
token_incentive | Protocol token emissions | MORPHO, ARB, SPK |
points | Non-transferable point programs | Various |
trading_fee | LP trading fees | Curve, Uniswap |
strategy | Sub-strategy yields | Yearn strategies |
Risk Scores
- Range: 0-10 (higher = safer)
- Tiers: Prime (>= 8.0), Core (5.0 - 7.9), Edge (< 5.0)
- Vectors: Asset (40%), Platform & Strategy (40%), Governance Controls (20%)
- Recomputation: Every 30 minutes
Snapshot Intervals
| Data | Interval | Storage |
|---|---|---|
| Vault snapshots (raw) | 30 minutes | vault_snapshots table |
| Hourly aggregates | 1 hour | TimescaleDB continuous aggregate |
| Daily aggregates | 1 day | TimescaleDB continuous aggregate |
| Risk scores | 30 minutes | Recomputed by risk calculator |
| Oracle freshness | 15 seconds | Redis (real-time) |
Response Envelope
All API responses follow a standard envelope format.
Success
{
"success": true,
"data": { ... }
}Success with Pagination
{
"success": true,
"data": [ ... ],
"pagination": {
"page": 1,
"limit": 10,
"total": 247,
"totalPages": 25
}
}Error
{
"success": false,
"error": {
"message": "Vault not found",
"code": "NOT_FOUND"
}
}HTTP Status Codes
| Code | Meaning |
|---|---|
| 200 | Success |
| 400 | Bad request (invalid parameters) |
| 404 | Resource not found |
| 429 | Rate limited |
| 500 | Internal server error |
Timestamps
All timestamps are in ISO 8601 format with UTC timezone: 2026-02-25T12:00:00Z.
Numeric Strings
Large numbers (TVL, APR) are returned as strings to preserve precision: "125000000" not 125000000.