Get user balances across ERC-4626 vaults
GET/v1/data/vaults/user
Returns per-vault balances for account across the supplied ERC-4626 share-token addresses. Static vault metadata (underlying, decimals, share-price ratio) is sourced from the cached /v1/data/vaults public-data fetch, so this endpoint's only on-chain footprint is exactly one balanceOf(account) per vault.
Why this exists
Vault shares are plain ERC-20s, so /v1/data/token/balances can read them — but it can't convert shares → assets. This endpoint folds that conversion in so the frontend doesn't have to redo shares * totalAssets / totalSupply math (and get the rounding subtly wrong).
Scope
Vault addresses must be tracked by /v1/data/vaults (the 5 supported providers — fluid, gearbox, morpho, silo, euler-earn). Unknown addresses are listed back to the caller in the response's unknown field; a request that contains only unknown addresses returns 400. Untracked vaults are intentionally not auto-included — the 1delta data layer only surfaces vaults that have passed risk review.
Per-item fields (naming mirrors /v1/data/token/balances — <thing>Raw is a stringified uint, <thing> is the formatted human-readable string)
| field | meaning |
|---|---|
vault | share-token address (echoes the input) |
underlying | result of vault.asset() |
symbol, name, decimals | from the token registry / on-chain decimals() |
sharesRaw / shares | raw uint + formatted balance in vault tokens |
assetsRaw / assets | shares converted to underlying at the current fair share price (via convertToAssets) — raw uint + formatted |
priceUSD | unit price of the underlying |
balanceUSD | assets * priceUSD — USD value of the position |
Resilience
Failed reads (e.g. a non-ERC-4626 address slipped into the list, or a vault that reverts on convertToAssets) are silently dropped from the response — the whole request is not failed. Vaults the user hasn't deposited into (zero shares) are kept in the response so the caller can render a deterministic table.
Scope
This is for passive ERC-4626 vaults (Fluid fTokens, MetaMorpho, Gearbox V3 pools, Silo, Euler Earn). For Fluid's NFT-position margin vaults, use /v1/data/lending/user-positions instead — it understands the FLUID_<chainId>_<vaultId> lender keys and the NFT-per-position model.
Request
Responses
- 200
- 400
Per-vault balances joined with underlying prices. Items with failed reads are omitted; zero-share entries are kept.
Validation error