---
title: "Earn vaults"
method: GET
path: "/v3/earn/vaults"
tags: ["Earn"]
---

# Earn vaults

`GET /v3/earn/vaults`

## Query parameters

- `chainId` string
- `offset` integer
- `limit` integer
- `visibility` string

## Response `200`

Earn vaults

- object
  - `data` EarnVaultSummary[]
    - `chainId` integer
    - `address` string
    - `name` string
    - `symbol` string
    - `decimals` integer
    - `asset` AssetRef
      - `address` string
      - `symbol` string
      - `decimals` integer
      - `name` string, nullable
    - `totalAssets` string — Raw underlying asset amount as a bigint string.
    - `totalShares` string — Raw vault share supply as a bigint string.
    - `lostAssets` string — Raw lost asset amount as a bigint string.
    - `exchangeRate` string — Raw exchange rate as a bigint string.
    - `totalSupplyUsd` number — Market USD number for total Earn vault assets.
    - `availableAssets` string — Raw underlying asset amount as a bigint string.
    - `availableAssetsUsd` number — Market USD number for currently available assets.
    - `supplyApy` number, nullable — Public supply APY as a percent number.
    - `apyCurrent` number, nullable — Current public APY as a percent number.
    - `apy7d` number, nullable — Seven-day public APY as a percent number, using an anchor at or up to 15 minutes before the exact cutoff. Null when no qualifying local or archive anchor is available.
    - `apy30d` number, nullable — Thirty-day public APY as a percent number, using an anchor at or up to 15 minutes before the exact cutoff. Null when no qualifying local or archive anchor is available.
    - `apy90d` number, nullable — Ninety-day public APY as a percent number, using an anchor at or up to 15 minutes before the exact cutoff. Null when no qualifying local or archive anchor is available.
    - `utilization` number — Utilization ratio number.
    - `strategyCount` integer
    - `snapshotTimestamp` string, date-time
    - `createdAt` string, date-time
    - `visibility` VaultVisibilitySummary — Platform visibility verdict for discovery surfaces. Warning stays discoverable with a badge; the per-surface booleans carve out lend/borrow discovery individually.
      - `status` 'visible' | 'warning' | 'hidden' | 'pending_review', required
      - `explorableLend` boolean, required
      - `explorableBorrow` boolean, required
      - `decidedBy` 'config-revoked' | 'consistency-revoked' | 'config-suspended' | 'consistency-suspended' | 'config-failed' | 'not-explorable' | 'unassessable' | 'deprecated' | 'unclaimed' | 'verified' | 'awaiting-verification', required — Which resolution rule decided the status. `config-*` codes come from Layer 1 (configuration safety), `consistency-*` codes from Layer 2 (label consistency).
      - `reason` string, nullable, required — Display-appropriate explanation for the decision (deprecation reason, failing check), when one is authored.
  - `meta` PaginationMeta
    - `total` integer — Exact total count when the endpoint provides one.
    - `hasMore` boolean — Indicates whether another page exists beyond the current page.
    - `offset` integer
    - `limit` integer — Echoed page size after endpoint-side clamping.
    - `timestamp` string, date-time, required
    - `chainId` string — Comma-separated chain IDs for multi-chain responses.
    - `degradedProviders` string[] — Live providers whose data is incomplete in this response.

## Other responses

- `400` — Bad request
- `504` — Upstream request timed out

---

[API](https://skmtc.dev/euler/apis/euler-data-api-v3.md) · [All operations](https://skmtc.dev/euler/apis/euler-data-api-v3/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/euler/euler-data-api-v3/revisions/9573a5fbd4a6/schema)
