Get market APY history
Historical supply and borrow APYs for a Morpho Blue market. The APY averaging window is derived automatically from lookback: one_day and seven_days use one_day; thirty_days uses seven_days; ninety_days, one_year, and inception use thirty_days. Points that do not have enough historical data for the derived window are omitted.
For enterprise access, use https://private.api.morpho.org as the base URL and send your API key in the x-api-key header. Request an API key.
Path Parameters
Selector formatted as <chain_id>:<market_id>. Example: 1:0xfff1970c0ffae288764186fbb38a9171a17e98676744a1e345809cb8b9e73342.
<chain_id>:<market_id>Query Parameters
Lookback period. Defaults to thirty_days. Historical sampling is selected automatically. The APY averaging window is derived automatically from lookback: one_day and seven_days use one_day; thirty_days uses seven_days; ninety_days, one_year, and inception use thirty_days. Points that do not have enough historical data for the derived window are omitted.
"one_day" | "seven_days" | "thirty_days" | "ninety_days" | "one_year" | "inception"Response Body
application/json
const baseUrl = process.env.CORE_REST_BASE_URL ?? "https://api.morpho.org";const apiKey = process.env.MORPHO_API_KEY ?? "<MORPHO_API_KEY>";const marketSelector = "1:0xfff1970c0ffae288764186fbb38a9171a17e98676744a1e345809cb8b9e73342";const url = new URL(`${baseUrl}/v0/blue/markets/${marketSelector}/apy/history`);url.searchParams.set("lookback", "thirty_days");const response = await fetch(url, { headers: { accept: "application/json", "x-api-key": apiKey, },});if (!response.ok) throw new Error(await response.text());const body = await response.json();{
"params": {
"chain_id": "1",
"market_id": "0xb323495f7e4148be5643a4ea4a8221eef163e4bccfded827a6f46947d7ad9afb"
},
"data": [
{
"timestamp": 1729900800,
"supply_apy": 0.0421,
"borrow_apy": 0.0612
},
{
"timestamp": 1729987200,
"supply_apy": 0.0418,
"borrow_apy": 0.0608
}
],
"last_indexed_block": "19847234"
}