Vault
A vault is an aggregate contract where suppliers deposit a single loan asset; a curator allocates that liquidity across multiple lending markets. The Vault API exposes the vault list, per-vault detail, historical deposit/APY snapshots, and the per-market allocation breakdown.
All paths are under Base URL /api/moolah.
Chain selector. Endpoints that span chains take a string
chainparameter —bsc,bscTest, orethereum— not a numeric chain ID./vault/listaccepts a comma-separated list (e.g.chain=bsc,ethereum); when omitted it defaults to the live network. Detail and history endpoints resolve the chain from the vaultaddressand take nochainparameter.
List conventions. Paginated list endpoints sort with the pair
sort(a field key from the whitelist below) +order(asc|desc, defaultdesc).pageSizedefaults to10and is capped at50;pageis 1-based. An unrecognizedsortfalls back to the endpoint default.
1. Vault list
GET /api/moolah/vault/list
Paginated list of vaults with filtering and sorting.
Query parameters
chain
string
No
bsc | bscTest | ethereum. Comma-separated for multiple (e.g. bsc,ethereum). Defaults to the live network.
page
number
No
1-based page number. Default 1.
pageSize
number
No
Items per page. Default 10, max 50 (values above 50 are clamped).
assets
string[]
No
Filter by deposit-asset symbol. Must arrive as an array: repeat the key (assets=USD1&assets=WBNB), or use the bracket form for one value (assets[]=USD1). A single bare assets=USD1 is unsupported — the query builder throws, so a cold cache returns HTTP 500; a warm cache (see Conventions) can mask this by returning a stale cached response instead.
curators
string[]
No
Filter by curator name (e.g. Lista DAO), matched exactly — an address matches nothing. Send it repeated (?curators=A&curators=B): a single un-repeated value arrives as a string and the query builder fails on it — unsupported, returning HTTP 500 on a cold cache (a warm cache can mask this instead).
keyword
string
No
Free-text search over vault name/keywords. Max 50 chars; ignored if empty.
sort
string
No
Sort field key — one of deposits, apy, utilization. Unknown values fall back to deposits.
order
string
No
asc or desc. Default desc.
zone
number
No
Zone (segment) filter. Default 0.
Results are grouped by a Lista-assigned display order before the requested
sort/orderis applied.
Response
total
number
Total matching vaults (for pagination).
list
array
Vault summary objects.
Item in list:
address
string
Vault contract address (lower-cased).
emissionEnabled
number
1 when reward emissions are active for this vault, 0 when not. Serialized as an integer, not a JSON boolean.
emissionDetail
object
Reward breakdown keyed by token symbol — { [symbol]: { apy, total, icon } }, or {} when there is none. Note /vault/allocation returns emissionDetail as an array, not an object keyed by symbol.
displayDecimal
number
Decimals to use when displaying amounts. Serialized as a JSON number.
utilization
string
Fraction of deposits currently lent out, clamped to [0, 1] (18-decimal string).
collaterals
array
Collateral assets reachable through this vault's markets ({ id, name, icon, loanSymbol, allocation }).
apy, emissionApy, deposits, depositsUsd, zone, chain
string / number
Headline figures, self-describing. chain is bsc | ethereum | bscTest.
asset, assetSymbol, name, icon, assetIcon, curator, curatorIcon
string
Deposit-asset address/symbol plus display copy and assets.
2. Vault detail
GET /api/moolah/vault/info
Full details for a single vault, including its curator metadata and the collateral markets it allocates to.
Query parameters
address
string
Yes
Vault contract address. The chain is resolved from the vault record.
Response
emissionEnabled
number
1 when reward emissions are active, 0 when not. Serialized as an integer, not a JSON boolean.
emissionDetail
object
Reward breakdown keyed by token symbol — { [symbol]: { apy, total, icon } }, or {} when there is none.
assetPrice
string
USD price of the deposit asset, 8-decimal string.
displayDecimal
number
Decimals to use when displaying amounts. Serialized as a JSON number.
liquidity
string
Idle (un-allocated) liquidity in the vault.
address, asset, assetSymbol, deposits, apy, emissionApy
string
Vault and deposit-asset identity plus headline figures.
name, icon, assetIcon, description, descriptionZh, curator, curatorIcon, curatorDesc, curatorDescZh
string
Display copy and assets; the *Zh fields are the Chinese variants.
utilization
string
Fraction of deposits currently lent out (18-decimal string). Unlike /vault/list's utilization, this one is not clamped to [0, 1] server-side — treat a value outside that range as a signal to re-check the vault, not a parsing error.
collaterals
array
Markets the vault supplies to — each { id, collateral, name, icon } where id is the market ID and collateral the collateral token address.
curatorX, curatorUrl, styleType
string / number
Curator X handle and website, and a UI style hint (defaults to 1).
createAt, zone, chain, status
string / number
Creation timestamp, zone, chain, and the vault status code.
An unknown
addressreturns an empty object{}.
3. Vault deposit / APY history
GET /api/moolah/vault/deposit/history
GET /api/moolah/vault/apy/history
Daily snapshots of a vault's total deposits and APY over a time range. Both endpoints share the same handler and return the same shape; /vault/apy/history is an alias of /vault/deposit/history.
Query parameters
address
string
Yes
Vault contract address.
startTime
number
No*
Range start, UNIX timestamp in seconds (UTC day boundary).
endTime
number
No*
Range end, UNIX timestamp in seconds (UTC day boundary).
* Syntactically optional, but the two behave differently when omitted, and neither raises an error. Omitting
startTime(or both) returns an empty array. OmittingendTimereturns the entire history fromstartTimeonward — the bound is compared as a string, and the placeholder it degrades to sorts above every real date. Pass both explicitly.
Response
Array of daily snapshot objects, ordered ascending by date:
chartTime
number
Start-of-day UNIX timestamp (seconds).
apy
string
Base supply APY for that day.
emissionApy
string
Reward/emission APY for that day.
totalAssets
string
Total assets in the vault that day (token units).
totalAssetsUsd
string
Total assets valued in USD that day.
4. Vault allocation
GET /api/moolah/vault/allocation
The response also includes a synthetic "Idle Market" row representing un-allocated liquidity. It ignores the
keywordandzonefilters, andcollateralSymbol,collateralIcon,icon,liquidity,utilizationandsmartCollateralConfigare allnullon it. A strictly-typed client will fail to parse the response unless those fields are modelled as nullable.
Paginated breakdown of how a vault's liquidity is allocated across its lending markets.
Query parameters
address
string
Yes
Vault contract address.
page
number
No
1-based page number. Default 1.
pageSize
number
No
Items per page. Default 10, max 50.
sort
string
No
Sort field key — one of allocation, totalSupply, liquidity, utilization, cap, borrowRate. Default totalSupply.
order
string
No
asc or desc. Default desc.
keyword
string
No
Free-text search over the allocated market's collateral name/keywords.
zone
string
No
Comma-separated zone (segment) filter applied to the underlying markets.
Rows are pre-ordered by an internal market
priorityfirst, then by the requestedsort/order. An unknown vaultaddressreturns{ total: 0, list: [] }.
Response
total
number
Total allocated markets (for pagination).
list
array
Allocation rows.
Item in list:
id
string
Market identifier the liquidity is allocated to.
name, collateralSymbol, loanSymbol
string
Market display name and both token symbols.
icon, collateralIcon, loanIcon
string
Display assets.
allocation
string
Amount of vault liquidity allocated to this market.
totalSupply
string
Vault-supplied amount tracked for this market.
cap
string
Supply cap the vault has set for this market.
liquidity
string
Market liquidity available to borrow (18-decimal string).
price
string
USD price of the loan asset (8-decimal string).
supplyApy
string
Supply APY for this market.
zone
number
Zone (segment) of the market.
smartCollateralConfig
object
Smart-collateral configuration for the market, if any.
utilization
string
Market utilization (borrowed / supplied).
borrowRate
string
Current borrow rate for the market.
emissionDetail
array
Reward breakdown for this market. An array here, unlike the object keyed by symbol on /vault/list.
rewards
array
Reward token entries attached to the market.
Notes
Amounts are strings. Token-denominated and APY/USD values are returned as decimal strings to preserve precision; use the
displayDecimalhint for presentation.Economic values come from the indexer and a short-lived cache, not from a live chain read. APY, utilization, deposits, caps, and emission figures reflect the current protocol state and are governance/manager-adjustable on-chain — treat them as snapshots, not fixed terms.
For the per-market interest-rate, LLTV, and oracle details behind an allocation, see the Market API. For protocol-wide totals, see Overall.
Last updated
Was this helpful?