curl --request POST \
--url https://api.vaults.fyi/beta/advanced-analytics \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"select": {
"maxDrawdown": true,
"detailedVault": true,
"withdrawalPauseRatio": true,
"composition": true,
"utilizationRate": true
}
}
'import requests
url = "https://api.vaults.fyi/beta/advanced-analytics"
payload = { "select": {
"maxDrawdown": True,
"detailedVault": True,
"withdrawalPauseRatio": True,
"composition": True,
"utilizationRate": 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,
utilizationRate: true
}
})
};
fetch('https://api.vaults.fyi/beta/advanced-analytics', 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/beta/advanced-analytics",
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,
'utilizationRate' => 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/beta/advanced-analytics"
payload := strings.NewReader("{\n \"select\": {\n \"maxDrawdown\": true,\n \"detailedVault\": true,\n \"withdrawalPauseRatio\": true,\n \"composition\": true,\n \"utilizationRate\": 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/beta/advanced-analytics")
.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 \"utilizationRate\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.vaults.fyi/beta/advanced-analytics")
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 \"utilizationRate\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"itemsOnPage": 123,
"data": [
{
"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>"
}
],
"utilizationRate": 123
}
],
"errors": {
"unsupportedNetworks": [
"<string>"
],
"unsupportedAssets": [
"<string>"
],
"unsupportedProtocols": [
"<string>"
]
},
"nextPage": 123
}{
"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>"
}List advanced vault analytics
Returns a paginated list of vaults with advanced analytics. Filtering/pagination is passed via querystring (mirrors the v2 detailed-vaults list endpoint). Use the POST body select to opt into per-item analytics sections — max drawdown, withdrawal pause ratio, utilization rate and/or the full v2 detailedVault payload. Pricing has a 1 credit request base and scales per returned item: each item costs 2 if maxDrawdown is included + 3 if detailedVault is included + 2 if withdrawalPauseRatio is included + 3 if composition is included + 3 if utilizationRate is included.
curl --request POST \
--url https://api.vaults.fyi/beta/advanced-analytics \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"select": {
"maxDrawdown": true,
"detailedVault": true,
"withdrawalPauseRatio": true,
"composition": true,
"utilizationRate": true
}
}
'import requests
url = "https://api.vaults.fyi/beta/advanced-analytics"
payload = { "select": {
"maxDrawdown": True,
"detailedVault": True,
"withdrawalPauseRatio": True,
"composition": True,
"utilizationRate": 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,
utilizationRate: true
}
})
};
fetch('https://api.vaults.fyi/beta/advanced-analytics', 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/beta/advanced-analytics",
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,
'utilizationRate' => 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/beta/advanced-analytics"
payload := strings.NewReader("{\n \"select\": {\n \"maxDrawdown\": true,\n \"detailedVault\": true,\n \"withdrawalPauseRatio\": true,\n \"composition\": true,\n \"utilizationRate\": 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/beta/advanced-analytics")
.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 \"utilizationRate\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.vaults.fyi/beta/advanced-analytics")
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 \"utilizationRate\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"itemsOnPage": 123,
"data": [
{
"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>"
}
],
"utilizationRate": 123
}
],
"errors": {
"unsupportedNetworks": [
"<string>"
],
"unsupportedAssets": [
"<string>"
],
"unsupportedProtocols": [
"<string>"
]
},
"nextPage": 123
}{
"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
Query Parameters
Page number (starting from 0)
x >= 0Number of items per page
0 < x <= 5000Assets to be included by symbol(ticker).
1Assets to be excluded by symbol(ticker). The parameter is ignored if "allowedAssets" is specified.
1Protocols to be included by name.
1Protocols to be excluded by name. The parameter is ignored if "allowedProtocols" is specified.
1Minimum TVL in USD of the vaults to be included
Minimum vault score required for a vault to be included
x >= 0Include only vaults that are supported in the transactional interface.
Include only vaults that are featured in app.vaults.fyi
Allow inclusion of corrupted vaults.
Whether to include vaults with warnings. Defaults to true.
Networks to be included (name or CAIP).
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 Networks to be excluded (name or CAIP). The parameter is ignored if "allowedNetworks" is specified.
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 Maximum TVL in USD of the vaults to be included
Maximum APY (in decimal) of the vaults to be included
Minimum APY (in decimal) of the vaults to be included
Tags to be included.
1Curators to be included.
1Sort order, either asc or desc. Ascending is default.
asc, desc Field to sort by
tvl, apy1day, apy7day, apy30day 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

