API

Every number on this site is served as JSON from the same routes, with no key.

Routes

RouteReturns
GET /api/poolsthe 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/navNAV series, per-epoch harvest, trailing APR
GET /api/statsprotocol summary: streams, TVL, λ₁ share, epoch
GET /api/epochscurrent epoch and seconds to the next harvest window
GET /api/chainlive block number and gas price from the RPC
GET /api/contractsthe address registry this site is built against
GET /api/card/epocha 1080×1080 share card, rendered live

Example

# the spectrum, right now
$ curl https://eigenyield.me/api/eigen

{
  "source": "live",
  "lambda": [1.37, 1.12, 1.00, ...],
  "explained": [0.271, 0.223, 0.199, ...],
  "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.