# Get lending pools

Endpoint reference for the 1delta API. Index: https://docs.1delta.io/llms.txt · every endpoint: https://docs.1delta.io/llms-full.txt

---

### GET /v1/data/lending/pools

- operationId: `get-lending-pools`
- docs: https://docs.1delta.io/1delta-api/get-lending-pools/
- markdown: https://docs.1delta.io/1delta-api/get-lending-pools.md
- tags: Lending (Data)

Get lending pools

Returns paginated lending pool data with optional filters and sorting.

**Server-side defaults** (applied when the parameter is omitted; pass an explicit value to override):
| Parameter | Default |
|-----------|---------|
| `minUtil` | `0.1` |
| `maxUtil` | `0.9` |
| `minTvlUsd` | `100000` (Ethereum, chainId 1) / `25000` (all other chains) |
| `maxRiskScore` | `4` (medium) |

To disable a default filter, pass `0` (e.g. `minUtil=0`).

**Oracle risk:** each pool carries an `oracleInfo` object classifying its price oracle's feed correctness (provider, reported vs intended pair, a 0–100 `worstScore`/`worstBand`, and `flags` such as `wrong-asset`/`correlated-proxy`/`cross-numeraire`). This is distinct from the price-staleness signal in `risk.breakdown[oracle]`. See the `OracleInfo` schema for the full scoring model.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `chainId` | query | string | no | Filter by chain ID See the `ChainId` schema for the full set of supported chains. |
| `lender` | query | string | no | Filter by lender key (e.g. AAVE_V3) See the `LenderId` schema for the full set of accepted values. |
| `underlyings` | query | string | no | Comma-separated token addresses (0x-prefixed) |
| `assetGroups` | query | string | no | Comma-separated asset group names |
| `minYield` | query | number | no | Minimum deposit rate |
| `maxYield` | query | number | no | Maximum deposit rate |
| `minUtil` | query | number | no | Minimum utilization (0-1). Defaults to 0.1 when omitted. |
| `maxUtil` | query | number | no | Maximum utilization (0-1). Defaults to 0.9 when omitted. |
| `minTvlUsd` | query | number | no | Minimum total liquidity in USD. Defaults to 100000 on Ethereum (chainId 1), 25000 on other chains. |
| `maxTvlUsd` | query | number | no | Maximum total liquidity in USD |
| `minDeposits` | query | number | no | Minimum total deposits (native units) |
| `maxDeposits` | query | number | no | Maximum total deposits (native units) |
| `minDebt` | query | number | no | Minimum total debt (native units) |
| `maxDebt` | query | number | no | Maximum total debt (native units) |
| `minLiquidity` | query | number | no | Minimum total liquidity (native units) |
| `maxLiquidity` | query | number | no | Maximum total liquidity (native units) |
| `minDebtUsd` | query | number | no | Minimum total debt in USD |
| `maxDebtUsd` | query | number | no | Maximum total debt in USD |
| `minLiquidityUsd` | query | number | no | Minimum total liquidity in USD |
| `maxLiquidityUsd` | query | number | no | Maximum total liquidity in USD |
| `maxRiskScore` | query | integer | no | Maximum risk score (1–5). Defaults to 4 (medium) when omitted. |
| `includeExposures` | query | boolean | no | Include config exposure data per pool. Opt-in; omit or false to skip (expensive). |
| `sortBy` | query | "depositRate" \| "variableBorrowRate" \| "stableBorrowRate" \| "intrinsicYield" \| "utilization" \| "totalDeposits" \| … (11 values) | no | Sort field |
| `sortDir` | query | "ASC" \| "DESC" | no | Sort direction |
| `start` | query | integer | no | Pagination offset |
| `count` | query | integer | no | Page size (default 100, max 1000) |

**Response `200`** — Pool data

| Field | Type | Description |
| --- | --- | --- |
| `success` | true |  |
| `data` | object |  |
| `data.start` | integer |  |
| `data.count` | integer | Number of entries in `items`. |
| `data.pools` | object[] |  |
| `data.pools[].chain_id` | string | EVM chain id, as a decimal string. See the `ChainId` schema. |
| `data.pools[].lender_key` | string |  |
| `data.pools[].underlying_address` | string |  |
| `data.pools[].asset_group` | string |  |
| `data.pools[].deposit_rate` | number |  |
| `data.pools[].variable_borrow_rate` | number |  |
| `data.pools[].stable_borrow_rate` | number |  |
| `data.pools[].intrinsic_yield` | number |  |
| `data.pools[].utilization` | number | Market utilization, as a fraction between 0 and 1. |
| `data.pools[].total_deposits` | number |  |
| `data.pools[].total_debt` | number |  |
| `data.pools[].total_liquidity` | number |  |
| `data.pools[].total_deposits_usd` | number |  |
| `data.pools[].total_debt_usd` | number |  |
| `data.pools[].total_liquidity_usd` | number |  |
| `actions` | null |  |

**Example response**

```json
{
  "success": true,
  "data": {
    "start": 1,
    "count": 1,
    "pools": [
      {
        "chain_id": "string",
        "lender_key": "AAVE_V3",
        "underlying_address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
        "asset_group": "string",
        "deposit_rate": 1,
        "variable_borrow_rate": 1,
        "stable_borrow_rate": 1,
        "intrinsic_yield": 1,
        "utilization": 1,
        "total_deposits": 1,
        "total_debt": 1,
        "total_liquidity": 1,
        "total_deposits_usd": 1,
        "total_debt_usd": 1,
        "total_liquidity_usd": 1
      }
    ]
  }
}
```

**Response `400`** — Validation error

**Response `429`** — Rate limited. Unauthenticated callers share a per-IP budget; send an `x-api-key` header to lift it. Retry with exponential backoff.

**Response `500`** — Unexpected server error. Safe to retry with backoff.

**Response `502`** — An upstream data source or protocol origin failed (`error.code` is `ORIGIN_FAILED`). `error.details` carries the per-origin status. This is also what a missing or malformed required parameter currently returns, rather than a 400.
