Pendle Dashboard API

The Dashboard API from Pendle — 2 operation(s) for dashboard.

Operations 2

GET /v1/dashboard/positions/database/{user} Get user positions by address #
GET /v1/dashboard/merkle-claimed-rewards/{user} Get all merkle claimed rewards for a user #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/pendle-dashboard-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

pendle-dashboard-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Pendle V2 API Docs Dashboard 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: Dashboard
paths:
  /v1/dashboard/positions/database/{user}:
    get:
      description: 'Returns a complete snapshot of a user''s Pendle positions across all supported chains, including PT, YT, LP, and SY holdings.


        For each position the response includes token amounts, USD valuations, and claimable interest/reward amounts.


        **Caching**: claimable reward amounts are cached for up to 24 hours. For real-time claimable data, read directly from the reward contracts via RPC.


        Use the `chainId` query parameter to filter results to a specific chain.'
      operationId: DashboardController_getUserPositions
      parameters:
      - name: user
        required: true
        in: path
        schema:
          type: string
      - name: filterUsd
        required: false
        in: query
        description: Minimum USD value threshold to filter positions
        schema:
          example: 0.1
          type: number
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserPositionsCrossChainResponse'
      summary: Get user positions by address
      tags:
      - Dashboard
      x-computing-unit: '4'
      x-retail-api-rank: 6969
  /v1/dashboard/merkle-claimed-rewards/{user}:
    get:
      description: 'Returns the historical record of all merkle rewards that a user has already claimed.


        Useful for displaying claim history in a dashboard or verifying that a specific reward distribution has been collected.'
      operationId: DashboardController_getMerkleClaimedRewards
      parameters:
      - name: user
        required: true
        in: path
        description: Ethereum address of the user
        schema:
          type: string
      responses:
        '200':
          description: List of merkle claimed rewards for the user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MerkleClaimedRewardsResponse'
      summary: Get all merkle claimed rewards for a user
      tags:
      - Dashboard
      x-computing-unit: '2'
      x-retail-api-rank: 6969
components:
  schemas:
    MerkleUserCampaignResponse:
      type: object
      properties:
        user:
          type: string
        token:
          type: string
        merkleRoot:
          type: string
        chainId:
          type: number
        assetId:
          type: string
        amount:
          type: string
        toTimestamp:
          format: date-time
          type: string
        fromTimestamp:
          format: date-time
          type: string
      required:
      - user
      - token
      - merkleRoot
      - chainId
      - assetId
      - amount
      - toTimestamp
      - fromTimestamp
    CrossPtPosition:
      type: object
      properties:
        spokePt:
          type: string
          description: Spoke PT
          example: 0x123...
        balance:
          type: string
          description: Balance of the position
          example: '1000000000000000000'
      required:
      - spokePt
      - balance
    UserPositionsResponse:
      type: object
      properties:
        chainId:
          type: number
          description: Chain ID
          example: 1
        totalOpen:
          type: number
          description: Total number of open positions
          example: 100
        totalClosed:
          type: number
          description: Total number of closed positions
          example: 100
        totalSy:
          type: number
          description: Total number of SY positions
          example: 100
        openPositions:
          description: Array of user token positions
          type: array
          items:
            $ref: '#/components/schemas/MarketPosition'
        closedPositions:
          description: Array of closed user token positions
          type: array
          items:
            $ref: '#/components/schemas/MarketPosition'
        syPositions:
          description: Array of user SY positions
          type: array
          items:
            $ref: '#/components/schemas/SyPosition'
        updatedAt:
          format: date-time
          type: string
          description: Date time of the last update
          example: '2021-01-01T00:00:00.000Z'
        errorMessage:
          type: string
          description: Error message when there is something wrong
          example: Error message
      required:
      - chainId
      - totalOpen
      - totalClosed
      - totalSy
      - openPositions
      - closedPositions
      - syPositions
      - updatedAt
    ClaimTokenAmount:
      type: object
      properties:
        token:
          type: string
          description: Token id
          example: 1-0x123...
        amount:
          type: string
          description: Amount of tokens
          example: '1000000000000000000'
      required:
      - token
      - amount
    Position:
      type: object
      properties:
        balance:
          type: string
          description: Balance of the position
          example: '1000000000000000000'
        activeBalance:
          type: string
          description: Active balance of the position (for LP only)
          example: '1000000000000000000'
        valuation:
          type: number
          description: Valuation of the position in USD
          example: 10
        claimTokenAmounts:
          description: Array of claimable rewards
          type: array
          items:
            $ref: '#/components/schemas/ClaimTokenAmount'
      required:
      - balance
      - valuation
    MarketPosition:
      type: object
      properties:
        marketId:
          type: string
          description: Unique identifier of the market
          example: 1-0xabc...
        pt:
          description: Principal token (PT) position
          allOf:
          - $ref: '#/components/schemas/Position'
        yt:
          description: Yield token (YT) position
          allOf:
          - $ref: '#/components/schemas/Position'
        lp:
          description: Liquidity provider (LP) token position
          allOf:
          - $ref: '#/components/schemas/Position'
        crossPtPositions:
          description: Array of cross PT positions
          type: array
          items:
            $ref: '#/components/schemas/CrossPtPosition'
      required:
      - marketId
      - pt
      - yt
      - lp
      - crossPtPositions
    MerkleClaimedRewardsResponse:
      type: object
      properties:
        claimedRewards:
          description: Array of claimed merkle campaigns
          type: array
          items:
            $ref: '#/components/schemas/MerkleUserCampaignResponse'
      required:
      - claimedRewards
    UserPositionsCrossChainResponse:
      type: object
      properties:
        positions:
          description: Array of user positions
          type: array
          items:
            $ref: '#/components/schemas/UserPositionsResponse'
      required:
      - positions
    SyPosition:
      type: object
      properties:
        syId:
          type: string
          description: Unique identifier of the market
          example: 1-0xabc
        balance:
          type: string
          description: Sy token (SY) balance in wei
          example: '1000000000000000000'
        claimTokenAmounts:
          description: Array of claimable rewards
          type: array
          items:
            $ref: '#/components/schemas/ClaimTokenAmount'
      required:
      - syId
      - balance