Get Data
Before Starting
In this tutorial, you might see different ways to fetch data for Morpho Vaults:
- API: Using the Morpho public API (see endpoint below). This is the easiest and most direct way for most applications. Note that only a subset of chains are supported.
- Typescript: Using Typescript snippet. For Developers expecting to perform offchain computation.
- Smart Contract: Fetching data directly onchain. This is best for real-time or trustless data.
- SDK: [Examples Incoming] Using the Morpho SDKs for pre-built abstractions and faster development.
For each topic below, you'll find short guides for each method (where possible). This avoids redundancy and helps you choose the best approach for your use case.
Discovery and Listing
Vaults List
Morpho Vaults V2
API
query {
vaultV2s(first: 1000, where: { chainId_in: [1, 8453] }) {
items {
address
symbol
name
whitelisted
asset {
id
address
decimals
}
chain {
id
network
}
}
}
}Morpho Vaults V1
API
query {
vaults(first: 1000, where: { chainId_in: [1, 8453] }) {
items {
address
symbol
name
whitelisted
asset {
id
address
decimals
}
chain {
id
network
}
}
}
}Vault Metrics
Total Deposits & Assets
Morpho Vaults V2
Unique Vault
query {
vaultV2ByAddress(
address: "0x04422053aDDbc9bB2759b248B574e3FCA76Bc145"
chainId: 1
) {
address
totalAssets
totalAssetsUsd
totalSupply
liquidity
liquidityUsd
idleAssetsUsd
}
}On Morpho Vaults V1
Unique Vault
query {
vaultByAddress(
address: "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
chainId: 1
) {
address
state {
totalAssets
totalAssetsUsd
totalSupply
liquidity
}
}
}APY (Native + Rewards)
Morpho Vaults V2
Unique Vault
query {
vaultV2ByAddress(
address: "0x04422053aDDbc9bB2759b248B574e3FCA76Bc145"
chainId: 1
) {
address
asset {
yield {
apr
}
}
avgApy
avgNetApy
performanceFee
managementFee
maxRate
rewards {
asset {
address
chain {
id
}
}
supplyApr
yearlySupplyTokens
}
}
}Morpho Vaults V1
Unique Vault
query {
vaultByAddress(
address: "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
chainId: 1
) {
address
asset {
yield {
apr
}
}
state {
apy
netApy
netApyWithoutRewards
avgApy
avgNetApy
dailyApy
dailyNetApy
weeklyApy
weeklyNetApy
monthlyApy
monthlyNetApy
rewards {
asset {
address
chain {
id
}
}
supplyApr
yearlySupplyTokens
}
allocation {
supplyAssets
supplyAssetsUsd
market {
uniqueKey
state {
rewards {
asset {
address
chain {
id
}
}
supplyApr
borrowApr
}
}
}
}
}
}
}Share Price (Token Value)
Morpho Vaults V2
Unique Vault
query {
vaultV2ByAddress(
address: "0x04422053aDDbc9bB2759b248B574e3FCA76Bc145"
chainId: 1
) {
totalAssets
totalSupply
}
}Morpho Vaults V1
Unique Vault
query {
vaultByAddress(
address: "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
chainId: 1
) {
address
state {
sharePrice
sharePriceUsd
}
}
}Allocation & Strategy
Current Allocations
Morpho Vaults V2
Unique Vault
query {
vaultV2ByAddress(
address: "0x04422053aDDbc9bB2759b248B574e3FCA76Bc145"
chainId: 1
) {
totalAssetsUsd
totalAssets
totalSupply
adapters {
items {
address
assets
assetsUsd
type
}
}
}
}Morpho Vaults V1
Unique Vault
query {
vaultByAddress(
address: "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
chainId: 1
) {
address
state {
allocation {
market {
uniqueKey
loanAsset {
name
}
collateralAsset {
name
}
oracleAddress
irmAddress
lltv
}
supplyCap
supplyAssets
supplyAssetsUsd
}
}
}
}Vault Queues
Unique Vault
query {
vaultByAddress(
address: "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
chainId: 1
) {
address
state {
totalAssets
lastTotalAssets
allocation {
supplyQueueIndex
withdrawQueueIndex
market {
uniqueKey
}
}
}
}
}Configuration & Governance
Vault Parameters
Morpho Vaults V2
Unique Vault
query {
vaultV2ByAddress(
address: "0x04422053aDDbc9bB2759b248B574e3FCA76Bc145"
chainId: 1
) {
address
name
whitelisted
metadata {
description
forumLink
image
}
allocators {
allocator {
address
}
}
owner {
address
}
curators {
items {
addresses {
address
}
}
}
sentinels {
sentinel {
address
}
}
timelocks {
duration
selector
functionName
}
}
}Morpho Vaults V1
Unique Vault
query {
vaultByAddress(
address: "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
chainId: 1
) {
address
name
whitelisted
metadata {
description
forumLink
image
}
allocators {
address
}
state {
owner
curator
guardian
timelock
}
}
}Risk Indicators
Morpho Vault Warnings
API
query {
vaultV2s(first: 5) {
items {
name
warnings {
type
level
}
}
}
}Position Tracking
User All Vaults Position
Morpho Vaults V2 & V1
query GetUserVaultPositions($address: String!, $chainId: Int!) {
userByAddress(address: $address, chainId: $chainId) {
id
vaultV2Positions {
state {
shares
}
vault {
address
symbol
}
}
vaultPositions {
state {
shares
}
vault {
address
symbol
}
}
}
}Vault Depositors
Morpho Vaults V2
Unique Vault
query {
vaultV2ByAddress(
address: "0x04422053aDDbc9bB2759b248B574e3FCA76Bc145"
chainId: 1
) {
positions(first: 10, skip:0) {
items {
user {
address
}
assets
assetsUsd
shares
}
}
totalSupply
asset {
address
symbol
}
}
}Morpho Vaults V1
Unique Vault
query {
vaultPositions(
first: 10
orderBy: Shares
orderDirection: Desc
where: { vaultAddress_in: ["0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"] }
) {
items {
user {
address
}
state {
shares
assets
assetsUsd
}
}
}
}Transaction History
Morpho Vaults V2
Unique Vault
query {
vaultV2transactions(
first: 10
skip: 0
where: { vaultAddress_in: "0x04422053aDDbc9bB2759b248B574e3FCA76Bc145" }
) {
items {
vault {
address
}
type
shares
blockNumber
timestamp
txHash
txIndex
}
}
}Morpho Vaults V1
Unique Vault
query {
transactions(
first: 10
orderBy: Timestamp
orderDirection: Desc
where: { vaultAddress_in: ["0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"] }
) {
items {
blockNumber
hash
type
user {
address
}
}
}
}Historical Data
APY Historical State
Morpho Vaults v2
Coming soon.
Morpho Vaults V1
Unique Vault
query VaultApys($options: TimeseriesOptions) {
vaultByAddress(address: "0x73e65DBD630f90604062f6E02fAb9138e713edD9") {
address
historicalState {
apy(options: $options) {
x
y
}
netApy(options: $options) {
x
y
}
}
}
}With those variables:
{
"options": {
"startTimestamp": 1740000000,
"endTimestamp": 1742564817,
"interval": "DAY"
}
}