---
title: "List yield strategies"
method: GET
path: "/v1/earn/strategies"
tags: ["Earn"]
---

# List yield strategies

`GET /v1/earn/strategies`

Returns the strategy catalogue visible to the caller, ranked by deposit size (TVL descending). By default the list answers the environment's own cluster — the shelf the caller can act on; pass `?cluster=` to browse the other cluster's mirrored shelf (those rows stay `fundable: false`). Catalogued is not the same as fundable: branch on `fundable` and `status` rather than assuming a listed strategy takes deposits.

## Query parameters

- `page` integer
- `pageSize` integer
- `sourceKind` 'defi' | 'rwa'
- `apyType` 'variable' | 'fixed'
- `liquidityTerm` 'instant' | 'delayed'
- `cluster` 'devnet' | 'mainnet-beta'

## Headers

- `x-project-id` string — Selects the active project for this request. Required for session/dashboard callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.

## Response `200`

One page of the strategy catalogue

- object — Standard success response envelope.
  - `data` object, required
    - `strategies` object[], required
      - `id` string, required — Catalogue id — the `strategyId` the deposit build takes.
      - `provider` string, required — Open provider id (e.g. `kamino`, `veda`).
      - `providerReference` string, required — The instrument's identity at the provider — the vault's on-chain address.
      - `name` string, required
      - `sourceKind` 'defi' | 'rwa', required — Where the yield comes from: on-chain DeFi or a real-world-asset fund.
      - `underlyingSource` string — Open id of the underlying protocol or fund, when the provider reports one.
      - `depositMints` string[], required — Mints the instrument accepts directly; the FIRST is the deposit token.
      - `shareMint` string — The share token a vault-direct deposit mints, when the instrument has one.
      - `apyType` 'variable' | 'fixed', required
      - `currentApy` string — Latest observed APY as a decimal ratio string (`"0.062"` = 6.2%), refreshed about every five minutes. Absent when the provider reports none.
      - `liquidityTerm` 'instant' | 'delayed', required
      - `redemptionDelayDays` number — For `delayed` liquidity: the provider's stated redemption delay.
      - `riskMetadata` object — Curator and risk framework metadata, as published by the provider. Curators publish heterogeneous frameworks, so this is an open shape.
        - `curator` string
        - `riskTier` string
        - `frameworkUrl` string
      - `status` 'active' | 'paused' | 'deprecated', required — Catalogue lifecycle. Only `active` strategies accept new deposits.
      - `depositSlippage` object, nullable, required — Non-null when this provider's deposit builder refuses to run without an explicit `minSharesOut`: quote the deposit first and derive the floor from the live figure minus a chosen tolerance. Null when the floor is optional.
        - `quoteRequired` true, required — The live quote endpoint must be called before building this direction.
        - `defaultToleranceBps` integer, required — Suggested starting tolerance in basis points; the customer may choose another accepted value.
      - `withdrawalSlippage` object, nullable, required — Non-null when this provider's withdrawal builder refuses to run without an explicit `minAmountOut`: call the withdrawal preview first and derive the floor from `assetsOut`. Null when the floor is optional.
        - `quoteRequired` true, required — The live quote endpoint must be called before building this direction.
        - `defaultToleranceBps` integer, required — Suggested starting tolerance in basis points; the customer may choose another accepted value.
      - `hostCluster` 'devnet' | 'mainnet-beta', required — The cluster the INSTRUMENT lives on — a stored fact about the vault.
      - `fundable` boolean, required — Whether the instrument exists on the caller's own cluster. `false` is definitive: a deposit can never work here. `true` is necessary but NOT sufficient — the strategy must also be `active` and the organization entitled to the provider — so branch on it rather than assuming a listed strategy takes deposits.
      - `createdAt` string, date-time, required — ISO 8601 timestamp.
      - `updatedAt` string, date-time, required — ISO 8601 timestamp.
    - `total` integer, required — Total rows visible to the caller across all pages.
    - `page` integer, required
    - `pageSize` integer, required
  - `meta` object, required — Response metadata.
    - `requestId` string, required — Request identifier for tracing.
    - `timestamp` string, date-time, required — ISO 8601 timestamp.

## Other responses

- `400` — Error
- `401` — Error
- `403` — Error
- `429` — Error
- `500` — Error
- `503` — Error

## Changes

- **2026-09-04** `787deeb0b4aa` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/solana/apis/solana-developer-platform-api/changes/v1/earn/strategies/get.md)

---

[API](https://skmtc.dev/solana/apis/solana-developer-platform-api.md) · [All operations](https://skmtc.dev/solana/apis/solana-developer-platform-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/solana/solana-developer-platform-api/revisions/787deeb0b4aa/schema)
