Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Pendle V2 API Docs Assets API
description: '## Terms used in the documentation/API
Below are some terms used in the documentation/API:
- Pendle Assets/Tokens: PT, YT, LP, SY
- Non-Pendle Assets: other tokens that are not Pendle assets, such as USDC, USDT, DAI, etc.'
version: '1.0'
contact: {}
servers:
- url: http://127.0.0.1:9000
tags:
- name: Assets
paths:
/v1/prices/assets:
get:
description: 'Returns USD prices for Pendle-supported tokens across all chains. Covers all token types in the Pendle app, including non-Pendle tokens (USDC, WETH, etc.) when they appear as underlying assets.
Prices update approximately every minute.
Filter by `chainId`, asset `id`, or `type` to narrow results.
For real-time PT/YT pre-trade prices that reflect current pool depth, use Get swapping prices instead.'
operationId: PricesCrossChainController_getAllAssetPricesByAddressesCrossChains
parameters:
- name: ids
required: false
in: query
description: Token ids to data for (comma-separated), leave blank to fetch all tokens. Up to 20 ids allowed.
schema:
example: 1-0x5fe30ac5cb1abb0e44cdffb2916c254aeb368650,1-0xc5cd692e9b4622ab8cdb57c83a0f99f874a169cd
type: string
- name: chainId
required: false
in: query
description: Chain id to filter by, leave blank to fetch all chains.
schema:
example: 1
type: number
- name: skip
required: false
in: query
description: Number of results to skip.
schema:
default: 0
type: number
- name: limit
required: false
in: query
description: Maximum number of results to return. Leave blank to fetch all results.
schema:
type: number
- name: type
required: false
in: query
description: 'Asset types to filter by (comma-separated). Valid values: `PENDLE_LP`, `SY`, `PT`, `YT`. Leave blank to fetch all assets types.'
schema:
$ref: '#/components/schemas/PendleAssetType'
responses:
'200':
description: Assets chainId-address mapped to their current USD prices across all chains.
content:
application/json:
schema:
$ref: '#/components/schemas/GetAssetPricesCrossChainResponse'
summary: Get asset prices (cross-chain)
tags:
- Assets
x-computing-unit: '1'
x-retail-api-rank: 6969
/v4/{chainId}/prices/{address}/ohlcv:
get:
description: 'Historical price data for PT / YT tokens / LP tokens. We do not support historical prices for **SY and non-Pendle tokens**.
The data is OHLCV data, returned in CSV format with open, high, low, close prices, and volume.
In the case of LP, volume data will be 0. To get the correct volume, use our Get market time-series data by address endpoint.
Returns at most 1440 data points.
The cost for the endpoint is based on how many data points are returned. The calculation is: `ceil(number of data points / 300)`.
At 1440 data points (which is 2 months of data with an hourly interval, or 4 years with a daily interval), the cost will be 5 computing units.'
operationId: PricesController_ohlcv_v4
parameters:
- name: chainId
required: true
in: path
schema:
type: number
- name: address
required: true
in: path
schema:
type: string
- name: time_frame
required: false
in: query
description: 'Time interval for OHLCV data aggregation. Valid values: `hour`, `day`, `week`.'
schema:
default: hour
enum:
- hour
- day
- week
type: string
- name: timestamp_start
required: false
in: query
description: ISO Date string of the start time you want to query
schema:
format: date-time
type: string
- name: timestamp_end
required: false
in: query
description: ISO Date string of the end time you want to query
schema:
format: date-time
type: string
responses:
'200':
description: OHLCV data in CSV format with time, open, high, low, close, volume.
content:
application/json:
schema:
$ref: '#/components/schemas/PriceOHLCVCSVResponse'
example:
total: 1
currency: USD
timeFrame: hour
timestamp_start: 1756245600
timestamp_end: 1756245600
results: 'time,open,high,low,close,volume
1756245600,42.4563,42.4563,42.4563,42.4563,0.0000'
summary: Get PT / YT / LP historical price by address
tags:
- Assets
x-computing-unit: 1+
x-retail-api-rank: 6969
/v1/assets/all:
get:
description: 'Returns the flat list of all PT, YT, LP, and SY tokens supported in the Pendle app, across all chains.
Each entry includes: name, symbol, contract address, decimals, expiry timestamp (for PT/YT), and icon URL.
Filter by `chainId`, asset `id`, or `type` (pt, yt, lp, sy).
Prices are not included — use Get asset prices to retrieve them separately.
For chain-specific asset lists with richer metadata and prices bundled, use the chain-scoped Get all assets endpoint instead.'
operationId: AssetsCrossChainController_getPendleAssetsMetadata
parameters:
- name: ids
required: false
in: query
description: Token ids to data for (comma-separated), leave blank to fetch all tokens. Up to 20 ids allowed.
schema:
example: 1-0x5fe30ac5cb1abb0e44cdffb2916c254aeb368650,1-0xc5cd692e9b4622ab8cdb57c83a0f99f874a169cd
type: string
- name: chainId
required: false
in: query
description: Chain id to filter by, leave blank to fetch all chains.
schema:
example: 1
type: number
- name: skip
required: false
in: query
description: Number of results to skip.
schema:
default: 0
type: number
- name: limit
required: false
in: query
description: Maximum number of results to return. Leave blank to fetch all results.
schema:
type: number
- name: type
required: false
in: query
description: 'Asset types to filter by (comma-separated). Valid values: `PENDLE_LP`, `SY`, `PT`, `YT`. Leave blank to fetch all assets types.'
schema:
$ref: '#/components/schemas/PendleAssetType'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/GetAllAssetsCrossChainResponse'
summary: Get all assets (cross-chain)
tags:
- Assets
x-computing-unit: '1'
x-retail-api-rank: 1
components:
schemas:
GetAllAssetsCrossChainResponse:
type: object
properties:
assets:
type: array
items:
$ref: '#/components/schemas/AssetDataCrossChain'
required:
- assets
GetAssetPricesCrossChainResponse:
type: object
properties:
prices:
type: object
additionalProperties:
type: number
example:
1-0x5fe30ac5cb1abb0e44cdffb2916c254aeb368650: 0.9989673642973003
1-0xd393d1ddd6b8811a86d925f5e14014282581bc04: 1.001712
description: Assets prices mapped by chainId-address
total:
type: number
description: Total number of assets
skip:
type: number
description: Number of assets got skipped
limit:
type:
- number
- 'null'
description: Number of assets limited by the query
required:
- prices
- total
- skip
AssetDataCrossChain:
type: object
properties:
name:
type: string
description: asset name
example: PT FRAX-USDC
decimals:
type: number
example: 18
description: asset decimals
address:
type: string
example: '0x5fe30ac5cb1abb0e44cdffb2916c254aeb368650'
description: asset address
symbol:
type: string
example: PT-FRAXUSDC_CurveLP Convex-30MAR2023
description: asset symbol
tags:
example:
- PT
description: asset tags
type: array
items:
type: string
expiry:
type: string
example: '2023-03-30T00:00:00.000Z'
description: asset expiry
proIcon:
type: string
example: https://storage.googleapis.com/prod-pendle-bucket-a/images/uploads/0d3199a2-0565-4355-ad52-6bfdc67e3467.svg
description: asset pro icon
chainId:
type: number
description: chain id
example: 1
required:
- name
- decimals
- address
- symbol
- tags
- expiry
- proIcon
- chainId
PriceOHLCVCSVResponse:
type: object
properties:
total:
type: number
description: Total number of data points available
currency:
type: string
deprecated: true
description: Always return USD
timeFrame:
type: string
description: Time frame of each OHLCV data point (e.g., "1h", "1d", "1w")
timestamp_start:
type: number
description: Start timestamp of the data range in seconds
timestamp_end:
type: number
description: End timestamp of the data range in seconds
results:
type: string
example: 'time,open,high,low,close,volume
1756245600,42.4563,42.4563,42.4563,42.4563,0.0000'
description: 'Resulting CSV string following the format: time,open,high,low,close,volume'
required:
- total
- currency
- timeFrame
- timestamp_start
- timestamp_end
- results
PendleAssetType:
type: string
enum:
- PENDLE_LP
- SY
- PT
- YT