Skip to main content

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 this window below:

Basic Queries

Morpho Vaults and their current states

query {
vaults {
items {
address
symbol
name
creationBlockNumber
creationTimestamp
creatorAddress
whitelisted
asset {
id
address
decimals
}
chain {
id
network
}
state {
id
apy
netApy
totalAssets
totalAssetsUsd
fee
timelock
}
}
}
}

Current vault market allocations

query {
vaultByAddress(
address: "0xbEef047a543E45807105E51A8BBEFCc5950fcfBa"
chainId: 1
) {
address
state {
allocation {
market {
uniqueKey
loanAsset {
name
}
collateralAsset {
name
}
oracleAddress
irmAddress
lltv
}
supplyCap
supplyAssets
supplyAssetsUsd
}
}
}
}

10 latest Morpho Vaults transactions

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
}
}
}
}
}
}

10 biggest positions for a specific vault

query {
vaultPositions(
first: 10
orderBy: Shares
orderDirection: Desc
where: { vaultAddress_in: ["0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"] }
) {
items {
shares
assets
assetsUsd
user {
address
}
}
}
}

User's vaults positions

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
}
}
}

Vaults potential warnings

a. Warnings type are:

  • unrecognized_deposit_asset,
  • unrecognized_vault_curator.
  • not_whitelisted.

b. Warning level is either:

  • YELLOW,
  • RED.
query {
vaults {
items {
name
warnings {
type
level
}
}
}
}

Config of the Public Allocator for a Morpho Vault

query {
vaultByAddress(
address: "0x38989BBA00BDF8181F4082995b3DEAe96163aC5D"
chainId: 1
) {
address
publicAllocatorConfig {
fee
flowCaps {
market {
uniqueKey
}
maxIn
maxOut
}
}
}
}

Reallocations made by a Morpho Vault

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
   }
  }
 }

Current vaults' pending caps

query {
vaults {
items {
pendingCaps {
validAt
supplyCap
market {
uniqueKey
}
}
}
}
}

Current vaults' allocators

query {
vaults {
items {
name
allocators {
address
}
}
}
}

Advanced Queries with variables

Historical vaults APY

query VaultApys($options: TimeseriesOptions) {
vaultByAddress(address: "0x38989BBA00BDF8181F4082995b3DEAe96163aC5D") {
address
historicalState {
apy(options: $options) {
x
y
}
netApy(options: $options) {
x
y
}
}
}
}
{
"options": {
"startTimestamp": 1716249600,
"endTimestamp": 1716422400,
"interval": "DAY"
}
}

Example: