Skip to main content
Two queries cover vault discovery: list_earn_vaults returns the market of wrappable vaults for an asset, and list_earn_enabled_vaults returns the wrappers your organization has already deployed. Full request/response schemas and cURL examples are in the API reference.
Earn is currently an Early Access Product. Contact us to enable it for your organization.

Discover vaults with list_earn_vaults

list_earn_vaults takes a required CAIP-19 asset identifier (e.g. eip155:8453/erc20:0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 for USDC on Base) and returns every wrappable vault for that asset. The chain is derived from the identifier, and you can optionally filter by provider. Reading the results:
  • The catalog is sorted by TVL in USD, descending, and only includes vaults with at least $100k TVL. Sort order does not reflect a recommendation, ranking, or endorsement of any vault.
  • tvl is in raw onchain units of the underlying asset; apyPct is a decimal fraction ("0.0812" = 8.12% gross APY, before fees).
  • display values are formatted strings for presentation only. Don’t do arithmetic with them.
  • enabled: true means your organization already has a wrapper deployed for the vault.
  • name and curator carry the provider’s human-readable vault name and curator(s), for building vault pickers.
apyPct reflects the vault’s gross annual percentage yield at the time of query. Yield is variable, driven by borrower demand, market utilization, and the vault curator’s allocation strategy, and may change significantly between the time of query and the time of deposit or withdrawal. Do not present APY or yield figures to end users as fixed or guaranteed rates.

Paging through the catalog

Results are cursor-paginated via paginationOptions (limit defaults to 10, max 100). Each response includes a pageInfo block:
  • hasNextPage / hasPreviousPage tell you whether more results exist in either direction.
  • Pass pageInfo.endCursor as the next request’s after cursor (or startCursor as before) to keep paging.
  • Cursors are opaque and versioned; don’t construct or parse them by hand. They encode the vault’s position in the TVL ranking, so scans resume deterministically even as live TVL shifts between requests.

List your enabled vaults

list_earn_enabled_vaults is the management view of every wrapper your organization has deployed, with onchain totals and the fee breakdown. Optional filters narrow by provider or CAIP-19 asset. Key fields:
  • wrapperAddress is the deposit target to pass to earn_deposit; vaultAddress is the underlying vault it wraps.
  • apyPct is the gross APY; netApyPct is what depositors earn after both fees: netApy = grossApy × (1 - totalFeeBps / 10000).
  • clientFeeBps is your fee for the wrapper, and totalDeposited is the wrapper’s TVL in raw units of the underlying asset.
  • depositsDisabled: true means deposits to the wrapper are currently paused via earn_set_wrapper_state; withdrawals are unaffected.
  • claimableClientFee is your accrued fee that is releasable right now, claimable with claim_earn_fees. It is only returned when the parent organization queries; sub-organizations don’t see it.

Providers

Morpho vaults are available today. Aave support is upcoming; the API shape is identical, so no integration changes will be needed. See the chain support table. Important: The vaults accessible through Earn are operated by independent third-party protocols. These providers are not subcontractors, agents, or affiliates of Turnkey. Turnkey does not manage, audit, or guarantee any vault, its strategy, its curator, or its returns. Turnkey’s role is limited to providing the API infrastructure that enables wallet-level interaction with these protocols.

Next steps