Integrations
Everything you need to put DAMM fund data into your product: live NAV, TVL, fees, APRs and the full transaction history of every fund. It all comes from the Lagoon API, a public GraphQL endpoint that needs no authentication and indexes every Lagoon vault. All DAMM funds are Lagoon vaults, so all of it is queryable.
All the data below is public and needs no API key. Depositing into or redeeming from the vaults is limited to approved addresses. Email [email protected] before you deposit, then follow How to deposit.
The DAMM funds
| Fund | Chain | Asset | Vault address | API guide |
|---|---|---|---|---|
| DAMM Stablecoin Fund | Arbitrum (42161) | USDT0 | 0xe5d6…5176 | DAMMstable |
| DAMM Ethereum Fund | Ethereum (1) | WETH | 0x3c63…e355 | DAMMeth |
| DAMM Bitcoin Fund | Ethereum (1) | WBTC | 0x7ede…b756 | DAMMbtc |
| DAMM ETH Algo Fund | Ethereum (1) | WETH | 0xe6f4…8d28 | DAMMethAlgo |
| DAMM BTC Algo Fund | Ethereum (1) | WBTC | 0x9c41…79b9 | DAMMbtcAlgo |
Searching vaults by name or symbol returns many other vaults that share our
fund names (for example, dozens for "dammstable"). Always pin the exact
address + chainId from the table above.
Quick start
Fetch DAMMstable's live state in one request. It works from a terminal, a
browser or any HTTP client (some clients need an explicit User-Agent header):
curl -s -X POST https://api.lagoon.finance/query \
-H "Content-Type: application/json" \
-d '{"query":"{ vaultByAddress(address:\"0xe5d6eb448ac5a762c1ebe8cd1692b9cd08025176\", chainId:42161) { name symbol state { totalAssetsUsd pricePerShare yearlyApr { twrrNetApr } } } }"}'
Or from JavaScript (CORS is open, so this runs directly in the browser):
const res = await fetch('https://api.lagoon.finance/query', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
query: `{
vaultByAddress(address: "0xe5d6eb448ac5a762c1ebe8cd1692b9cd08025176", chainId: 42161) {
name
state { totalAssetsUsd pricePerShareUsd yearlyApr { twrrNetApr } }
}
}`,
}),
});
const {data} = await res.json();
Each fund page covers the three query families in depth (current state, historical time series and transaction history), with copy-paste examples already pinned to that fund's address.
Conventions that apply to every fund
- Monetary fields are dual: raw on-chain
BigIntvalues (totalAssets,pricePerShare, in the vault asset's decimals) plus a convenience…Usd: Floatvariant. - Fees are basis points (1e4 = 100%):
performanceFee: 1500= 15%. - Time-series points are
{x, y}pairs (x= unix seconds,ynullable), ascending, max 1000 points per field (at time of writing). Window withoptions: {startTimestamp, endTimestamp}. - Settlement cadence is irregular: one
stateHistorypoint perTotalAssetsUpdatedsettlement. Settlements are triggered by the fund's operator, not on a fixed schedule, and gaps range from under a day to several weeks depending on the fund. To see how old the latest NAV is, compare the last point'sxtimestamp with the current time. The API's granularity equals indexing the on-chain events directly. - APRs:
twrrNetApris the time-weighted net APR for the window (weeklyApr/monthlyApr/yearlyApr);linearNetApris the simple variant. APR values are already percentages (4.99= 4.99% p.a.). They are not fractions and not bps, so display them as-is. AnullAPR means insufficient recent settlement data for that window. - Pagination: list queries return
{items {…}, pageInfo {totalCount hasNextPage skip limit count}}.totalCountlives underpageInfo. - Filters use suffix operators (
_eq,_in,_gte, …);orderBy/orderDirectionare unquoted enums (orderBy: timestamp, orderDirection: desc). - The schema is fully introspectable. Point any GraphQL client at the endpoint and explore.
Response-shape quick reference
| Thing | Shape / rule |
|---|---|
| Pagination | { items { … }, pageInfo { totalCount hasNextPage skip limit count } } |
| Time-series point | { x, y } (x = unix seconds), not { timestamp, value } |
vaultByAddress args | address: Address! (not String!), chainId: Int! |
| Fees | basis points (1e4 = 100%) |
| Shares | 18 decimals; assets use the underlying asset's decimals |
| Schema | fully introspectable (__type(name: …)) |