---
title: "List featured vaults"
method: GET
path: "/v1/vaults/featured"
tags: ["Vaults"]
---

# List featured vaults

`GET /v1/vaults/featured`

Returns the admin-curated featured shortlist, one card per logical vault in curated order: display name, marketing description, deployed chains (highest-TVL first), supply token, aggregate TVL, and the highest 7/30/90-day APY across deployments. `vault_ids` carries per-deployment `{chainId}:{address}` ids for `/v1/vaults/{vault_id}` links, in the same order as `chains`.

## Response `200`

Featured vault cards

- FeaturedVaultsResponse
  - `data` FeaturedVault[], required
    - `apy_30d_max` number, double, nullable — Highest 30-day APY across the vault's deployments.
    - `apy_7d_max` number, double, nullable — Highest 7-day APY across the vault's deployments, fraction (0.0573 = 5.73%). `null` while every window is warming up or APY display is disabled for this vault.
    - `apy_90d_max` number, double, nullable — Highest 90-day APY across the vault's deployments.
    - `chains` string[], required — Chain slugs the vault is deployed on, highest-TVL first.
    - `description` string, nullable — Curated marketing description; `null` when the curator hasn't written one.
    - `name` string, required — Curated display name; falls back to the registry id when the curator hasn't named the vault yet. `vault_id` carries the stable logical identifier.
    - `short_description` string, nullable — Card-length copy (e.g. "Conservative lending yield with low risk"). `null` when the curator hasn't written any; consumers decide whether to fall back to `description`.
    - `slug` string, required — Stable public route for the logical vault group.
    - `supply_token` string, nullable — Supply (numeraire) token symbol, from the highest-TVL deployment that reports one.
    - `tvl` CuratedTvl, required — USD amount on curated aggregates: decimal string, `null` when the pricing service is not configured.
      - `usd` string, nullable
    - `updated_at` string, date-time, nullable — Most recent indexer snapshot among the vault's deployments; `null` when no deployment carried a usable timestamp.
    - `vault_id` string, required — Stable logical vault id assigned by Admin.
    - `vault_ids` string[], required — Per-deployment API vault ids (`{chainId}:{address}`, same order as `chains`) for `/v1/vaults/{vault_id}` links.
  - `meta` ListMeta, required — Documented metadata for list endpoints; pagination fields are omitted by unpaginated responses.
    - `count` integer, required — Number of items in this response.
    - `limit` integer, nullable — Page-size cap actually applied to paginated lists.
    - `next_cursor` string, nullable — Set when more pages exist; pass back as `?next=`.
    - `partial_errors` PartialResponseError[], nullable — Item-scoped failures isolated from an aggregate response.
      - `code` string, required — Machine-readable error code for the isolated item failure.
      - `message` string, required — Human-readable error message.
      - `resource_id` string, nullable — Resource that failed inside the aggregate response, when known.
    - `refreshed_at` string, date-time, required
    - `request_id` string, required

## Other responses

- `401` — Missing or invalid auth
- `503` — Data source unavailable

---

[API](https://skmtc.dev/gauntlet/apis/gauntlet-api.md) · [All operations](https://skmtc.dev/gauntlet/apis/gauntlet-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/gauntlet/gauntlet-api/revisions/4452dcc4d7b3/schema)
