Get lending pools
GET/v1/data/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.
Plain-text reference — GET /v1/data/lending/pools
Parameters
| Parameter | 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
| 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
{
"success": true,
"data": {
"start": 1,
"count": 1,
"pools": [
{
"chain_id": "string",
"lender_key": "AAVE_V3",
"underlying_address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
"asset_group": "string",
"deposit_rate": 1.0,
"variable_borrow_rate": 1.0,
"stable_borrow_rate": 1.0,
"intrinsic_yield": 1.0,
"utilization": 1.0,
"total_deposits": 1.0,
"total_debt": 1.0,
"total_liquidity": 1.0,
"total_deposits_usd": 1.0,
"total_debt_usd": 1.0,
"total_liquidity_usd": 1.0
}
]
}
}
Request
Responses
- 200
- 400
- 429
- 500
- 502
Pool data
Validation error
Rate limited. Unauthenticated callers share a per-IP budget; send an x-api-key header to lift it. Retry with exponential backoff.
Unexpected server error. Safe to retry with backoff.
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.