Integrations
Everything you need to integrate DAMM funds into your product: live NAV, TVL, fees, APRs, and full transaction history for every fund — served by the Lagoon API, a public, unauthenticated GraphQL endpoint that indexes every Lagoon vault. All DAMM funds are Lagoon vaults, so it's all queryable.
All the data below is public and requires no API key. Interacting with the vaults (depositing or redeeming) is restricted to whitelisted addresses. To get whitelisted, contact us at [email protected] or on our Telegram group.
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 |
Lagoon's factory is permissionless, so searching vaults by name or symbol
returns dozens of zero-TVL test deploys sharing our fund names (a search for
"dammstable" returns 65 hits). Always pin the exact address + chainId
from the table above.
Quick start
Fetch DAMMstable's live state in one request — works from a terminal, a browser, or any HTTP client:
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 documents 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— denominated 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. Window withoptions: {startTimestamp, endTimestamp}. - Settlement cadence is roughly weekly: one
stateHistorypoint perTotalAssetsUpdatedsettlement. 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. 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: …)) |