metadata object by GET /vaults (list) and GET /vaults/{address} (detail), and on the V3 vault detail. All yields are decimal ratios (0.0291 = 2.91%).
These fields are informational. None of them changes a vault’s risk score or letter grade.
What you get
Standardized APY
The vault’s realized yield, measured the same way for every protocol, with its source and window.
Incentives
Third-party reward campaigns (Merkl), kept separate from the base yield, with eligibility and end dates.
Yield durability
A 0–100 score for how much of the yield a typical depositor can count on if incentives stop.
Fees
APY before and after the vault’s fees, with the fee rates and where they came from.
Deposit status
Whether a new depositor can deposit right now, and who is allowed to.
Flow terms
Whether deposits and redemptions settle instantly or through a request queue, and any lockup.
Standardized APY
Whenapy_measure starts with realized_, apy is the vault’s realized share-price yield: how much the value of one vault share actually grew, annualized. Its apy_source is then onchain.share_price (Webacy’s own on-chain read) or tradingstrategy.share_price (an independent share-price feed, corroborated against a live on-chain read). When no realized yield is available, apy is the protocol’s own figure instead (a spot, smoothed, or projected rate), and apy_source / apy_measure say which. Check apy_measure before treating apy as measured depositor earnings.
- Windows: 7, 30, and 90 days. The headline
apyis the 90-day window, or the 30-day window when the vault is younger. The 7-day window is published for monitoring but is never the headline. - Source: share prices are read on-chain by Webacy at the block for each date (
convertToAssetsfor ERC-4626 vaults,pricePerSharefor Yearn v2,getPricePerFullSharefor Beefy, the reserve’s normalized income for Aave). Where an independent share-price feed also covers the vault, the two are compared and a disagreement is flagged. - Net of fees by construction: protocols that take their fee inside the share price (Morpho, Euler, Yearn, Lagoon, and others) are already net of that fee.
- Guards: Webacy’s pipeline refuses a realized result outside −95% to +50% rather than publishing it. A share price rising faster than that is usually interest accruing on debt that won’t be repaid. Funds whose share price tracks a market price (equity or gold index funds) are refused too, because that’s a price return, not yield. The API then publishes
apyonly when it is above 0 and at most 500%, so a realized loss appears only inrealized_apy_windows.
The vault pipeline runs every 6 hours. Each vault’s
data_as_of says when its record was last measured; a failed read keeps the previous record, so data_as_of can be older than the latest run.
Incentives
incentives describes third-party reward campaigns run through Merkl, matched to the vault by chain and address. Incentives are paid from a sponsor’s budget, not earned by the deposits, so they are never added into apy. The object is null when the vault has no Merkl campaign.
Also returned:
incentive_apr_liquid_restricted, incentive_apr_liquid_eligibility_unknown, incentive_apr_liquid_low_quality (open token APR paid in a token with no reliable value), incentive_apr_boosted (campaigns with per-user boosts, so the headline is an average), incentive_eligibility_hooks, incentive_reward_qualities, incentive_self_funded, merkl_native_apr, and merkl_total_apr. Each campaign row also carries boosted.
Yield durability
incentives.yield_durability scores how much of a vault’s current yield a typical depositor can count on if incentives are not renewed. The base yield counts as fully durable; only the incentive part is discounted:
shareis the incentive share of the yield an ordinary depositor can earn. Restricted campaigns are left out, so it can be lower than the headlineincentive_share.liquid_fractionis the share of the open incentives paid in tradable tokens. Points and pre-launch tokens count as 0, and so does a token with no reliable value. APR that Merkl reports but can’t attribute to a campaign, or whose eligibility is unknown, counts as 0.5. When no incentive is open to an ordinary depositor, it is 0.5 and has no effect, becauseshareis 0.renewalgrows with the campaign streak: 0.25 + 0.65 × min(streak days / 365, 1), so between 0.25 and 0.90.fundingis 0.85 when the vault’s own curator funds the campaign, otherwise 1.
flags add context independent of the tier: incentive_dependent (incentives are 50% or more of the typical depositor’s yield), short_streak (under 30 days of unbroken campaigns), points_incentive / pretge_incentive, self_subsidised, and restricted_incentive (some incentive APR is gated and was excluded from the score). drivers returns the inputs above.
A vault whose incentives are all restricted can score
high: for an ordinary depositor its yield is all base yield, which is fully durable. The restricted_incentive flag tells you this is the case.Fees
fees gives the yield before and after the vault’s own fees, with the rates behind them. The object is null when nothing is known about the vault’s fees.
A rate the source doesn’t provide is never assumed:
apy_before_fees stays null and fee_gap_reason says why. Entry and exit fees are reported in fee_model but not folded into either APY.
Deposit status
deposit_status says whether a new depositor can deposit right now.
Flow terms
flow_terms says how deposits and redemptions settle. The object is null when nothing is known.
A
sync redemption can still be limited by available liquidity. See pct_tvl_withdrawable and the withdrawal signals in Vault Risk Intelligence.
Filtering and sorting
On the vault list (GET /vaults):
Example
Steakhouse High Yield USDC Edition (Morpho, Base). Excerpt ofmetadata from GET /vaults/0xbeeff2490feffa212fac2f6553682c219e6a8845?chain=base, trimmed to the fields on this page:
- The vault’s realized APY is 2.91%, annualized from its share-price change over the last 90 days and measured on-chain. Morpho’s own figure is 3.16%.
- Before the curator’s 25% performance fee, the annualized APY is 3.88%, so fees cost 0.97 percentage points a year.
- Sponsors pay another 2.61% in incentives, but all of it is restricted (Coinbase-verified depositors), so an ordinary depositor earns 2.91% and an eligible one about 5.52%.
incentive_apris the authoritative total: the listed campaign’s ownapris 1%, and the rest is APR Merkl reports for the vault without attributing it to a listed campaign. - Durability is
highwithrestricted_incentive: for an ordinary depositor the yield is all base yield.liquid_fractionis 0.5 because no incentive is open to an ordinary depositor, so it has no effect on the score.
