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

query {
  vaultV2s(first: 1000, where: { chainId_in: [1, 8453] }) {
    items {
      address
      symbol
      name
      listed
      asset {
        id
        address
        decimals
      }
      chain {
        id
        network
      }
    }
  }
}
query {
  vaults(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

query {
  vaultV2s(first: 100) {
    items {
      address
      totalAssets
      totalAssetsUsd
      totalSupply
      liquidityUsd
      idleAssetsUsd
      }
    }
  }
query {
  vaults(first: 100, orderBy: TotalAssetsUsd, orderDirection: Desc) {
    items {
      address
      state {
        totalAssets
        totalAssetsUsd
        totalSupply
      }
    }
  }
}

Specific Vault

query {
  vaultV2ByAddress(
    address: "0x04422053aDDbc9bB2759b248B574e3FCA76Bc145"
    chainId: 1
  ) {
    address
     totalAssets
      totalAssetsUsd
      totalSupply
      liquidity
      liquidityUsd
      idleAssetsUsd
  }
}
query {
  vaultByAddress(
    address: "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
    chainId: 1
  ) {
    address
    state {
      totalAssets
      totalAssetsUsd
      totalSupply
    }
    liquidity {
      underlying
      usd
    }
  }
}

APY (Native + Rewards)

All Vaults

query {
  vaultV2s(first: 10) {
    items {
      address
      asset {
        yield {
          apr
        }
      }
      avgNetApyExcludingRewards
      avgNetApy
      performanceFee
      managementFee
      maxRate
      rewards {
        asset {
          address
          chain {
            id
          }
        }
        supplyApr
      }
    }
  }
}
query {
  vaults(first: 100, orderBy: TotalAssetsUsd, orderDirection: Desc) {
    items {
      address
      asset {
        yield {
          apr
        }
      }
      state {
        apy
        netApy
        netApyExcludingRewards
        avgNetApyExcludingRewards
        avgNetApy
        dailyApy: avgNetApyExcludingRewards(lookback: ONE_DAY)
        dailyNetApy: avgNetApy(lookback: ONE_DAY)
        weeklyApy: avgNetApyExcludingRewards(lookback: SEVEN_DAYS)
        weeklyNetApy: avgNetApy(lookback: SEVEN_DAYS)
        monthlyApy: avgNetApyExcludingRewards(lookback: THIRTY_DAYS)
        monthlyNetApy: avgNetApy(lookback: THIRTY_DAYS)
        allRewards {
          asset {
            address
            chain {
              id
            }
          }
          supplyApr
        }
        allocation {
          supplyAssets
          supplyAssetsUsd
          market {
            marketId
            state {
              rewards {
                asset {
                  address
                  chain {
                    id
                  }
                }
                supplyApr
                borrowApr
              }
            }
          }
        }
      }
    }
  }
}

Specific Vault

query {
  vaultV2ByAddress(
    address: "0x04422053aDDbc9bB2759b248B574e3FCA76Bc145"
    chainId: 1
  ) {
    address
    asset {
      yield {
        apr
      }
    }
    avgNetApyExcludingRewards
    avgNetApy
    performanceFee
    managementFee
    maxRate
    rewards {
      asset {
        address
        chain {
          id
        }
      }
      supplyApr
    }
  }
}
query {
  vaultByAddress(
    address: "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
    chainId: 1
  ) {
    address
    asset {
      yield {
        apr
      }
    }
    state {
      apy
      netApy
      netApyExcludingRewards
      avgNetApyExcludingRewards
      avgNetApy
      dailyApy: avgNetApyExcludingRewards(lookback: ONE_DAY)
      dailyNetApy: avgNetApy(lookback: ONE_DAY)
      weeklyApy: avgNetApyExcludingRewards(lookback: SEVEN_DAYS)
      weeklyNetApy: avgNetApy(lookback: SEVEN_DAYS)
      monthlyApy: avgNetApyExcludingRewards(lookback: THIRTY_DAYS)
      monthlyNetApy: avgNetApy(lookback: THIRTY_DAYS)
      allRewards {
        asset {
          address
          chain {
            id
          }
        }
        supplyApr
      }
      allocation {
        supplyAssets
        supplyAssetsUsd
        market {
          marketId
          state {
            rewards {
              asset {
                address
                chain {
                  id
                }
              }
              supplyApr
              borrowApr
            }
          }
        }
      }
    }
  }
}

Share Price (Token Value)

All Vaults

query {
  vaultV2s(first: 10) {
    items {
      address
      totalSupply
      totalAssets
      sharePrice
    }
  }
}
query {
  vaults(first: 100, orderBy: TotalAssetsUsd, orderDirection: Desc) {
    items {
      address
      state {
        sharePriceNumber
        sharePriceUsd
      }
    }
  }
}

Specific Vault

query {
  vaultV2ByAddress(
    address: "0x04422053aDDbc9bB2759b248B574e3FCA76Bc145"
    chainId: 1
  ) {
    totalAssets
    totalSupply
    sharePrice
  }
}
query {
  vaultByAddress(
    address: "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
    chainId: 1
  ) {
    address
    state {
      sharePriceNumber
      sharePriceUsd
    }
  }
}

Allocation & Strategy

Vault V2 allocation data is expressed via adapters, whereas Vault V1 allocations reference the underlying variable rate markets. For Vault V2, MorphoMarketV1Adapter exposes its per-market breakdown through positions.items: use each position's state.supplyAssetsUsd for market-level rows, and avoid counting both adapter.assetsUsd and the nested positions.items.state.supplyAssetsUsd in the same table. Include idleAssetsUsd when computing allocation percentages that should sum to 100%.

Current Allocations

All Vaults

query {
  vaultV2s(first: 10) {
    items {
      address
      totalAssetsUsd
      totalAssets
      totalSupply
      idleAssets
      idleAssetsUsd
      adapters(first: 5) {
        items {
          __typename
          address
          assets
          assetsUsd
          type
          ... on MorphoMarketV1Adapter {
            positions(first: 10) {
              items {
                market {
                  marketId
                  collateralAsset {
                    symbol
                  }
                  loanAsset {
                    symbol
                  }
                }
                state {
                  supplyAssets
                  supplyAssetsUsd
                }
              }
            }
          }
          ... on MetaMorphoAdapter {
            metaMorpho {
              address
              name
              asset {
                symbol
              }
            }
          }
          ... on MorphoVaultV2Adapter {
            innerVault {
              address
              name
              asset {
                symbol
              }
            }
          }
        }
      }
    }
  }
}
query {
  vaults(first: 100, orderBy: TotalAssetsUsd, orderDirection: Desc) {
    items {
      address
      state {
        allocation {
          market {
            marketId
            loanAsset {
              name
            }
            collateralAsset {
              name
            }
            oracle {
              address
            }
            irmAddress
            lltv
          }
          supplyCap
          supplyAssets
          supplyAssetsUsd
        }
      }
    }
  }
}

Specific Vault

query {
  vaultV2ByAddress(
    address: "0x04422053aDDbc9bB2759b248B574e3FCA76Bc145"
    chainId: 1
  ) {
    address
    totalAssetsUsd
    totalAssets
    totalSupply
    idleAssets
    idleAssetsUsd
    adapters(first: 20) {
      items {
        __typename
        address
        assets
        assetsUsd
        type
        ... on MorphoMarketV1Adapter {
          positions(first: 50) {
            items {
              market {
                marketId
                collateralAsset {
                  symbol
                }
                loanAsset {
                  symbol
                }
              }
              state {
                supplyAssets
                supplyAssetsUsd
              }
            }
          }
        }
        ... on MetaMorphoAdapter {
          metaMorpho {
            address
            name
            asset {
              symbol
            }
          }
        }
        ... on MorphoVaultV2Adapter {
          innerVault {
            address
            name
            asset {
              symbol
            }
          }
        }
      }
    }
  }
}
query {
  vaultByAddress(
    address: "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
    chainId: 1
  ) {
    address
    state {
      allocation {
        market {
          marketId
          loanAsset {
            name
          }
          collateralAsset {
            name
          }
          oracle {
            address
          }
          irmAddress
          lltv
        }
        supplyCap
        supplyAssets
        supplyAssetsUsd
      }
    }
  }
}

Strategy: Vault Queues (Morpho Vaults V1)

query {
  vaults(first: 100, orderBy: TotalAssetsUsd, orderDirection: Desc) {
    items {
      address
      state {
        totalAssets
        allocation {
          supplyQueueIndex
          withdrawQueueIndex
          market {
            marketId
          }
        }
      }
    }
  }
}
query {
  vaultByAddress(
    address: "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
    chainId: 1
  ) {
    address
    state {
      totalAssets
      allocation {
        supplyQueueIndex
        withdrawQueueIndex
        market {
          marketId
        }
      }
    }
  }
}

Configuration & Curation

Vault Parameters

All Vaults

query {
  vaultV2s(first: 10) {
    items {
      address
      name
      listed
      metadata {
        description
        image
      }
      allocators {
        allocator {
          address
        }
      }
      owner {
        address
      }
      curators {
        items {
          addresses {
            address
          }
        }
      }
      sentinels {
        sentinel {
          address
        }
      }
      timelocks {
        duration
        selector
        functionName
      }
    }
  }
}
query {
  vaults(first: 100, orderBy: TotalAssetsUsd, orderDirection: Desc) {
    items {
      address
      name
      listed
      metadata {
        description
      }
      allocators {
        address
      }
      state {
        owner
        curator
        guardian
        timelock
        curators {
          name
          socials {
            type
            url
          }
          image
        }
      }
    }
  }
}

Specific Vault

query {
  vaultV2ByAddress(
    address: "0x04422053aDDbc9bB2759b248B574e3FCA76Bc145"
    chainId: 1
  ) {
    address
    name
    listed
    metadata {
      description
      image
    }
    allocators {
      allocator {
        address
      }
    }
    owner {
      address
    }
    curators {
      items {
        addresses {
          address
        }
      }
    }
    sentinels {
      sentinel {
        address
      }
    }
    timelocks {
      duration
      selector
      functionName
    }
  }
}
query {
  vaultByAddress(
    address: "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
    chainId: 1
  ) {
    address
    name
    listed
    metadata {
      description
    }
    allocators {
      address
    }
    state {
      owner
      curator
      guardian
      timelock
      curators {
         name
        socials {
          type
          url
          }
        image
      }
    }
  }
}

Pending Actions

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
          }
        }
      }
    }
  }
}
query VaultV1PendingActions {
  vaultByAddress(
    address: "VAULT_ADDRESS"
    chainId: 1
  ) {
    address
    name

    state {
      # pending owner transfer (separate from pendingConfigs)
      pendingOwner

      # pending timelocked actions
      pendingConfigs(first: 50) {
        items {
          validAt
          functionName
          txHash
          decodedData {
            __typename

            ... on VaultSetCapPendingData {
              supplyCap
              market {
                marketId
                loanAsset { symbol }
                collateralAsset { symbol }
              }
            }

            ... on VaultSetTimelockPendingData {
              timelock
            }

            ... on VaultSetGuardianPendingData {
              guardian { address }
            }

            ... on VaultRemoveMarketPendingData {
              caller { address }
              market {
                marketId
                loanAsset { symbol }
                collateralAsset { symbol }
              }
            }
          }
        }
      }
    }
  }
}

Risk Indicators

Vault Warnings

a. Warning type can be:

  • unrecognized_deposit_asset,
  • unrecognized_vault_curator.
  • not_whitelisted.

b. Warning level is either:

  • YELLOW,
  • RED.
query {
  vaultV2s(first: 5) {
    items {
      name
      warnings {
        type
        level
      }
    }
  }
}
query {
  vaults {
    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 {
          marketId
        }
      }
    }
  }
}

Current Vaults Allocators

query {
  vaultV2s(first: 10) {
    items {
      name
      allocators {
        allocator {
          address
        }
      }
    }
  }
}
query {
  vaults(first: 10) {
    items {
      name
      allocators {
        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

query VaultV2ByAddress {
  vaultV2ByAddress(
    address: "0xd4468EF3745c315949a97090eD27b3F73b9b7C02"
    chainId: 8453
  ) {
    type
    address
    name
  }
}
query VaultV2s {
  vaultV2s(skip: 0, first: 20, where: { type_in: [FeeWrapper] }) {
    items {
      address
      name
    }
  }
}

FeeWrapper Exposure

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
      }
    }
  }
}
query VaultV2s {
  vaultV2s(skip: 0, first: 20, where: { type_in: [FeeWrapper] }) {
    items {
      type
      address
      adapters {
        items {
          type
          address
          ... on MorphoVaultV2Adapter {
            address
            innerVault {
              address
              name
            }
          }
        }
      }
      historicalState {
        sharePrice(options: {
          startTimestamp: 1771015645
          endTimestamp: 1771915645
          interval: HOUR
        }) {
          x
          y
        }
      }
    }
  }
}

FeeWrapper Yield

query VaultV2ByAddress {
  vaultV2ByAddress(
    address: "0xd4468EF3745c315949a97090eD27b3F73b9b7C02"
    chainId: 8453
  ) {
    type
    apy
    avgNetApyExcludingRewards
    avgNetApy
    performanceFee
    performanceFeeRecipient
    managementFee
    managementFeeRecipient
    rewards {
      asset {
        symbol
        address
      }
      supplyApr
    }
  }
}
query VaultV2s {
  vaultV2s(skip: 0, first: 20, where: { type_in: [FeeWrapper] }) {
    items {
      type
      address
      apy
      avgNetApyExcludingRewards
      avgNetApy
      performanceFee
      performanceFeeRecipient
      managementFee
      managementFeeRecipient
      rewards {
        asset {
          symbol
          address
        }
        supplyApr
      }
    }
  }
}

Position Tracking

Vault Depositors

Specific Vault

query {
  vaultV2ByAddress(
    address: "0x04422053aDDbc9bB2759b248B574e3FCA76Bc145"
    chainId: 1
  ) {
    positions(first: 10, skip:0) {
      items {
        user {
          address
        }
        assets
        assetsUsd
        shares
      }
    }
    totalSupply
    asset {
      address
      symbol
    }
  }
}
query {
  vaultPositions(
    first: 10
    orderBy: Shares
    orderDirection: Desc
    where: { vaultAddress_in: ["0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"] }
  ) {
    items {
      user {
        address
      }
      state {
        shares
        assets
        assetsUsd
      }
    }
  }
}

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) {
    address
    chain {
      id
    }
    vaultV2Positions {
      shares
      vault {
        address
        symbol
      }
    }
    vaultPositions {
      state {
        shares
      }
      vault {
        address
        symbol
      }
    }
  }
}

Query Variables example:

{
  "address": "USER_ADDRESS",
  "chainId": 8453
}

User Account Overview

query {
  userByAddress(
    chainId: 1
    address: "0x821880a3E2bac432d67E5155e72BB655Ef65fa5E"
  ) {
    address
    marketPositions {
      market {
        marketId
      }
      state {
        borrowAssets
        borrowAssetsUsd
        supplyAssets
        supplyAssetsUsd
      }
    }
    vaultPositions {
      vault {
        address
        name
      }
      state {
        assets
        assetsUsd
        shares
      }
    }
    vaultV2Positions {
      vault {
        address
        name
      }
      assets
      assetsUsd
      shares
    }
  }
  vaultV1Transactions(
    first: 10
    orderBy: Time
    orderDirection: Desc
    where: {
      userAddress_in: ["0x821880a3E2bac432d67E5155e72BB655Ef65fa5E"]
      chainId_in: [1]
    }
  ) {
    items {
      txHash
      timestamp
      type
    }
  }
  marketTransactions(
    first: 10
    orderBy: Timestamp
    orderDirection: Desc
    where: {
      userAddress_in: ["0x821880a3E2bac432d67E5155e72BB655Ef65fa5E"]
      chainId_in: [1]
    }
  ) {
    items {
      txHash
      timestamp
      type
    }
  }
  vaultV2transactions(
    first: 10
    orderBy: Time
    orderDirection: Desc
    where: {
      userAddress_in: ["0x821880a3E2bac432d67E5155e72BB655Ef65fa5E"]
      chainId_in: [1]
    }
  ) {
    items {
      txHash
      timestamp
      type
      shares
      assets
      vault {
        address
        name
      }
    }
  }
}

User Earnings

Earnings on a Specific Vault

query {
  vaultV2PositionByAddress(
    userAddress: "USERADDRESS"
    vaultAddress: "MORPHOVAULTV2ADDRESS"
    chainId: 1
  ) {
    vault {
      name
      address
    }
    assets
    assetsUsd
    shares
    pnl
    pnlUsd
    roe # time-weighted return since inception (non-annualized)
  }
}
query {
  vaultPositions(where: {
    userAddress_in: ["USERADDRESS"]
    vaultAddress_in: ["MORPHOVAULTV1ADDRESS"]
    chainId_in: [1]
  }) {
    items {
      vault {
        name
        address
      }
      state {
        assets
        assetsUsd
        shares
        pnl
        pnlUsd
        roe # time-weighted return since inception (non-annualized)
      }
    }
  }
}

Earnings Across All Vaults

query {
  userByAddress(address: "USERADDRESS", chainId: 1) {
    vaultV2Positions {
      vault {
        name
        address
      }
      assets
      assetsUsd
      shares
      pnl
      pnlUsd
      roe # time-weighted return since inception (non-annualized)
    }
    vaultPositions {
      vault {
        name
        address
      }
      state {
        assets
        assetsUsd
        shares
        pnl
        pnlUsd
        roe # time-weighted return since inception (non-annualized)
      }
    }
  }
}

Transaction History

Specific Vault

query {
  vaultV2transactions(
    skip: 0
    first: 10
    orderBy: Time
    orderDirection: Desc
    where: {
      vaultAddress_in: "0x04422053aDDbc9bB2759b248B574e3FCA76Bc145"
      chainId_in: [1]
    }
  ) {
    items {
      vault {
        address
      }
      type
      shares
      blockNumber
      timestamp
      txHash
      txIndex
      logIndex
    }
  }
}
query {
  vaultV1Transactions(
    first: 10
    orderBy: Time
    orderDirection: Desc
    where: {
      vaultAddress_in: ["0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"]
      chainId_in: [1]
    }
  ) {
    items {
      vault {
        address
      }
      type
      shares
      assets
      blockNumber
      timestamp
      txHash
      txIndex
      logIndex
    }
  }
}

Latest Transactions (All Vaults)

query {
  vaultV2transactions(
    first: 10
    orderBy: Time
    orderDirection: Desc
    where: { type_in: [Deposit, Withdraw] }
  ) {
    items {
      type
      shares
      assets
      blockNumber
      timestamp
      txHash
      logIndex
      chain {
        id
        network
      }
      vault {
        address
      }
      data {
        ... on VaultV2DepositData {
          sender
          onBehalf
        }
        ... on VaultV2WithdrawData {
          sender
          receiver
          onBehalf
        }
      }
    }
  }
}
query {
  vaultV1Transactions(
    first: 10
    orderBy: Time
    orderDirection: Desc
  ) {
    items {
      type
      shares
      assets
      blockNumber
      timestamp
      txHash
      logIndex
      chain {
        id
        network
      }
      vault {
        address
      }
      data {
        ... on VaultV1DepositData {
          sender
          onBehalf
        }
        ... on VaultV1WithdrawData {
          sender
          receiver
          onBehalf
        }
      }
    }
  }
}

Public Allocator

Configuration

query {
  vaultByAddress(
    address: "0x38989BBA00BDF8181F4082995b3DEAe96163aC5D"
    chainId: 1
  ) {
    address
    publicAllocatorConfig {
      fee
      flowCaps {
        market {
          marketId
        }
        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 {
     address
     chain {
      id
     }
    }
    market {
     marketId
     chain {
      id
     }
     lltv
     oracle {
      address
     }
     irmAddress
     creationBlockNumber
     loanAsset {
      symbol
     }
     collateralAsset {
      symbol
     }
    }
   }
   pageInfo {
    countTotal
    count
    skip
    limit
   }
  }
 }

Historical Data

APY Historical State (Morpho Vaults V1)

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 VaultApys($options: TimeseriesOptions) {
  vaultByAddress(address: "0x73e65DBD630f90604062f6E02fAb9138e713edD9") {
    address
    historicalState {
      apy(options: $options) {
        x
        y
      }
      netApy(options: $options) {
        x
        y
      }
    }
  }
}

Query Variables:

{
  "options": {
    "startTimestamp": 1716249600,
    "endTimestamp": 1716422400,
    "interval": "DAY"
  }
}

Historical Allocation (Morpho Vaults V1)

query Vaults($options: TimeseriesOptions) {
  vaults (first: 10, skip: 0, orderBy: TotalAssetsUsd, orderDirection: Desc) {
    items {
      address
      name
      historicalState {
        allocation {
          market {
            marketId
          }
          supplyAssets(options: $options) {
            x
            y
          }
          supplyAssetsUsd(options: $options)  {
            x
            y
          }
        }
      } 
    }
  }
}
query VaultApys($options: TimeseriesOptions) {
  vaultByAddress(address: "0x73e65DBD630f90604062f6E02fAb9138e713edD9") {
    address
    historicalState {
      allocation {
        market {
          marketId
        }
        supplyAssets(options: $options) {
          x
          y
        }
        supplyAssetsUsd(options: $options) {
          x
          y
        }
      }
    }
  }
}

Query Variables:

{
  "options": {
    "startTimestamp": 1768211594,
    "endTimestamp": 1768384394,
    "interval": "DAY"
  }
}

On this page