Skip to content

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
      whitelisted
      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
      whitelisted
      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
    whitelisted
    metadata {
      description
      forumLink
      image
    }
    allocators {
      allocator {
        address
      }
    }
    owner {
      address
    }
    curators {
      items {
        addresses {
          address
        }
      }
    }
    sentinels {
      sentinel {
        address
      }
    }
    timelocks {
      duration
      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
        }
      }
    }
  }
}

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

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

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
        }
      }
    }
  }
}
Query Variables:
{
  "options": {
    "startTimestamp": 1716249600,
    "endTimestamp": 1716422400,
    "interval": "DAY"
  }
}