API
Every number on this site is served as JSON from the same routes, with no key.
Routes
| Route | Returns |
|---|---|
GET /api/pools | the universe: every pool, its gates, weight, and 30-epoch fee and volume series |
GET /api/eigen | λ, explained variance, λ₁ loadings, factor scores, the correlation matrix |
GET /api/nav | NAV series, per-epoch harvest, trailing APR |
GET /api/stats | protocol summary: streams, TVL, λ₁ share, epoch |
GET /api/epochs | current epoch and seconds to the next harvest window |
GET /api/chain | live block number and gas price from the RPC |
GET /api/contracts | the address registry this site is built against |
GET /api/card/epoch | a 1080×1080 share card, rendered live |
Example
# the spectrum, right now $ curl https://eigenyield.me/api/eigen { "source": "live", "lambda": [1.30, 1.16, 0.97, ...], "explained": [0.258, 0.230, 0.192, ...], "weights": [ ... ], "correlation": [ [ ... ] ] }
Data sources
Pool discovery, 24-hour volume, liquidity and thirty days of daily volume come from GeckoTerminal on the robinhood network. That free tier rate-limits bursts, so reads are paced, retried with backoff, memoised for twenty minutes and warmed by a cron job every ten. Chain reads go straight to the RPC with batching disabled, because this node answers JSON-RPC batches in an order viem cannot line back up.
If GeckoTerminal is unreachable the whole site falls back to a deterministic day-seeded model in lib/sim.ts and every affected panel is labelled model. The fallback exists so a rate limit degrades the numbers rather than the page.