Overview
Every approved vault with the seven windowed APYs, TVL, liquidity and
capacity from the latest snapshot. For a capital-aware allocation
preview, use GET /v1/vaults/rankings.
Endpoint
GET https://earn-api.quicknode.dev/functions/v1/api/v1/vaults
Authorization
Include the published apikey header. This read request is public and does not require a SIWE signature.
Parameters
| Parameter | Location | Type | Required | Description |
|---|---|---|---|---|
| chains | query | string | No | CSV of chain ids. Defaults to all enabled chains. |
| window | query | integer | No | Minutes for the headline `apy`, snapped to the nearest precomputed column. Defaults to 5. The seven windowed APYs are always returned in `windows`. |
| minTvl | query | number (decimal) | No | Minimum vault TVL in decimal dollars. Defaults to 0. |
| minLiquidity | query | number (decimal) | No | Minimum withdrawable liquidity in decimal dollars. Defaults to 0. |
| includeCovered | query | boolean | No | Opt in to OpenCover covered fee-wrapper rows (`covered: true`). Defaults to false. When omitted or false, the response contains plain vaults only. |
Example request
curl --request GET \
--url 'https://earn-api.quicknode.dev/functions/v1/api/v1/vaults?chains=1&window=5&minTvl=0&minLiquidity=0&includeCovered=false' \
--header 'Accept: application/json' \
--header 'apikey: <EARN_PUBLIC_API_KEY>'
Response
| Field | Type | Required | Description |
|---|---|---|---|
| mode | string (browse) | Yes | Identifies the response as an unranked vault browse list. |
| window | integer | Yes | The applied headline-APY window (minutes) after snapping. |
| vaults | array<object> | Yes | Approved vaults that match the supplied filters. |
| vaults[].chainId | integer | Yes | Numeric identifier of the chain where the vault is deployed. |
| vaults[].vaultAddress | string | Yes | Lowercase address of the ERC-4626 vault share token. |
| vaults[].name | string | null | Yes | Human-readable name of the vault. |
| vaults[].apy | number (decimal) | null | Yes | Headline APY percentage for the applied `window`, rounded to two decimal places. Returns null when there is insufficient history. |
| vaults[].windows | object | Yes | APY percentages for the seven precomputed lookback windows. A null value means there is insufficient history for that window. |
| vaults[].windows.m5 | number (decimal) | null | Yes | APY percentage over the five-minute lookback window. |
| vaults[].windows.m10 | number (decimal) | null | Yes | APY percentage over the ten-minute lookback window. |
| vaults[].windows.m30 | number (decimal) | null | Yes | APY percentage over the 30-minute lookback window. |
| vaults[].windows.h1 | number (decimal) | null | Yes | APY percentage over the one-hour lookback window. |
| vaults[].windows.h2 | number (decimal) | null | Yes | APY percentage over the two-hour lookback window. |
| vaults[].windows.h4 | number (decimal) | null | Yes | APY percentage over the four-hour lookback window. |
| vaults[].windows.h6 | number (decimal) | null | Yes | APY percentage over the six-hour lookback window. |
| vaults[].tvlUsd | integer | null | Yes | Vault TVL in whole US dollars, rounded to the nearest dollar. |
| vaults[].availableLiquidityUsd | integer | null | Yes | Withdrawable liquidity in whole US dollars, rounded to the nearest dollar. |
| vaults[].maxDepositUsd | integer | null | Yes | Deposit capacity in whole US dollars. Null means the vault is uncapped. |
| vaults[].atCapacity | boolean | Yes | True when the vault has no remaining deposit capacity. |
| vaults[].latestAt | string (date-time) | Yes | ISO 8601 timestamp of the latest vault snapshot. |
| vaults[].covered | boolean | No | Present and true only for an OpenCover covered fee wrapper. Omitted for plain vaults. |
Example response
The response includes every matching vault. This example shows one exact vault entry from the response:
{
"mode": "browse",
"window": 5,
"vaults": [
{
"chainId": 1,
"vaultAddress": "0x8e56cb6bc1a8961ed9062b99045d3299b27cdb4d",
"name": "Avantgarde USDC Dynamic",
"apy": 3.67,
"windows": {
"m5": 3.67,
"m10": 3.66,
"m30": 3.63,
"h1": 3.63,
"h2": 3.64,
"h4": 3.63,
"h6": 3.62
},
"tvlUsd": 105169,
"availableLiquidityUsd": 63085,
"maxDepositUsd": null,
"atCapacity": false,
"latestAt": "2026-07-31T12:55:33.542+00:00"
}
]
}
HTTP responses
| Status | Description |
|---|---|
| 200 | The browse vault list. |
| 400 | One or more query parameters are malformed or outside their accepted range. |
| 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 | Vault data is temporarily unavailable. |
OpenAPI source
This page is based on operation listVaults in the Earn OpenAPI 3.1 specification.