Philidor Docs
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.

FieldDescription
apr_netTotal APR including base yield + incentive rewards. Point-in-time from last sync.
base_aprNative protocol yield only (lending rate, share price accrual), before rewards.
apr_forwardForward-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

TypeDescriptionExamples
token_incentiveProtocol token emissionsMORPHO, ARB, SPK
pointsNon-transferable point programsVarious
trading_feeLP trading feesCurve, Uniswap
strategySub-strategy yieldsYearn 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

DataIntervalStorage
Vault snapshots (raw)30 minutesvault_snapshots table
Hourly aggregates1 hourTimescaleDB continuous aggregate
Daily aggregates1 dayTimescaleDB continuous aggregate
Risk scores30 minutesRecomputed by risk calculator
Oracle freshness15 secondsRedis (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

CodeMeaning
200Success
400Bad request (invalid parameters)
404Resource not found
429Rate limited
500Internal 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.

On this page

Raw