Get available lending assets
GET/v1/data/token/available
Returns the list of assets available for lending on a given chain. Proxied from origin with a long-lived cache (1 hour).
Filters:
chainId/chainIds— filter by chainlender— filter by lender protocolsymbol,name,address— filter by asset metadataassetGroup— filter by asset group
Response Structure:
count: Number of matching assetsitems: Array of asset objects with address, chain_id, symbol, name, and additional metadataitems[].desk: the asset's credit desk (seeCreditDesk),nullwhen it names no issueritems[].assetClass/underlyingTicker/rwa: what kind of real-world asset it is (token-listsprops.rwa),nullon crypto
Plain-text reference — GET /v1/data/token/available
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. |
chainIds | query | string | no | Comma-separated chain IDs to filter by (alternative to chainId) See the ChainId schema for the full set of supported chains. |
lender | query | string | no | Filter by lender protocol key See the LenderId schema for the full set of accepted values. |
symbol | query | string | no | Filter by token symbol |
name | query | string | no | Filter by token name (partial match) |
address | query | string | no | Filter by token contract address |
assetGroup | query | string | no | Filter by asset group |
issuers | query | string | no | CSV of issuer ids, e.g. sky, ethena, circle. WHOSE CREDIT the asset is — not the money it is worth (USDe and USDC are both USD and are not the same credit), not the venue or curator that hosts it, not the chain or bridge it arrived over. OR-ed across the listed ids; there is no all mode, since an asset has at most one desk per axis. Assets with no issuer (WETH, BNB, AVAX) never match. Matches the asset's own desk OR its exposure desk by default; narrow with issuerMatch. |
hasIssuer | query | boolean | no | false returns exactly the assets with NO issuer attribution (the curation worklist); true returns only attributed ones. |
assetClasses | query | string | no | CSV of asset classes the asset must be of: stock, etf, pre-ipo, fund, credit, commodity, or the aliases stocks / equity (stock + etf + pre-ipo) and rwa (every class). Matches the row's assetClass. Read verbatim off token-lists props.rwa (equity/stock → stock, equity/pre-ipo → pre-ipo, fund/etf → etf, other funds → fund, credit → credit, commodity → commodity), never from a ticker. An asset with no class (crypto) never matches; an unknown value is a 400 naming the valid ones. Forwarded to the origin and applied again by the 1delta API on the stamped rows, so an origin that ignores it cannot widen the answer (the page may then come back short of count). |
underlyingTickers | query | string | no | CSV of real-world tickers the asset must track (underlyingTicker, case-insensitive; equity classes only — TSLAx, TSLAon and Dinari's TSLA all answer to TSLA). ANDed with assetClasses. |
issuerMatch | query | any, direct, exposure, credit | no | Which desk the issuer filter matches. any (default) spans BOTH the asset's own desk and the desk its underlying resolves to — a PT over sUSDe is Pendle's INSTRUMENT and Ethena's CREDIT, so it answers to issuers=pendle and to issuers=ethena in one call, with no client-side union. direct = only that desk's own instruments. exposure = only wrappers whose underlying resolves to it. credit = only assets whose CREDIT DESK (see CreditDesk) is one of the ids: every asset has at most one, so under credit the issuers filter PARTITIONS the result (a PT-sUSDe answers to ethena and never to pendle). Under credit, start/count are applied after the filter. |
Response 200
| Field | Type | Description |
|---|---|---|
success | True | |
data | object | |
data.count | integer | Number of available assets |
data.items | object[] | The result set for this response. |
data.items[].address | string | Token contract address |
data.items[].chain_id | integer | EVM chain id, as a decimal string. See the ChainId schema. |
data.items[].symbol | string | Token symbol, e.g. WETH. |
data.items[].name | string | Human-readable display name. |
data.items[].desk | object | The asset's credit desk (see CreditDesk). null when it has none. Exactly what issuerMatch=credit matches. |
data.items[].assetClass | stock, etf, pre-ipo, fund, credit, commodity, … (7 values) | WHAT KIND of real-world asset the asset is, read verbatim off token-lists props.rwa (equity/stock → stock, equity/pre-ipo → pre-ipo, fund/etf → etf, other funds → fund, credit, commodity). null = not a tokenized real-world asset. What assetClasses= matches. |
data.items[].underlyingTicker | string | The real-world ticker the asset tracks, upper-cased (TSLA on TSLAx, TSLAon and Dinari's TSLA alike). Equity classes only; null otherwise. |
data.items[].rwa | object | token-lists' real-world-asset block as stored: { type, subType, issuer, underlying }. null on crypto. |
actions | null |
Example response
{
"success": true,
"data": {
"count": 1,
"items": [
{
"address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"chain_id": 1,
"symbol": "USDC",
"name": "USD Coin",
"desk": {
"id": "ethena",
"name": "Ethena",
"kind": "string",
"via": "pendle",
"hops": 1
},
"assetClass": "stock",
"underlyingTicker": "string",
"rwa": {}
}
]
}
}
Request
Responses
- 200
- 400
- 429
- 500
- 502
Available lending assets
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.