API

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