List strategies
Lists the strategies your project can see, largest first by total value locked.
GET/
The list defaults to your project's cluster: devnet for sandbox, mainnet for production. Pass cluster to browse the other cluster's strategies; those rows are always fundable: false. A listed strategy is not always open for deposits, so check fundable and status before you offer it.
Requires an API key with the earn.read action.
Query parameters
-
page·integer· greater than 0 · default1 -
pageSize·integer· min 1 · max 100 · default20 -
sourceKind·string· one ofdefi,rwa -
apyType·string· one ofvariable,fixed -
liquidityTerm·string· one ofinstant,delayed -
cluster·string· one ofdevnet,mainnet-beta
Headers
-
x-project-id·string· min length 1 · exampleprj_exampleRequired for dashboard sessions. API keys use their assigned project.
Responses
-
200One page of strategies-
data·object· required-
strategies·object[]· required-
id·string· required · exampleearn_strategy_3b6a81ce-00b0-4c5a-9761-cb359932e97eThe strategy's ID. Pass it as
strategyIdto preview or build a deposit. -
provider·string· required · examplekaminoOpen provider id (e.g.
kamino,veda). -
providerReference·string· required · example7uib8xGAwkaPz4ZGCA6t8sSEid5Yp9ty13PHUweTypxThe strategy's onchain address at the provider, such as a vault. It identifies the instrument; never send funds to it.
-
name·string· required · exampleAllez USDC -
sourceKind·string· required · one ofdefi,rwaWhere the yield comes from: onchain DeFi or real-world assets.
-
underlyingSource·string· examplekaminoOpen id of the underlying protocol or fund, when the provider reports one.
-
depositMints·string[]· requiredMints the strategy accepts directly. The first is the deposit token.
-
shareMint·string· examplehXm2xSRF5PLKGMrTvAWqKhR76MuJX5dAabeSChkjqu2The share token a deposit mints, when the strategy has one.
-
apyType·string· required · one ofvariable,fixed -
currentApy·string· example0.062Latest observed APY as a decimal ratio string (
"0.062"= 6.2%), refreshed about every five minutes. Absent when the provider reports none. -
liquidityTerm·string· required · one ofinstant,delayed -
redemptionDelayDays·number· example2For
delayedliquidity: the provider's stated redemption delay. -
riskMetadata·objectCurator and risk framework metadata, as published by the provider. Curators publish heterogeneous frameworks, so this is an open shape.
-
curator·string· exampleallez -
riskTier·string -
frameworkUrl·string -
*·any
-
-
status·string· required · one ofactive,paused,deprecatedThe strategy's lifecycle. Only
activestrategies accept new deposits. -
depositSlippage·object | null· requiredNot null when a deposit build for this strategy, in your environment, requires
minSharesOut. Preview the deposit first and derive the floor fromsharesOutminus your tolerance. Most production strategies are not null; a strategy priced later, such as a provider order, may be null because no onchain instruction can enforce a floor. Answered per request, likefundable.-
quoteRequired·boolean· required · alwaystrueThe live quote endpoint must be called before building this direction.
-
defaultToleranceBps·integer· required · example50Suggested tolerance in basis points, to take off a preview's quote when you compute the floor. Your customer may choose another.
-
-
withdrawalSlippage·object | null· requiredNon-null when this provider's withdrawal builder refuses to run without an explicit
minAmountOut: call the withdrawal preview first and derive the floor fromassetsOut. Null when this withdrawal cannot enforce a floor; omitminAmountOut.-
quoteRequired·boolean· required · alwaystrueThe live quote endpoint must be called before building this direction.
-
defaultToleranceBps·integer· required · example50Suggested tolerance in basis points, to take off a preview's quote when you compute the floor. Your customer may choose another.
-
-
hostCluster·string· required · one ofdevnet,mainnet-betaThe cluster the strategy runs on.
-
fundable·boolean· requiredWhether the strategy exists on your project's cluster.
falsemeans a deposit can never work from this project.trueis necessary but not sufficient: the strategy must also beactive, and your organization must be activated for the provider. -
feeSponsored·boolean· requiredWhether SDP pays network fees for Treasury movements on this strategy from your environment. It never applies to a customer's wallet: to sponsor an Embedded Yield transaction, pass
feePayerwhen you build it. Alwaysfalsewhen the strategy is notfundable, and a swap-funded deposit is never sponsored. -
createdAt·string· required · formatdate-time· example2025-01-01T00:00:00.000ZISO 8601 timestamp.
-
updatedAt·string· required · formatdate-time· example2025-01-01T00:00:00.000ZISO 8601 timestamp.
-
-
total·integer· required · example6Total rows visible to the caller across all pages.
-
page·integer· required · example1 -
pageSize·integer· required · example20
-
-
meta·object· requiredResponse metadata.
-
requestId·string· required · min length 1 · examplereq_exampleRequest identifier for tracing.
-
timestamp·string· required · formatdate-time· example2025-01-01T00:00:00.000ZISO 8601 timestamp.
-
-
-
400Bad Request-
error·object· requiredStandard error payload.
-
code·string· requiredMachine-readable error code.
-
message·string· requiredHuman-readable error message.
-
details·objectOptional error details for debugging.
*·any
-
-
meta·object-
requestId·string· min length 1 · examplereq_exampleRequest identifier for tracing.
-
-
-
401UnauthorizedSame fields as
400. -
403Forbidden. Requires theearn.readaction: an API key must hold it (a module'smanageorexecutealso covers itsread), and a signed-in member's organization role must include it. Without it the error is INSUFFICIENT_PERMISSIONS anderror.details.actionnames the action. Any other 403 names its own reason.Same fields as
400. -
429Too Many RequestsSame fields as
400. -
500Internal Server ErrorSame fields as
400. -
503Service UnavailableSame fields as
400.