Morpho Vaults
How to query Morpho Vaults Data thanks to the API?
Select the query you are interested in in the list below, and paste it into the GraphQL Playground: https://api.morpho.org/graphql
Discovery and Listing
Vaults List
Morpho Vaults V2
query {
vaultV2s(first: 1000, where: { chainId_in: [1, 8453] }) {
items {
address
symbol
name
listed
asset {
id
address
decimals
}
chain {
id
network
}
}
}
}Vault Metrics
Total Deposits & Assets
All Vaults
Morpho Vaults V2
query {
vaultV2s(first: 100) {
items {
address
totalAssets
totalAssetsUsd
totalSupply
liquidityUsd
idleAssetsUsd
}
}
}Specific Vault
Morpho Vaults V2
query {
vaultV2ByAddress(
address: "0x04422053aDDbc9bB2759b248B574e3FCA76Bc145"
chainId: 1
) {
address
totalAssets
totalAssetsUsd
totalSupply
liquidity
liquidityUsd
idleAssetsUsd
}
}APY (Native + Rewards)
All Vaults
Morpho Vaults V2
query {
vaultV2s(first: 10) {
items {
address
asset {
yield {
apr
}
}
avgApy
avgNetApy
performanceFee
managementFee
maxRate
rewards {
asset {
address
chain {
id
}
}
supplyApr
yearlySupplyTokens
}
}
}
}Specific Vault
Morpho Vaults V2
query {
vaultV2ByAddress(
address: "0x04422053aDDbc9bB2759b248B574e3FCA76Bc145"
chainId: 1
) {
address
asset {
yield {
apr
}
}
avgApy
avgNetApy
performanceFee
managementFee
maxRate
rewards {
asset {
address
chain {
id
}
}
supplyApr
yearlySupplyTokens
}
}
}Share Price (Token Value)
All Vaults
Morpho Vaults V2
query {
vaultV2s(first: 10) {
items {
address
totalSupply
totalAssets
}
}
}Specific Vault
Morpho Vaults V2
query {
vaultV2ByAddress(
address: "0x04422053aDDbc9bB2759b248B574e3FCA76Bc145"
chainId: 1
) {
totalAssets
totalSupply
}
}Allocation & Strategy
Vault V2 allocation data is expressed via adapters, whereas Vault V1 allocations reference the underlying Morpho Markets V1. Keep that distinction in mind when mapping results.
Current Allocations
All Vaults
Morpho Vaults V2
query {
vaultV2s(first: 10) {
items {
address
totalAssetsUsd
totalAssets
totalSupply
adapters {
items {
address
assets
assetsUsd
type
}
}
}
}
}Specific Vault
Morpho Vaults V2
query {
vaultV2ByAddress(
address: "0x04422053aDDbc9bB2759b248B574e3FCA76Bc145"
chainId: 1
) {
totalAssetsUsd
totalAssets
totalSupply
adapters {
items {
address
assets
assetsUsd
type
}
}
}
}Strategy: Vault Queues (Morpho Vaults V1)
All Vaults
query {
vaults(first: 100, orderBy: TotalAssetsUsd, orderDirection: Desc) {
items {
address
state {
totalAssets
lastTotalAssets
allocation {
supplyQueueIndex
withdrawQueueIndex
market {
uniqueKey
}
}
}
}
}
}Configuration & Curation
Vault Parameters
All Vaults
Morpho Vaults V2
query {
vaultV2s(first: 10) {
items {
address
name
listed
metadata {
description
forumLink
image
}
allocators {
allocator {
address
}
}
owner {
address
}
curators {
items {
addresses {
address
}
}
}
sentinels {
sentinel {
address
}
}
timelocks {
duration
selector
functionName
}
}
}
}Specific Vault
Morpho Vaults V2
query {
vaultV2ByAddress(
address: "0x04422053aDDbc9bB2759b248B574e3FCA76Bc145"
chainId: 1
) {
address
name
listed
metadata {
description
forumLink
image
}
allocators {
allocator {
address
}
}
owner {
address
}
curators {
items {
addresses {
address
}
}
}
sentinels {
sentinel {
address
}
}
timelocks {
duration
selector
functionName
}
}
}Pending Actions
Morpho Vaults V2
query VaultV2PendingActions {
vaultV2ByAddress(
address: "VAULT_ADDRESS"
chainId: 1
) {
address
name
# pending timelocked actions
pendingConfigs(first: 100) {
items {
validAt
functionName
txHash
decodedData {
__typename
... on VaultV2SetIsAllocatorPendingData {
isAllocator
account { address }
}
... on VaultV2SetReceiveSharesGatePendingData {
receiveSharesGate
}
... on VaultV2SetSendSharesGatePendingData {
sendSharesGate
}
... on VaultV2SetReceiveAssetsGatePendingData {
receiveAssetsGate
}
... on VaultV2SetSendAssetsGatePendingData {
sendAssetsGate
}
... on VaultV2SetAdapterRegistryPendingData {
adapterRegistry
}
... on VaultV2AdapterPendingData {
adapterAddress
}
... on VaultV2TimelockPendingData {
timelock
selector
functionName
}
... on VaultV2SetPerformanceFeePendingData {
performanceFee
}
... on VaultV2SetManagementFeePendingData {
managementFee
}
... on VaultV2SetPerformanceFeeRecipientPendingData {
performanceFeeRecipient
}
... on VaultV2SetManagementFeeRecipientPendingData {
managementFeeRecipient
}
... on VaultV2IncreaseCapPendingData {
cap
config {
id
type
}
}
... on VaultV2SetForceDeallocatePenaltyPendingData {
adapterAddress
forceDeallocatePenalty
}
... on VaultV2AbdicatePendingData {
selector
functionName
}
}
}
}
}
}Risk Indicators
Vault Warnings
a. Warning type can be:
- unrecognized_deposit_asset,
- unrecognized_vault_curator.
- not_whitelisted.
b. Warning level is either:
YELLOW,RED.
Morpho Vaults V2
query {
vaultV2s(first: 5) {
items {
name
warnings {
type
level
}
}
}
}You can read more about warnings in the dedicated section here.
Vault Curation
Note: These curator-focused endpoints currently expose Vault V1 data.
Current Vaults Pending Caps
query {
vaults {
items {
pendingCaps {
validAt
supplyCap
market {
uniqueKey
}
}
}
}
}Current Vaults Allocators
Morpho Vaults V2
query {
vaultV2s(first: 10) {
items {
name
allocators {
allocator {
address
}
}
}
}
}Fee Wrapper
A Fee Wrapper is a Vault V2 configured in a specific, constrained mode that enables distribution channels to add a fee layer on top of an existing Morpho Vault V2.
FeeWrapper List
Unique FeeWrapper
query VaultV2ByAddress {
vaultV2ByAddress(
address: "0xd4468EF3745c315949a97090eD27b3F73b9b7C02"
chainId: 8453
) {
type
address
name
}
}FeeWrapper Exposure
Unique FeeWrapper
query VaultV2ByAddress {
vaultV2ByAddress(
address: "0xd4468EF3745c315949a97090eD27b3F73b9b7C02"
chainId: 8453
) {
type
adapters {
items {
type
address
... on MorphoVaultV2Adapter {
address
innerVault {
address
name
}
}
}
}
historicalState {
sharePrice(options: {
startTimestamp: 1771015645
endTimestamp: 1771915645
interval: HOUR
}) {
x
y
}
}
}
}FeeWrapper Yield
Unique FeeWrapper
query VaultV2ByAddress {
vaultV2ByAddress(
address: "0xd4468EF3745c315949a97090eD27b3F73b9b7C02"
chainId: 8453
) {
type
apy
avgNetApyExcludingRewards
avgNetApy
performanceFee
performanceFeeRecipient
managementFee
managementFeeRecipient
rewards {
asset {
symbol
address
}
supplyApr
}
}
}Position Tracking
Vault Depositors
Specific Vault
Morpho Vaults V2
query {
vaultV2ByAddress(
address: "0x04422053aDDbc9bB2759b248B574e3FCA76Bc145"
chainId: 1
) {
positions(first: 10, skip:0) {
items {
user {
address
}
assets
assetsUsd
shares
}
}
totalSupply
asset {
address
symbol
}
}
}Set of Vaults (Morpho Vaults V1)
Vault V2 does not yet expose an equivalent batched depositor query.
query {
vaultPositions(
first: 10
orderBy: Shares
orderDirection: Desc
where: {
vaultAddress_in: [
"0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
"0x73e65DBD630f90604062f6E02fAb9138e713edD9"
]
}
) {
items {
vault {
address
}
user {
address
}
state {
shares
assets
assetsUsd
}
}
}
}User Positions
User All Vaults Position
query GetUserVaultPositions($address: String!, $chainId: Int!) {
userByAddress(address: $address, chainId: $chainId) {
id
vaultV2Positions {
shares
vault {
address
symbol
}
}
vaultPositions {
state {
shares
}
vault {
address
symbol
}
}
}
}{
"address": "USER_ADDRESS",
"chainId": 8453
}User Account Overview
query {
userByAddress(
chainId: 1
address: "0x821880a3E2bac432d67E5155e72BB655Ef65fa5E"
) {
address
marketPositions {
market {
uniqueKey
}
borrowAssets
borrowAssetsUsd
supplyAssets
supplyAssetsUsd
}
vaultPositions {
vault {
address
name
}
assets
assetsUsd
shares
}
transactions {
hash
timestamp
type
}
}
}Transaction History
Specific Vault
Morpho Vaults V2
query {
vaultV2transactions(
first: 10
skip: 0
where: { vaultAddress_in: "0x04422053aDDbc9bB2759b248B574e3FCA76Bc145" }
) {
items {
vault {
address
}
type
shares
blockNumber
timestamp
txHash
txIndex
}
}
}Latest Transactions (All Vaults)
query {
transactions(
first: 10
orderBy: Timestamp
orderDirection: Desc
where: { type_in: [MetaMorphoFee, MetaMorphoWithdraw, MetaMorphoWithdraw] }
) {
items {
hash
timestamp
type
chain {
id
network
}
user {
address
}
data {
... on VaultTransactionData {
shares
assets
vault {
address
}
}
... on MarketTransferTransactionData {
shares
market {
uniqueKey
}
}
}
}
}
}Public Allocator
Configuration
query {
vaultByAddress(
address: "0x38989BBA00BDF8181F4082995b3DEAe96163aC5D"
chainId: 1
) {
address
publicAllocatorConfig {
fee
flowCaps {
market {
uniqueKey
}
maxIn
maxOut
}
}
}
}Reallocations
query {
vaultReallocates(
first: 10
skip: 0
orderBy: Timestamp
where: {vaultAddress_in:["0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"]}
orderDirection: Desc
) {
items {
id
timestamp
hash
blockNumber
caller
shares
assets
type
vault {
id
chain {
id
}
}
market {
id
uniqueKey
lltv
oracleAddress
irmAddress
creationBlockNumber
loanAsset {
symbol
}
collateralAsset {
symbol
}
}
}
pageInfo {
countTotal
count
skip
limit
}
}
}Historical Data
APY Historical State (Morpho Vaults V1)
All Vaults
query VaultApys($options: TimeseriesOptions) {
vaults(first: 10, orderBy: TotalAssetsUsd, orderDirection: Desc) {
items {
address
historicalState {
apy(options: $options) {
x
y
}
netApy(options: $options) {
x
y
}
}
}
}
}{
"options": {
"startTimestamp": 1716249600,
"endTimestamp": 1716422400,
"interval": "DAY"
}
}Historical Allocation (Morpho Vaults V1)
All Vaults
query Vaults($options: TimeseriesOptions) {
vaults (first: 10, skip: 0, orderBy: TotalAssetsUsd, orderDirection: Desc) {
items {
address
name
historicalState {
allocation {
market {
uniqueKey
}
supplyAssets(options: $options) {
x
y
}
supplyAssetsUsd(options: $options) {
x
y
}
}
}
}
}
}{
"options": {
"startTimestamp": 1768211594,
"endTimestamp": 1768384394,
"interval": "DAY"
}
}