curl --request POST \
--url https://api.vaults.fyi/alpha/advanced-analytics/{network}/{vaultId} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"select": {
"maxDrawdown": true,
"detailedVault": true,
"withdrawalPauseRatio": true,
"composition": true
}
}
'import requests
url = "https://api.vaults.fyi/alpha/advanced-analytics/{network}/{vaultId}"
payload = { "select": {
"maxDrawdown": True,
"detailedVault": True,
"withdrawalPauseRatio": True,
"composition": True
} }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
select: {
maxDrawdown: true,
detailedVault: true,
withdrawalPauseRatio: true,
composition: true
}
})
};
fetch('https://api.vaults.fyi/alpha/advanced-analytics/{network}/{vaultId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.vaults.fyi/alpha/advanced-analytics/{network}/{vaultId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'select' => [
'maxDrawdown' => true,
'detailedVault' => true,
'withdrawalPauseRatio' => true,
'composition' => true
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.vaults.fyi/alpha/advanced-analytics/{network}/{vaultId}"
payload := strings.NewReader("{\n \"select\": {\n \"maxDrawdown\": true,\n \"detailedVault\": true,\n \"withdrawalPauseRatio\": true,\n \"composition\": true\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.vaults.fyi/alpha/advanced-analytics/{network}/{vaultId}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"select\": {\n \"maxDrawdown\": true,\n \"detailedVault\": true,\n \"withdrawalPauseRatio\": true,\n \"composition\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.vaults.fyi/alpha/advanced-analytics/{network}/{vaultId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"select\": {\n \"maxDrawdown\": true,\n \"detailedVault\": true,\n \"withdrawalPauseRatio\": true,\n \"composition\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"vaultId": "<string>",
"network": "<string>",
"maxDrawdown": {
"mdd30days": 123,
"mdd90days": 123,
"mdd365days": 123
},
"detailedVault": {
"vaultId": "<string>",
"address": "<string>",
"name": "<string>",
"network": {
"chainId": 123,
"networkCaip": "<string>"
},
"asset": {
"address": "<string>",
"assetCaip": "<string>",
"name": "<string>",
"symbol": "<string>",
"decimals": 123,
"assetGroup": "<string>",
"assetLogo": "<string>",
"assetPriceInUsd": "<string>"
},
"isTransactional": true,
"isAppFeatured": true,
"protocol": {
"name": "<string>",
"displayName": "<string>",
"product": "<string>",
"version": "<string>",
"protocolUrl": "<string>",
"description": "<string>",
"protocolLogo": "<string>"
},
"tags": [
"<string>"
],
"holdersData": {
"totalCount": 123,
"totalBalance": "<string>",
"topHolders": [
{
"address": "<string>",
"lpTokenBalance": "<string>"
}
]
},
"apy": {
"1day": {
"base": 123,
"reward": 123,
"total": 123
},
"7day": {
"base": 123,
"reward": 123,
"total": 123
},
"30day": {
"base": 123,
"reward": 123,
"total": 123
},
"1hour": {
"base": 123,
"reward": 123,
"total": 123
}
},
"tvl": {
"usd": "<string>",
"native": "<string>"
},
"lastUpdateTimestamp": 123,
"creationData": {
"deploymentTimestamp": 123
},
"rewards": [
{
"asset": {
"address": "<string>",
"assetCaip": "<string>",
"name": "<string>",
"symbol": "<string>",
"decimals": 123,
"assetGroup": "<string>",
"assetLogo": "<string>",
"assetPriceInUsd": "<string>"
},
"apy": {
"1hour": 123,
"1day": 123,
"7day": 123,
"30day": 123
}
}
],
"isCorrupted": true,
"userEventsIndexed": true,
"warnings": [
"<string>"
],
"flags": [
{
"content": "<string>",
"endDate": 123,
"resolution": "<string>"
}
],
"lendUrl": "<string>",
"description": "<string>",
"protocolVaultUrl": "<string>",
"score": {
"vaultScore": 123,
"vaultTvlScore": 123,
"protocolTvlScore": 123,
"holderScore": 123,
"networkScore": 123,
"assetScore": 123,
"totalScorePenalty": 123,
"penaltyComponents": [
{
"content": "<string>",
"endDate": 123,
"type": "flag",
"value": 123,
"resolution": "<string>"
}
]
},
"additionalIncentives": "<string>",
"curator": {
"name": "<string>",
"description": "<string>",
"websiteUrl": "<string>"
},
"lpToken": {
"address": "<string>",
"tokenCaip": "<string>",
"name": "<string>",
"symbol": "<string>",
"decimals": 123
},
"remainingCapacity": "<string>",
"maxCapacity": "<string>",
"childrenVaults": [
{
"vaultId": "<string>",
"address": "<string>",
"asset": {
"address": "<string>",
"assetCaip": "<string>",
"name": "<string>",
"symbol": "<string>",
"decimals": 123,
"assetGroup": "<string>",
"assetLogo": "<string>",
"assetPriceInUsd": "<string>"
},
"lpToken": {
"address": "<string>",
"tokenCaip": "<string>",
"name": "<string>",
"symbol": "<string>",
"decimals": 123
},
"additionalAssets": [
{
"address": "<string>",
"assetCaip": "<string>",
"name": "<string>",
"symbol": "<string>",
"decimals": 123,
"assetGroup": "<string>",
"assetLogo": "<string>",
"assetPriceInUsd": "<string>"
}
]
}
],
"additionalAssets": [
{
"address": "<string>",
"assetCaip": "<string>",
"name": "<string>",
"symbol": "<string>",
"decimals": 123,
"assetGroup": "<string>",
"assetLogo": "<string>",
"assetPriceInUsd": "<string>"
}
],
"transactionalProperties": {
"rewardsSupported": true
},
"fees": {
"performanceFee": 123,
"managementFee": 123,
"withdrawalFee": 123,
"depositFee": 123
},
"apyComposite": {
"totalApy": {
"1day": {
"base": 123,
"reward": 123,
"total": 123
},
"7day": {
"base": 123,
"reward": 123,
"total": 123
},
"30day": {
"base": 123,
"reward": 123,
"total": 123
},
"1hour": {
"base": 123,
"reward": 123,
"total": 123
}
},
"intrinsicApy": {
"1day": {
"base": 123,
"reward": 123,
"total": 123
},
"7day": {
"base": 123,
"reward": 123,
"total": 123
},
"30day": {
"base": 123,
"reward": 123,
"total": 123
},
"1hour": {
"base": 123,
"reward": 123,
"total": 123
}
},
"asset": {
"address": "<string>",
"assetCaip": "<string>",
"name": "<string>",
"symbol": "<string>",
"decimals": 123,
"assetGroup": "<string>",
"assetLogo": "<string>",
"assetPriceInUsd": "<string>"
},
"vault": {
"vaultId": "<string>",
"address": "<string>"
}
}
},
"withdrawalPauseRatio": 123,
"composition": [
{
"id": "<string>",
"supplyAssets": "<string>",
"allocation": 123,
"name": "<string>"
}
]
}{
"statusCode": 123,
"error": "Bad Request",
"message": "<string>",
"errorId": "<string>"
}{
"error": "Unauthorized",
"message": "An API key is required to access this service. Sign up at https://portal.vaults.fyi/signup to generate a key. We offer a Pay-As-You-Go plan so you only pay for what you use, with no commitments.",
"errorId": "<string>"
}{
"x402Version": 123,
"resource": {
"url": "<string>",
"description": "<string>",
"mimeType": "<string>",
"serviceName": "<string>",
"tags": [
"<string>"
],
"iconUrl": "<string>"
},
"error": "<string>",
"accepts": [
{
"scheme": "exact",
"network": "<string>",
"amount": "<string>",
"payTo": "<string>",
"maxTimeoutSeconds": 123,
"asset": "<string>",
"extra": {
"name": "<string>",
"version": "<string>"
}
}
],
"extensions": {}
}{
"error": "Forbidden",
"message": "This API key has exhausted its available credits. To resume service, please visit https://portal.vaults.fyi/signup to top-up your credits",
"errorId": "<string>"
}{
"error": "Not Found",
"message": "<string>"
}{
"message": "<string>",
"errorId": "<string>"
}{
"statusCode": 123,
"error": "Unprocessable Entity",
"message": "<string>",
"errorId": "<string>"
}{
"error": "Internal Server Error",
"message": "<string>",
"errorId": "<string>"
}{
"statusCode": 123,
"error": "Service Unavailable",
"message": "<string>",
"errorId": "<string>"
}Get advanced vault analytics
Returns advanced analytics for a single vault. Use the POST body select to opt into analytics sections — max drawdown, withdrawal pause ratio, composition and/or the full v2 detailedVault payload.
curl --request POST \
--url https://api.vaults.fyi/alpha/advanced-analytics/{network}/{vaultId} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"select": {
"maxDrawdown": true,
"detailedVault": true,
"withdrawalPauseRatio": true,
"composition": true
}
}
'import requests
url = "https://api.vaults.fyi/alpha/advanced-analytics/{network}/{vaultId}"
payload = { "select": {
"maxDrawdown": True,
"detailedVault": True,
"withdrawalPauseRatio": True,
"composition": True
} }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
select: {
maxDrawdown: true,
detailedVault: true,
withdrawalPauseRatio: true,
composition: true
}
})
};
fetch('https://api.vaults.fyi/alpha/advanced-analytics/{network}/{vaultId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.vaults.fyi/alpha/advanced-analytics/{network}/{vaultId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'select' => [
'maxDrawdown' => true,
'detailedVault' => true,
'withdrawalPauseRatio' => true,
'composition' => true
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.vaults.fyi/alpha/advanced-analytics/{network}/{vaultId}"
payload := strings.NewReader("{\n \"select\": {\n \"maxDrawdown\": true,\n \"detailedVault\": true,\n \"withdrawalPauseRatio\": true,\n \"composition\": true\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.vaults.fyi/alpha/advanced-analytics/{network}/{vaultId}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"select\": {\n \"maxDrawdown\": true,\n \"detailedVault\": true,\n \"withdrawalPauseRatio\": true,\n \"composition\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.vaults.fyi/alpha/advanced-analytics/{network}/{vaultId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"select\": {\n \"maxDrawdown\": true,\n \"detailedVault\": true,\n \"withdrawalPauseRatio\": true,\n \"composition\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"vaultId": "<string>",
"network": "<string>",
"maxDrawdown": {
"mdd30days": 123,
"mdd90days": 123,
"mdd365days": 123
},
"detailedVault": {
"vaultId": "<string>",
"address": "<string>",
"name": "<string>",
"network": {
"chainId": 123,
"networkCaip": "<string>"
},
"asset": {
"address": "<string>",
"assetCaip": "<string>",
"name": "<string>",
"symbol": "<string>",
"decimals": 123,
"assetGroup": "<string>",
"assetLogo": "<string>",
"assetPriceInUsd": "<string>"
},
"isTransactional": true,
"isAppFeatured": true,
"protocol": {
"name": "<string>",
"displayName": "<string>",
"product": "<string>",
"version": "<string>",
"protocolUrl": "<string>",
"description": "<string>",
"protocolLogo": "<string>"
},
"tags": [
"<string>"
],
"holdersData": {
"totalCount": 123,
"totalBalance": "<string>",
"topHolders": [
{
"address": "<string>",
"lpTokenBalance": "<string>"
}
]
},
"apy": {
"1day": {
"base": 123,
"reward": 123,
"total": 123
},
"7day": {
"base": 123,
"reward": 123,
"total": 123
},
"30day": {
"base": 123,
"reward": 123,
"total": 123
},
"1hour": {
"base": 123,
"reward": 123,
"total": 123
}
},
"tvl": {
"usd": "<string>",
"native": "<string>"
},
"lastUpdateTimestamp": 123,
"creationData": {
"deploymentTimestamp": 123
},
"rewards": [
{
"asset": {
"address": "<string>",
"assetCaip": "<string>",
"name": "<string>",
"symbol": "<string>",
"decimals": 123,
"assetGroup": "<string>",
"assetLogo": "<string>",
"assetPriceInUsd": "<string>"
},
"apy": {
"1hour": 123,
"1day": 123,
"7day": 123,
"30day": 123
}
}
],
"isCorrupted": true,
"userEventsIndexed": true,
"warnings": [
"<string>"
],
"flags": [
{
"content": "<string>",
"endDate": 123,
"resolution": "<string>"
}
],
"lendUrl": "<string>",
"description": "<string>",
"protocolVaultUrl": "<string>",
"score": {
"vaultScore": 123,
"vaultTvlScore": 123,
"protocolTvlScore": 123,
"holderScore": 123,
"networkScore": 123,
"assetScore": 123,
"totalScorePenalty": 123,
"penaltyComponents": [
{
"content": "<string>",
"endDate": 123,
"type": "flag",
"value": 123,
"resolution": "<string>"
}
]
},
"additionalIncentives": "<string>",
"curator": {
"name": "<string>",
"description": "<string>",
"websiteUrl": "<string>"
},
"lpToken": {
"address": "<string>",
"tokenCaip": "<string>",
"name": "<string>",
"symbol": "<string>",
"decimals": 123
},
"remainingCapacity": "<string>",
"maxCapacity": "<string>",
"childrenVaults": [
{
"vaultId": "<string>",
"address": "<string>",
"asset": {
"address": "<string>",
"assetCaip": "<string>",
"name": "<string>",
"symbol": "<string>",
"decimals": 123,
"assetGroup": "<string>",
"assetLogo": "<string>",
"assetPriceInUsd": "<string>"
},
"lpToken": {
"address": "<string>",
"tokenCaip": "<string>",
"name": "<string>",
"symbol": "<string>",
"decimals": 123
},
"additionalAssets": [
{
"address": "<string>",
"assetCaip": "<string>",
"name": "<string>",
"symbol": "<string>",
"decimals": 123,
"assetGroup": "<string>",
"assetLogo": "<string>",
"assetPriceInUsd": "<string>"
}
]
}
],
"additionalAssets": [
{
"address": "<string>",
"assetCaip": "<string>",
"name": "<string>",
"symbol": "<string>",
"decimals": 123,
"assetGroup": "<string>",
"assetLogo": "<string>",
"assetPriceInUsd": "<string>"
}
],
"transactionalProperties": {
"rewardsSupported": true
},
"fees": {
"performanceFee": 123,
"managementFee": 123,
"withdrawalFee": 123,
"depositFee": 123
},
"apyComposite": {
"totalApy": {
"1day": {
"base": 123,
"reward": 123,
"total": 123
},
"7day": {
"base": 123,
"reward": 123,
"total": 123
},
"30day": {
"base": 123,
"reward": 123,
"total": 123
},
"1hour": {
"base": 123,
"reward": 123,
"total": 123
}
},
"intrinsicApy": {
"1day": {
"base": 123,
"reward": 123,
"total": 123
},
"7day": {
"base": 123,
"reward": 123,
"total": 123
},
"30day": {
"base": 123,
"reward": 123,
"total": 123
},
"1hour": {
"base": 123,
"reward": 123,
"total": 123
}
},
"asset": {
"address": "<string>",
"assetCaip": "<string>",
"name": "<string>",
"symbol": "<string>",
"decimals": 123,
"assetGroup": "<string>",
"assetLogo": "<string>",
"assetPriceInUsd": "<string>"
},
"vault": {
"vaultId": "<string>",
"address": "<string>"
}
}
},
"withdrawalPauseRatio": 123,
"composition": [
{
"id": "<string>",
"supplyAssets": "<string>",
"allocation": 123,
"name": "<string>"
}
]
}{
"statusCode": 123,
"error": "Bad Request",
"message": "<string>",
"errorId": "<string>"
}{
"error": "Unauthorized",
"message": "An API key is required to access this service. Sign up at https://portal.vaults.fyi/signup to generate a key. We offer a Pay-As-You-Go plan so you only pay for what you use, with no commitments.",
"errorId": "<string>"
}{
"x402Version": 123,
"resource": {
"url": "<string>",
"description": "<string>",
"mimeType": "<string>",
"serviceName": "<string>",
"tags": [
"<string>"
],
"iconUrl": "<string>"
},
"error": "<string>",
"accepts": [
{
"scheme": "exact",
"network": "<string>",
"amount": "<string>",
"payTo": "<string>",
"maxTimeoutSeconds": 123,
"asset": "<string>",
"extra": {
"name": "<string>",
"version": "<string>"
}
}
],
"extensions": {}
}{
"error": "Forbidden",
"message": "This API key has exhausted its available credits. To resume service, please visit https://portal.vaults.fyi/signup to top-up your credits",
"errorId": "<string>"
}{
"error": "Not Found",
"message": "<string>"
}{
"message": "<string>",
"errorId": "<string>"
}{
"statusCode": 123,
"error": "Unprocessable Entity",
"message": "<string>",
"errorId": "<string>"
}{
"error": "Internal Server Error",
"message": "<string>",
"errorId": "<string>"
}{
"statusCode": 123,
"error": "Service Unavailable",
"message": "<string>",
"errorId": "<string>"
}Authorizations
Path Parameters
Include only vaults with provided network(name or CAIP)
mainnet, optimism, arbitrum, polygon, gnosis, base, unichain, swellchain, celo, worldchain, berachain, ink, bsc, hyperliquid, plasma, avalanche, katana, linea, mega-eth, monad, etherlink, robinhood, eip155:1, eip155:10, eip155:42161, eip155:137, eip155:100, eip155:8453, eip155:130, eip155:1923, eip155:42220, eip155:480, eip155:80094, eip155:57073, eip155:56, eip155:999, eip155:9745, eip155:43114, eip155:747474, eip155:59144, eip155:4326, eip155:143, eip155:42793, eip155:4663 Vault id of the vault for which the data will be returned
Body
Request body for the advanced-analytics list endpoint. Use select to opt into per-item analytics sections.
Request body for the advanced-analytics list endpoint. Use select to opt into per-item analytics sections.
Choose which analytics sections to include in the response. Pricing scales with the selection.
Show child attributes
Show child attributes
Response
Default Response
Max drawdown metrics for vault price per share
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Ratio (0-1) of time the vault withdrawals were paused over the last 2 years. Null when the protocol has no withdrawal-pause event source or the tracked event has not yet been backfilled.
List of investments the vault is allocated to, with allocation percentages.
Show child attributes
Show child attributes

