Skip to main content

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.

Endpoint https://api.lagoon.finance/queryMethod POST · application/jsonAuth noneCORS open (*)
Reading is open — transacting requires whitelisting

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

FundChainAssetVault addressAPI guide
DAMM Stablecoin FundArbitrum (42161)USDT00xe5d6…5176DAMMstable
DAMM Ethereum FundEthereum (1)WETH0x3c63…e355DAMMeth
DAMM Bitcoin FundEthereum (1)WBTC0x7ede…b756DAMMbtc
DAMM ETH Algo FundEthereum (1)WETH0xe6f4…8d28DAMMethAlgo
DAMM BTC Algo FundEthereum (1)WBTC0x9c41…79b9DAMMbtcAlgo
Pin the exact address and chainId — never resolve by name

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 BigInt values (totalAssets, pricePerShare — denominated in the vault asset's decimals) plus a convenience …Usd: Float variant.
  • Fees are basis points (1e4 = 100%): performanceFee: 1500 = 15%.
  • Time-series points are {x, y} pairs (x = unix seconds, y nullable), ascending, max 1000 points per field. Window with options: {startTimestamp, endTimestamp}.
  • Settlement cadence is roughly weekly: one stateHistory point per TotalAssetsUpdated settlement. The API's granularity equals indexing the on-chain events directly.
  • APRs: twrrNetApr is the time-weighted net APR for the window (weeklyApr / monthlyApr / yearlyApr); linearNetApr is the simple variant. A null APR means insufficient recent settlement data for that window.
  • Pagination: list queries return {items {…}, pageInfo {totalCount hasNextPage skip limit count}}totalCount lives under pageInfo.
  • Filters use suffix operators (_eq, _in, _gte, …); orderBy / orderDirection are unquoted enums (orderBy: timestamp, orderDirection: desc).
  • The schema is fully introspectable — point any GraphQL client at the endpoint and explore.

Response-shape quick reference

ThingShape / rule
Pagination{ items { … }, pageInfo { totalCount hasNextPage skip limit count } }
Time-series point{ x, y } (x = unix seconds) — not { timestamp, value }
vaultByAddress argsaddress: Address! (not String!), chainId: Int!
Feesbasis points (1e4 = 100%)
Shares18 decimals; assets use the underlying asset's decimals
Schemafully introspectable (__type(name: …))