Skip to main content

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.

Endpoint https://api.lagoon.finance/queryMethod POST · application/jsonAuth noneCORS open (*)
Reading is open. Depositing is private.

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​

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.

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 BigInt values (totalAssets, pricePerShare, 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 (at time of writing). Window with options: {startTimestamp, endTimestamp}.
  • Settlement cadence is irregular: one stateHistory point per TotalAssetsUpdated settlement. 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's x timestamp with the current time. 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. APR values are already percentages (4.99 = 4.99% p.a.). They are not fractions and not bps, so display them as-is. 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: …))