📝 API Documentation

API Documentation

Developers can use AggreLend’s public APIs to retrieve live market info and protocol details for dashboards, bots, and research.

Base URL: https://aggrelend.com
Primary Endpoint: /api/get-apy-list
Versioning: v1 (implicit) — breaking changes will be announced with at least 30 days’ notice.


Overview

  • Purpose: expose current effective APY by token across integrated lending venues, with the top venue first.
  • Update cadence: approximately every ~60 seconds (subject to RPC/network conditions).
  • Normalization: reward tokens (e.g., JITO/JTO/etc.) are converted to the deposit token using Jupiter price quotes before being folded into the effective APY.
  • No auth: public, read-only, CORS enabled for browser use.
ℹ️

AggreLend displays a single effective APY per venue that already includes normalized rewards (see APY Normalization).


Endpoint: Get APY List

GET https://aggrelend.com/api/get-apy-list

Returns all supported tokens with their available markets, current APYs, and the highest-scoring market at index [0] of each token’s markets array.

Query Parameters (optional)

NameTypeDefaultDescription
tokenstring | string[]Filter by one or more token symbols or mints (e.g., token=USDC, token=USDC&token=SOL).
includeMetabooleantrueInclude descriptive names, venue families, and health flags.
chainstringsolana-mainnetFuture-proofing for additional clusters.
formatstringjsonReserved for future formats (e.g., csv).

Response: Top-Level Schema

type GetApyListResponse = {
  updatedAt: string;   // ISO timestamp for the dataset
  chain: "solana-mainnet";
  tokens: TokenEntry[];
}
 
type TokenEntry = {
  symbol: string;      // "USDC", "SOL", "WBTC", etc.
  mint: string;        // SPL mint address
  decimals: number;
  markets: MarketEntry[]; // sorted by effective APY descending; [0] is the current top route
}
 
type MarketEntry = {
  id: string;          // venue identifier (e.g., "kamino-main", "marginfi", "drift-deposits")
  name: string;        // human-readable (e.g., "Kamino Main", "MarginFi")
  family?: string;     // venue family (e.g., "Kamino", "Drift", "Save(Solend)")
  apy: {
    base: number;        // base supply APY (decimal, e.g., 0.0512 for 5.12%)
    rewards: number;     // normalized rewards APY contribution (decimal)
    effective: number;   // base + rewards after normalization and dampening
  };
  liquidity?: {
    available: string;   // stringified numeric in token units
    utilization: number; // 0..1
    caps?: { deposit?: string; borrow?: string };
  };
  health?: {
    stability: "high" | "medium" | "low";
    lowLiquidity?: boolean;
    paused?: boolean;
  };
  lastUpdated: string; // ISO timestamp at market refresh
}