# Vaults

Read available vault records and their observed rate history.



[Authentication](/build/authentication/) · [Errors](/build/errors/) · [Amounts and units](/build/units/)


Response examples below come from a local test account. IDs, balances and timestamps are sample data. Replace IDs and credentials with values from your account.


## Vaults with observed trailing APY averages and risk tier

`GET /vaults`


Scope: `read` or `partner:read` (protocol-level). `apy_7d_avg`/`apy_30d_avg` come from recorded hourly observations and are null until enough exist.


**Access:** `read`, `partner:read`.


**SDK methods:** TypeScript `client.vaults.list(…)`; Python `client.vaults.list(…)`.


### Parameters

| Name | Location | Type | Required | Description |

| --- | --- | --- | --- | --- |

| `asset` | query | `"USDC"`, `"USDT0"` | No | Filter by asset symbol. |

| `network` | query | `"arbitrum"`, `"base"`, `"plasma"`, `"monad"`, `"mainnet"` | No | Filter to one chain. Omit for every chain — no server state is switched. |

### Request example

```bash
curl --fail-with-body -X GET "$THESAUROS_API_BASE/vaults" \
  -H "Authorization: Bearer $THESAUROS_API_KEY"
```

### Response · 200

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | `string` | Yes |   |
| `data` | [VaultDto](/api/partner-models/#vaultdto)[] | Yes |   |


<details><summary>View example response</summary>

```json
{
  "object": "list",
  "data": [
    {
      "object": "vault",
      "id": "vault_plasma_usdt0",
      "name": "Thesauros USDT0 Vault",
      "provider": "morpho",
      "asset": "USDT0",
      "chain": "plasma",
      "apy": 0.076,
      "apy_7d_avg": null,
      "apy_30d_avg": null,
      "tvl_usd": 12800000,
      "capacity_usd": 40000000,
      "risk_tier": "core",
      "status": "active",
      "allocation_pct": 0.07
    },
    {
      "object": "vault",
      "id": "vault_morpho_base_usdc",
      "name": "Morpho Blue USDC Yield",
      "provider": "morpho",
      "asset": "USDC",
      "chain": "base",
      "apy": 0.068,
      "apy_7d_avg": null,
      "apy_30d_avg": null,
      "tvl_usd": 21700000,
      "capacity_usd": 60000000,
      "risk_tier": "core",
      "status": "active",
      "allocation_pct": 0.22
    },
    {
      "object": "vault",
      "id": "vault_aave_base_usdc",
      "name": "Aave V3 USDC Core",
      "provider": "aave",
      "asset": "USDC",
      "chain": "base",
      "apy": 0.052,
      "apy_7d_avg": null,
      "apy_30d_avg": null,
      "tvl_usd": 48200000,
      "capacity_usd": 120000000,
      "risk_tier": "bluechip",
      "status": "active",
      "allocation_pct": 0.28
    },
    {
      "object": "vault",
      "id": "vault_compound_base_usdc",
      "name": "Compound V3 USDC Base",
      "provider": "compound",
      "asset": "USDC",
      "chain": "base",
      "apy": 0.048,
      "apy_7d_avg": null,
      "apy_30d_avg": null,
      "tvl_usd": 18100000,
      "capacity_usd": 55000000,
      "risk_tier": "core",
      "status": "active",
      "allocation_pct": 0.05
    },
    {
      "object": "vault",
      "id": "vault_compound_arb_usdc",
      "name": "Compound V3 USDC",
      "provider": "compound",
      "asset": "USDC",
      "chain": "arbitrum",
      "apy": 0.045,
      "apy_7d_avg": null,
      "apy_30d_avg": null,
      "tvl_usd": 33900000,
      "capacity_usd": 90000000,
      "risk_tier": "bluechip",
      "status": "active",
      "allocation_pct": 0.18
    },
    {
      "object": "vault",
      "id": "vault_treasury_base_usdc",
      "name": "Tokenized Treasury USDC",
      "provider": "treasury",
      "asset": "USDC",
      "chain": "base",
      "apy": 0.039,
      "apy_7d_avg": null,
      "apy_30d_avg": null,
      "tvl_usd": 74500000,
      "capacity_usd": 250000000,
      "risk_tier": "bluechip",
      "status": "active",
      "allocation_pct": 0.12
    }
  ]
}
```

</details>


For failed requests, inspect `error.code`, `error.message` and the request ID. [Error handling](/build/errors/).


## Observed APY series for one vault

`GET /apy/history`


Scope: `read` or `partner:read` (protocol-level). `vault` is required; `days` is 1-90 (default 7). Points are the recorded hourly observations, oldest first.


**Access:** `read`, `partner:read`.


**SDK methods:** TypeScript `client.vaults.history(…)`; Python `client.vaults.history(…)`.


### Parameters

| Name | Location | Type | Required | Description |

| --- | --- | --- | --- | --- |

| `vault` | query | `string` | No | Vault id. Required. |

| `days` | query | `number` | No | Window in days, 1-90 (default 7). |

### Request example

```bash
curl --fail-with-body -X GET "$THESAUROS_API_BASE/apy/history?vault=vault_plasma_usdt0" \
  -H "Authorization: Bearer $THESAUROS_API_KEY"
```

### Response · 200

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | `string` | Yes |   |
| `data` | [ApyHistoryDto](/api/partner-models/#apyhistorydto) | Yes |   |


<details><summary>View example response</summary>

```json
{
  "object": "apy_history",
  "data": {
    "object": "apy_history",
    "vault_id": "vault_plasma_usdt0",
    "name": "Thesauros USDT0 Vault",
    "asset": "USDT0",
    "chain": "plasma",
    "days": 7,
    "apy_avg": null,
    "observations": 0,
    "points": []
  }
}
```

</details>


For failed requests, inspect `error.code`, `error.message` and the request ID. [Error handling](/build/errors/).

