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

# List Gauntlet-curated vaults

`GET /v1/vaults`

Returns identification-only rows for the admin-curated visible vaults, ordered most-recent-first; pass `?include_hidden=true` for every enabled vault (hidden included, disabled never). Each row's `group.id` groups deployments of the same logical Admin vault, `group.slug` is its unique public route, and `group.is_primary` identifies its representative. Use `/{vault_id}` for current metrics, `/{vault_id}/definition` for the full vault definition, `/{vault_id}/timeseries` for history.

Cursor-paginated, but the default page size is the cap so most callers don't need to think about it — pass `meta.next_cursor` back as `?next=` only if the result exceeds 1000 vaults.

## Query parameters

- `next` string
- `limit` integer
- `include_hidden` boolean

## Response `200`

List of vaults

- VaultListResponse
  - `data` VaultDetail[], required
    - `address` string, required
    - `chain_id` integer, required
    - `group` VaultGroupRef — Admin-curated logical grouping for a deployment-level vault row.
      - `deployment_date` string, nullable — Admin-curated deployment date (`YYYY-MM-DD`).
      - `description` string, nullable — Admin-curated long-form detail-page copy.
      - `id` string, required — Stable internal group id from the Admin vault registry (`vlt_176`).
      - `is_primary` boolean, required — Whether this deployment is the group's primary representative.
      - `is_stable` boolean, required — Whether performance views should use a stable-denominated basis.
      - `slug` string, required — Unique, curator-managed public route (`stgusda`).
    - `metrics` VaultMetrics, required
      - `apy_30d` number, double, nullable
      - `apy_7d` number, double, nullable
      - `apy_90d` number, double, nullable
      - `as_of` integer, nullable
      - `total_supply` string, required
      - `tvl` AmountPair, required — Decimal-string metric paired across native (numeraire-token) and USD. `native` is always present; `usd` is JSON null when pricing is unavailable.
        - `native` string, required
        - `usd` string, nullable
      - `unit_price` string, required
    - `name` string, required
    - `numeraire_token` TokenRef, required
      - `address` string, required
      - `decimals` integer, nullable
      - `symbol` string, nullable
    - `strategy` StrategyRef — Curated strategy assignment from the admin registry.
      - `id` string, required — Strategy label id (`prime_lending`, `earn`, …) — matches `/v1/strategies` card ids.
      - `name` string, required — Display name (`Prime Lending`).
    - `symbol` string, required
    - `vault_id` string, required
    - `vault_type` string, required
  - `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
- `422` — Invalid cursor

---

[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)
