Overview
The latest snapshot for one approved vault: the seven windowed APYs, a
headline apy at the requested window, TVL, liquidity and capacity.
Same row shape as one element of the browse list. An unknown or
delisted vault is a 404.
include=liveLiquidity adds a fresh on-chain read of the vault's
withdrawable liquidity (liveLiquidity). This is a live number and
can differ from the snapshot availableLiquidityUsd. If the on-chain
read fails, the snapshot detail still returns 200 with
liveLiquidity: null and liveLiquidityError: "rpc_error".
Endpoint
GET https://earn-api.quicknode.dev/functions/v1/api/v1/vaults/{chainId}/{address}
Authorization
Include the published apikey header. This read request is public and does not require a SIWE signature.
Parameters
| Parameter | Location | Type | Required | Description |
|---|---|---|---|---|
| chainId | path | integer | Yes | Chain id the vault lives on. |
| address | path | string | Yes | Vault (ERC-4626 share token) address. |
| window | query | integer | No | Minutes for the headline `apy` (1–360), snapped to the nearest precomputed column. Defaults to 5. The seven windows are returned regardless. |
| include | query | string (liveLiquidity) | No | CSV of extras. Supported value — `liveLiquidity`. |
Example request
curl --location 'https://earn-api.quicknode.dev/functions/v1/api/v1/vaults/8453/0x1deefabee758aabdc29a542b24ca3b75afd56765' \
--header 'Accept: application/json' \
--header 'apikey: <EARN_PUBLIC_API_KEY>'
Response
| Field | Type | Required | Description |
|---|---|---|---|
| chainId | integer | Yes | Numeric identifier of the chain where the vault is deployed. |
| vaultAddress | string | Yes | Lowercased vault (ERC-4626 share token) address. |
| name | string | null | Yes | Human-readable vault name. |
| apy | number | null | Yes | Headline APY (%) at the requested `window`, 2dp. Null means insufficient snapshot history at that window (the vault is still listed). |
| windows | object | Yes | The seven precomputed APY windows for a vault, as percentages (2dp). A null window means insufficient snapshot history for that lookback (e.g. a freshly launched vault), NOT zero. |
| windows.m5 | number | null | Yes | APY percentage over the five-minute lookback window. |
| windows.m10 | number | null | Yes | APY percentage over the ten-minute lookback window. |
| windows.m30 | number | null | Yes | APY percentage over the 30-minute lookback window. |
| windows.h1 | number | null | Yes | APY percentage over the one-hour lookback window. |
| windows.h2 | number | null | Yes | APY percentage over the two-hour lookback window. |
| windows.h4 | number | null | Yes | APY percentage over the four-hour lookback window. |
| windows.h6 | number | null | Yes | APY percentage over the six-hour lookback window. |
| tvlUsd | integer | null | Yes | Vault TVL in whole dollars (rounded), or null. |
| availableLiquidityUsd | integer | null | Yes | Withdrawable liquidity in whole dollars, or null. |
| maxDepositUsd | integer | null | Yes | Deposit cap in whole dollars; null means uncapped. |
| atCapacity | boolean | Yes | True when the vault's max deposit is 0 (full). |
| latestAt | string (date-time) | Yes | ISO 8601 timestamp of the latest vault snapshot. |
| covered | boolean | No | Present and `true` ONLY when this vault is an OpenCover covered fee wrapper. OMITTED entirely for plain vaults (not `false`), so uncovered rows stay byte-identical; treat absence as uncovered. |
| underlyingVault | object | No | Present ONLY when the vault is a covered fee wrapper: the wrapped (underlying) Morpho vault it deposits into. Omitted for plain vaults. |
| underlyingVault.address | string | When present | Lowercase address of the underlying Morpho vault. |
| underlyingVault.name | string | null | When present | Human-readable name of the underlying Morpho vault. |
| liveLiquidity | object | null | No | Fresh on-chain liquidity data returned only when `include=liveLiquidity` is supplied. |
| liveLiquidity.morphoVersion | string (v1 | v2 | v2_with_v1_adapter) | When present | Morpho vault version used for the live liquidity calculation. |
| liveLiquidity.withdrawableUsdc | number | When present | USDC that can currently be withdrawn through a standard redemption, in decimal dollars. |
| liveLiquidity.forceDeallocatableUsdc | number | When present | Upper liquidity bound if every Morpho v2 adapter were force-deallocated, in decimal dollars. Earn does not use this penalty path. |
| liveLiquidityError | string (rpc_error) | No | Present when the live read failed (`liveLiquidity` is then null). |
Example response
{
"chainId": 8453,
"vaultAddress": "0x1deefabee758aabdc29a542b24ca3b75afd56765",
"name": "Gauntlet USDC Frontier",
"apy": 5.35,
"windows": {
"m5": 5.35,
"m10": 5.3,
"m30": 5.31,
"h1": 5.31,
"h2": 5.31,
"h4": 5.31,
"h6": 5.31
},
"tvlUsd": 2960444,
"availableLiquidityUsd": 744240,
"maxDepositUsd": null,
"atCapacity": false,
"latestAt": "2026-07-31T13:00:33.653+00:00"
}
HTTP responses
| Status | Description |
|---|---|
| 200 | The vault's latest snapshot. |
| 400 | Bad path (chain id not a positive integer, or address not a 0x address) or a bad `window`. |
| 404 | No such approved vault (unknown or delisted). |
| 429 | Rate limit exceeded. `Retry-After` (seconds) tells you when to retry. Reads, feedback, and push writes are keyed per IP; create/update/delete are keyed per wallet+IP; deposit/withdraw/claim calldata is keyed per strategy+IP. |
| 500 | Internal server error. |
OpenAPI source
This page is based on operation getVaultDetail in the Earn OpenAPI 3.1 specification.