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
Basic Queries
Morpho Vaults and their current states
query {
vaults(first: 1000, where: { chainId_in: [1, 8453] }) {
items {
address
symbol
name
whitelisted
asset {
id
address
decimals
}
chain {
id
network
}
}
}
}
Total deposits for all vaults
query {
vaults(first: 100, orderBy: TotalAssetsUsd, orderDirection: Desc) {
items {
address
state {
totalAssets
totalAssetsUsd
totalSupply
}
}
}
}
Total deposits for a specific vault
query {
vaultByAddress(
address: "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
chainId: 1
) {
address
state {
totalAssets
totalAssetsUsd
totalSupply
}
}
}
APY for all vaults
query {
vaults(first: 100, orderBy: TotalAssetsUsd, orderDirection: Desc) {
items {
address
asset {
yield {
apr
}
}
state {
apy
netApy
netApyWithoutRewards
dailyApy
dailyNetApy
weeklyApy
weeklyNetApy
monthlyApy
monthlyNetApy
rewards {
asset {
address
}
supplyApr
yearlySupplyTokens
}
allocation {
supplyAssets
supplyAssetsUsd
market {
uniqueKey
state {
rewards {
asset {
address
}
supplyApr
borrowApr
}
}
}
}
}
}
}
}
APY for a specific vault
query {
vaultByAddress(
address: "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
chainId: 1
) {
address
asset {
yield {
apr
}
}
state {
apy
netApy
netApyWithoutRewards
dailyApy
dailyNetApy
weeklyApy
weeklyNetApy
monthlyApy
monthlyNetApy
rewards {
asset {
address
}
supplyApr
yearlySupplyTokens
}
allocation {
supplyAssets
supplyAssetsUsd
market {
uniqueKey
state {
rewards {
asset {
address
}
supplyApr
borrowApr
}
}
}
}
}
}
}
Current vault market allocations for all vaults
query {
vaults(first: 100, orderBy: TotalAssetsUsd, orderDirection: Desc) {
items {
address
state {
allocation {
market {
uniqueKey
loanAsset {
name
}
collateralAsset {
name
}
oracleAddress
irmAddress
lltv
}
supplyCap
supplyAssets
supplyAssetsUsd
}
}
}
}
}
Current vault market allocations for a specific vault
query {
vaultByAddress(
address: "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
chainId: 1
) {
address
state {
allocation {
market {
uniqueKey
loanAsset {
name
}
collateralAsset {
name
}
oracleAddress
irmAddress
lltv
}
supplyCap
supplyAssets
supplyAssetsUsd
}
}
}
}
Vault token price for all vaults
query {
vaults(first: 100, orderBy: TotalAssetsUsd, orderDirection: Desc) {
items {
address
state {
sharePrice
sharePriceUsd
}
}
}
}
Vault token price for a specific vault
query {
vaultByAddress(
address: "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
chainId: 1
) {
address
state {
sharePrice
sharePriceUsd
}
}
}
Vault configuration for all vaults
query {
vaults(first: 100, orderBy: TotalAssetsUsd, orderDirection: Desc) {
items {
address
name
whitelisted
metadata {
description
forumLink
image
curators {
image
name
url
}
}
allocators {
address
}
state {
owner
curator
guardian
timelock
}
}
}
}
Vault configuration for a specific vault
query {
vaultByAddress(
address: "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
chainId: 1
) {
address
name
whitelisted
metadata {
description
forumLink
image
curators {
image
name
url
}
}
allocators {
address
}
state {
owner
curator
guardian
timelock
}
}
}
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
}
}
}
}
}
}
Depositors for a set of vaults
query {
vaultPositions(
first: 10
orderBy: Shares
orderDirection: Desc
where: {
vaultAddress_in: [
"0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
"0x73e65DBD630f90604062f6E02fAb9138e713edD9"
]
}
) {
items {
vault {
address
}
user {
address
}
state {
shares
assets
assetsUsd
}
}
}
}
10 biggest positions for a specific vault
query {
vaultPositions(
first: 10
orderBy: Shares
orderDirection: Desc
where: { vaultAddress_in: ["0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"] }
) {
items {
user {
address
}
state {
shares
assets
assetsUsd
}
}
}
}
Transaction history for a specific vault
query {
transactions(
first: 10
orderBy: Timestamp
orderDirection: Desc
where: { vaultAddress_in: ["0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"] }
) {
items {
blockNumber
hash
type
user {
address
}
}
}
}
Vault queues for all vaults
query {
vaults(first: 100, orderBy: TotalAssetsUsd, orderDirection: Desc) {
items {
address
state {
totalAssets
lastTotalAssets
allocation {
supplyQueueIndex
withdrawQueueIndex
market {
uniqueKey
}
}
}
}
}
}
Vault queues for a specific vault
query {
vaultByAddress(
address: "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
chainId: 1
) {
address
state {
totalAssets
lastTotalAssets
allocation {
supplyQueueIndex
withdrawQueueIndex
market {
uniqueKey
}
}
}
}
}
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
}
}
}
User all vaults position
query GetAllUserPositions($chainId: Int!, $userAddress: String!) {
vaultPositions(
where: {
chainId_in: [$chainId]
shares_gte: 0
userAddress_in: [$userAddress]
}
) {
items {
id
assets
vault {
id
address
}
}
}
}
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 for 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
}
}
}
}
}
Historical vaults APY for a specific vault
query VaultApys($options: TimeseriesOptions) {
vaultByAddress(address: "0x73e65DBD630f90604062f6E02fAb9138e713edD9") {
address
historicalState {
apy(options: $options) {
x
y
}
netApy(options: $options) {
x
y
}
}
}
}
{
"options": {
"startTimestamp": 1716249600,
"endTimestamp": 1716422400,
"interval": "DAY"
}
}
Example:
