What to know before you deposit
APY and TVL are just the start. A complete look at every data point available about a DeFi vault: performance, risk scores, fees, holder distribution, capacity, real-time state, and position history.
vaults.fyi indexes more than 30 data points per vault: APY across four time windows, five risk sub-scores, full fee breakdown, holder distribution, deposit capacity, real-time chain state, and per-wallet position history.
Most interfaces only show APY and TVL. We help our users see much more...
This post covers all of it, using a real vault as a live example throughout.
Performance: more than a single number
A single APY figure hides two things that matter: the time window it covers and where the yield comes from. vaults.fyi tracks both across four windows — 1 hour, 1 day, 7 days, 30 days — and splits each into base yield (from the underlying lending or strategy) and reward yield (token incentives).
An an example, let's look at the Sentora PYUSD PYUSD vault on Euler. A vault showing 6.54% total where 4.42% comes from a PYUSD incentive program carries a different risk profile than one earning the same rate from lending activity alone.

For vaults that deposit into other vaults — a common pattern in DeFi — composite APY compounds both layers into a single figure while keeping each layer visible separately.
Risk signals: scores, flags, and warnings
Every vault carries a reputation score built from five sub-scores: vault TVL, protocol TVL, holder distribution, network, and underlying asset. These let you compare vaults across protocols on a consistent basis, not just by yield.
Beyond the score, vaults surface structured flags at three severity levels: info, warning, and critical. When a protocol is exploited, paused, or deprecated, the flag appears before the news does. Warnings cover softer notices: migration announcements, pending audits, changing terms.

Economics: what you're actually paying
Headline APY is usually net of fees, but not always, and the fee structure tells you something about how a vault is designed. vaults.fyi surfaces the full breakdown: performance fees (a share of yield), management fees (annual on AUM), withdrawal fees, and deposit fees. Many vaults have none. Some have several. Knowing which changes the math before you commit.
Each reward token is tracked separately with its own APY across time windows and its current USD price, so you can evaluate whether an incentive is material or negligible.
Capacity: whether there's room
Some vaults enforce deposit caps. When a vault approaches its limit, remaining capacity drops toward zero and deposits may be blocked. vaults.fyi tracks both the maximum capacity and how much room is left — surface this before a user attempts a deposit into a full vault.

Holders: who else is in
Total holder count, combined balance, and top holders by LP token position are all available. A vault with 5,000 holders and distributed ownership is a different risk profile from one where 90% of TVL sits with two wallets.
Real-time state
Standard vault data is indexed hourly from onchain. For applications that need current state — deposit previews, live dashboards, liquidation monitoring — near real-time endpoints query the chain directly and return current share price, total assets, total supply, and underlying asset price without waiting for the next index cycle.
Position and history
For any wallet address, the API returns the full picture of an open position: balance in native and USD terms, unclaimed rewards, LP token holdings, and total returns earned since deposit. Transaction history covers every deposit, withdrawal, and reward claim, with share price at time of execution.
Historical time-series data is available for any vault: APY, TVL, and share price over any date range, down to the block level.
Seeing it in practice
Sentora PYUSD PYUSD is an Euler vault curated by Sentora: 10% performance fee, 4.42% PYUSD reward APY (7d avg), and a $300M deposit cap. One call returns everything covered above.
const response = await fetch(
'https://api.vaults.fyi/v2/detailed-vaults/mainnet/0xba98fC35C9dfd69178AD5dcE9FA29c64554783b5',
{ headers: { 'x-api-key': 'YOUR_API_KEY' } }
);
const vault = await response.json();The response (key fields, real data):
{
"name": "Sentora PYUSD PYUSD",
"network": { "name": "mainnet", "chainId": 1 },
"asset": { "symbol": "PYUSD", "decimals": 6, "assetPriceInUsd": "1.0001" },
"protocol": { "name": "euler" },
"curator": { "name": "Sentora" },
"apy": {
"1hour": { "base": 0.0189, "reward": 0.0440, "total": 0.0629 },
"1day": { "base": 0.0224, "reward": 0.0441, "total": 0.0665 },
"7day": { "base": 0.0212, "reward": 0.0442, "total": 0.0654 },
"30day": { "base": 0.0177, "reward": 0.0456, "total": 0.0633 }
},
"tvl": { "usd": "218800000" },
"score": {
"vaultScore": 82.2,
"vaultTvlScore": 91.5,
"protocolTvlScore": 89.2,
"holderScore": 23.4,
"networkScore": 100.0,
"assetScore": 87.3
},
"holdersData": { "totalCount": 74 },
"rewards": [{
"asset": { "symbol": "PYUSD" },
"apy": { "7day": 0.0442, "30day": 0.0456 }
}],
"fees": { "performanceFee": 0.10 },
"maxCapacity": "299999999999999",
"remainingCapacity": "81140562553021",
"flags": [],
"isTransactional": true,
"transactionalProperties": {
"depositStepsType": "instant",
"redeemStepsType": "instant",
"rewardsSupported": true
}
}Working with the data:
// APY: multiply by 100 to convert to percentage
const base = (vault.apy['7day'].base * 100).toFixed(2); // "2.12%" — lending yield
const reward = (vault.apy['7day'].reward * 100).toFixed(2); // "4.42%" — PYUSD incentives
const total = (vault.apy['7day'].total * 100).toFixed(2); // "6.54%"
// Account for the curator's performance fee when displaying net yield
const perfFee = vault.fees?.performanceFee ?? 0; // 0.10 = 10% of yield taken by Sentora
// Capacity: values are in asset-native units — divide by 10^decimals to get token amounts
const decimals = vault.asset.decimals; // 6 for PYUSD
const remaining = Number(vault.remainingCapacity) / 10 ** decimals; // ~81,140,562 PYUSD
const maxCap = Number(vault.maxCapacity) / 10 ** decimals; // ~300,000,000 PYUSD
// Redemption type varies by vault — affects how you build your withdrawal UI
// 'instant' = single transaction (this vault)
// 'complex' = multi-step: request, wait, then claim (e.g. Syrup USDC, Lido stETH)
const isInstantRedeem = vault.transactionalProperties.redeemStepsType === 'instant';
// Block the deposit UI if any critical flag is active
const hasCriticalFlag = vault.flags.some(f => f.severity === 'critical');One integration, everything
This data exists in a single API because vaults.fyi indexes it consistently across 1,400+ vaults, 80+ protocols, and 20+ networks. No separate integrations per protocol, no reverse-engineering each one's fee structure, event schema, or scoring methodology.
The full field reference is in our documentation.
Ready to build? DM us on X (@vaultsfyi) or contact us on Telegram (@ryanrodenbaugh).