LI.FI Earn Vaults API

The Earn Vaults API from LI.FI — 2 operation(s) for earn vaults.

OpenAPI Specification

lifi-earn-vaults-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: LI.FI Earn advanced Earn Vaults API
  description: Enterprise DeFi yield discovery and tracking API
  version: 0.1.0
  contact: {}
servers:
- url: https://earn.li.fi
  description: Production
security:
- x-lifi-api-key: []
tags:
- name: Earn Vaults
paths:
  /v1/vaults/{chainId}/{address}:
    get:
      operationId: VaultsController_getVault_v1
      summary: Get vault by chain and address
      description: Returns the full details for a single vault.
      tags:
      - Earn Vaults
      parameters:
      - name: address
        required: true
        in: path
        description: Vault contract address (0x-prefixed, 40 hex characters).
        example: '0x7BfA7C4f149E7415b73bdeDfe609237e29CBF34A'
        schema:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
      - name: chainId
        required: true
        in: path
        description: EVM chain ID of the network the vault is deployed on.
        example: 8453
        schema:
          type: integer
          minimum: 1
          maximum: 2147483647
      responses:
        '200':
          description: Vault found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Vault'
              example:
                address: '0x7BfA7C4f149E7415b73bdeDfe609237e29CBF34A'
                network: base
                chainId: 8453
                slug: morpho-base-usdc-0x7bfa
                name: Morpho USDC Vault
                description: Optimized USDC lending vault on Morpho
                protocol:
                  name: Morpho
                  logoUri: https://example.com/morpho-logo.png
                  url: https://morpho.org
                underlyingTokens:
                - address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                  symbol: USDC
                  decimals: 6
                  weight: 1
                lpTokens:
                - address: '0x7BfA7C4f149E7415b73bdeDfe609237e29CBF34A'
                  symbol: mUSDC
                  decimals: 18
                  priceUsd: '1.02'
                rewardTokens: []
                tags:
                - stablecoin
                - lending
                analytics:
                  apy:
                    base: 0.0534
                    reward: null
                    total: 0.0534
                  apy1d: 0.0521
                  apy7d: 0.0538
                  apy30d: 0.0545
                  tvl:
                    usd: '12500000.00'
                    native: '12500000000000'
                  updatedAt: '2026-03-31T14:30:00.000Z'
                caps:
                  totalCap: '50000000000000'
                  maxCap: '100000000000000'
                timeLock: 0
                kyc: false
                syncedAt: '2026-03-31T14:30:00.000Z'
                isTransactional: true
                isRedeemable: true
                depositPacks:
                - name: morpho-deposit
                  stepsType: instant
                redeemPacks:
                - name: morpho-redeem
                  stepsType: instant
        '400':
          description: Invalid chain ID or address format
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '404':
          description: Vault not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
  /v1/vaults:
    get:
      operationId: VaultsController_listVaults_v1
      summary: List vaults with optional filtering
      description: Returns a paginated list of vaults with optional filtering and sorting.
      tags:
      - Earn Vaults
      parameters:
      - name: chainId
        required: false
        in: query
        description: Filter by EVM chain ID (e.g., `8453` for Base, `1` for Ethereum).
        example: 8453
        schema:
          type: integer
          minimum: 1
          maximum: 2147483647
      - name: asset
        required: false
        in: query
        description: Filter by underlying token symbol or address (e.g., `USDC`).
        example: USDC
        schema:
          type: string
          minLength: 1
      - name: protocol
        required: false
        in: query
        description: Filter by protocol name (e.g., `morpho-v1`, `aave-v3`).
        example: morpho-v1
        schema:
          type: string
          minLength: 1
      - name: minTvlUsd
        required: false
        in: query
        description: Minimum TVL in USD. Use this to filter out low-liquidity vaults (e.g., `1000000` for $1M+).
        example: 100000
        schema:
          type: number
          minimum: 0
      - name: isTransactional
        required: false
        in: query
        description: Filter by whether the vault supports programmatic deposits and withdrawals via the Composer API. Pass `true` to return only transactional vaults.
        example: 'true'
        schema:
          type: string
          enum:
          - 'true'
          - 'false'
      - name: isRedeemable
        required: false
        in: query
        description: Filter by whether the vault currently supports redemptions (withdrawals). Pass `true` to return only vaults that can be redeemed.
        example: 'true'
        schema:
          type: string
          enum:
          - 'true'
          - 'false'
      - name: isComposerSupported
        required: false
        in: query
        description: Filter by whether the vault is fully supported by the LI.FI Composer. Pass `true` to return only vaults ready for end-to-end cross-chain deposit flows.
        example: 'true'
        schema:
          type: string
          enum:
          - 'true'
          - 'false'
      - name: sortBy
        required: false
        in: query
        description: Sort order for results. `apy` sorts by highest total APY first. `tvl` sorts by highest TVL first.
        example: apy
        schema:
          type: string
          enum:
          - apy
          - tvl
      - name: cursor
        required: false
        in: query
        description: Pagination cursor from a previous response's `nextCursor` field. Omit to start from the beginning.
        example: eyJpZCI6MTAwfQ
        schema:
          type: string
          minLength: 1
      - name: limit
        required: false
        in: query
        description: Number of results per page. Defaults to `50`.
        example: 10
        schema:
          type: integer
          minimum: 1
          maximum: 100
      responses:
        '200':
          description: Paginated vault list
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
                required:
                - data
                - total
                properties:
                  data:
                    type: array
                    description: Array of vault objects matching the filters.
                    items:
                      $ref: '#/components/schemas/Vault'
                  nextCursor:
                    type: string
                    description: Cursor to pass as the `cursor` parameter to fetch the next page. Absent when there are no more results.
                    example: eyJpZCI6MTAwfQ
                  total:
                    type: integer
                    description: Total number of vaults matching the filters across all pages.
                    example: 47
                    minimum: -9007199254740991
                    maximum: 9007199254740991
              example:
                data:
                - address: '0x7BfA7C4f149E7415b73bdeDfe609237e29CBF34A'
                  network: base
                  chainId: 8453
                  slug: morpho-base-usdc-0x7bfa
                  name: Morpho USDC Vault
                  description: Optimized USDC lending vault on Morpho
                  protocol:
                    name: Morpho
                    logoUri: https://example.com/morpho-logo.png
                    url: https://morpho.org
                  underlyingTokens:
                  - address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                    symbol: USDC
                    decimals: 6
                    weight: 1
                  lpTokens:
                  - address: '0x7BfA7C4f149E7415b73bdeDfe609237e29CBF34A'
                    symbol: mUSDC
                    decimals: 18
                    priceUsd: '1.02'
                  rewardTokens: []
                  tags:
                  - stablecoin
                  - lending
                  analytics:
                    apy:
                      base: 0.0534
                      reward: null
                      total: 0.0534
                    apy1d: 0.0521
                    apy7d: 0.0538
                    apy30d: 0.0545
                    tvl:
                      usd: '12500000.00'
                      native: '12500000000000'
                    updatedAt: '2026-03-31T14:30:00.000Z'
                  caps:
                    totalCap: '50000000000000'
                    maxCap: '100000000000000'
                  timeLock: 0
                  kyc: false
                  syncedAt: '2026-03-31T14:30:00.000Z'
                  isTransactional: true
                  isRedeemable: true
                  depositPacks:
                  - name: morpho-deposit
                    stepsType: instant
                  redeemPacks:
                  - name: morpho-redeem
                    stepsType: instant
                nextCursor: eyJpZCI6MTAwfQ
                total: 47
        '400':
          description: Validation failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
components:
  schemas:
    Vault:
      type: object
      additionalProperties: false
      required:
      - address
      - network
      - chainId
      - slug
      - name
      - protocol
      - underlyingTokens
      - lpTokens
      - tags
      - analytics
      - syncedAt
      - isTransactional
      - isRedeemable
      - depositPacks
      - redeemPacks
      properties:
        address:
          type: string
          description: Vault contract address (0x-prefixed, 40 hex characters).
          example: '0x7BfA7C4f149E7415b73bdeDfe609237e29CBF34A'
        network:
          type: string
          description: Network name as a lowercase string (e.g., `base`, `ethereum`).
          example: base
        chainId:
          type: integer
          description: EVM chain ID of the network the vault is deployed on.
          example: 8453
          minimum: -9007199254740991
          maximum: 9007199254740991
        slug:
          type: string
          description: URL-safe unique identifier for the vault, combining protocol, network, asset, and a short address suffix.
          example: morpho-base-usdc-0x7bfa
        name:
          type: string
          description: Human-readable display name for the vault.
          example: Morpho USDC Vault
        description:
          type: string
          description: Short description of the vault's strategy or purpose.
          example: Optimized USDC lending vault on Morpho
        protocol:
          type: object
          description: The DeFi protocol that operates this vault.
          additionalProperties: false
          required:
          - name
          - url
          properties:
            name:
              type: string
              description: Protocol display name.
              example: Morpho
            logoUri:
              type: string
              description: URL to the protocol's logo image.
              example: https://example.com/morpho-logo.png
            url:
              type: string
              description: Protocol website URL.
              example: https://morpho.org
        underlyingTokens:
          type: array
          description: The tokens you deposit into this vault.
          items:
            type: object
            additionalProperties: false
            required:
            - address
            - symbol
            - decimals
            properties:
              address:
                type: string
                description: Token contract address.
                example: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
              symbol:
                type: string
                description: Token symbol.
                example: USDC
              decimals:
                type: integer
                description: Number of decimal places for the token.
                example: 6
                minimum: 0
                maximum: 9007199254740991
              weight:
                type: number
                description: Token weight in the pool, expressed as a fraction between 0 and 1. Only relevant for multi-asset vaults.
                example: 1
        lpTokens:
          type: array
          description: LP (liquidity provider) tokens received when depositing into the vault.
          items:
            type: object
            additionalProperties: false
            required:
            - address
            - symbol
            - decimals
            properties:
              address:
                type: string
                description: LP token contract address.
                example: '0x7BfA7C4f149E7415b73bdeDfe609237e29CBF34A'
              symbol:
                type: string
                description: LP token symbol.
                example: mUSDC
              decimals:
                type: integer
                description: Number of decimal places for the LP token.
                example: 18
                minimum: 0
                maximum: 9007199254740991
              priceUsd:
                type: string
                description: Current LP token price in USD, as a decimal string.
                example: '1.02'
        rewardTokens:
          type: array
          description: Additional reward tokens distributed by the vault (e.g., governance tokens). Empty array if no rewards.
          items:
            type: object
            additionalProperties: false
            required:
            - address
            - symbol
            - decimals
            properties:
              address:
                type: string
                description: Reward token contract address.
                example: '0x0000000000000000000000000000000000000000'
              symbol:
                type: string
                description: Reward token symbol.
                example: MORPHO
              decimals:
                type: integer
                description: Number of decimal places for the reward token.
                example: 18
                minimum: 0
                maximum: 9007199254740991
        tags:
          type: array
          description: Descriptive labels for filtering and categorisation (e.g., `stablecoin`, `lending`, `yield`).
          items:
            type: string
          example:
          - stablecoin
          - lending
        analytics:
          type: object
          description: Real-time yield and TVL analytics for the vault.
          additionalProperties: false
          required:
          - apy
          - apy1d
          - apy7d
          - apy30d
          - tvl
          - updatedAt
          properties:
            apy:
              type: object
              description: Current APY breakdown.
              additionalProperties: false
              required:
              - base
              - reward
              - total
              properties:
                base:
                  type: number
                  nullable: true
                  description: Base APY from lending fees and protocol yield, expressed as a decimal (e.g., `0.0534` = 5.34%). Null if unavailable.
                  example: 0.0534
                reward:
                  type: number
                  nullable: true
                  description: Additional APY from token incentives, expressed as a decimal. Null if no rewards.
                  example: null
                total:
                  type: number
                  description: Total APY (base + reward), expressed as a decimal.
                  example: 0.0534
            apy1d:
              type: number
              nullable: true
              description: 1-day trailing APY, expressed as a decimal. Null if insufficient data.
              example: 0.0521
            apy7d:
              type: number
              nullable: true
              description: 7-day trailing APY, expressed as a decimal. Null if insufficient data.
              example: 0.0538
            apy30d:
              type: number
              description: 30-day trailing APY, expressed as a decimal.
              example: 0.0545
            tvl:
              type: object
              description: Total value locked in the vault.
              additionalProperties: false
              required:
              - usd
              properties:
                usd:
                  type: string
                  description: TVL denominated in USD, as a decimal string.
                  example: '12500000.00'
                native:
                  type: string
                  description: TVL denominated in the vault's native token units, as a string.
                  example: '12500000000000'
            updatedAt:
              type: string
              format: date-time
              description: ISO 8601 timestamp of when analytics were last updated.
              example: '2026-03-31T14:30:00.000Z'
        caps:
          type: object
          description: Deposit capacity limits for the vault. Omitted if the vault has no cap.
          additionalProperties: false
          properties:
            totalCap:
              type: string
              description: Total deposit cap in native token units, as a string.
              example: '50000000000000'
            maxCap:
              type: string
              description: Maximum deposit cap in native token units, as a string.
              example: '100000000000000'
        timeLock:
          type: integer
          description: Withdrawal time lock in seconds. `0` means withdrawals are instant.
          example: 0
          minimum: 0
          maximum: 9007199254740991
        kyc:
          type: boolean
          description: Whether KYC verification is required to interact with this vault.
          example: false
        syncedAt:
          type: string
          format: date-time
          description: ISO 8601 timestamp of when vault data was last synced from the provider.
          example: '2026-03-31T14:30:00.000Z'
        isTransactional:
          type: boolean
          description: Whether the vault supports programmatic deposits and withdrawals via the Composer API.
          example: true
        isRedeemable:
          type: boolean
          description: Whether the vault currently supports redemptions (withdrawals).
          example: true
        depositPacks:
          type: array
          description: Available deposit operation configurations. Each pack defines the steps required to deposit into the vault.
          items:
            type: object
            additionalProperties: false
            required:
            - name
            - stepsType
            properties:
              name:
                type: string
                description: Identifier for the deposit pack.
                example: morpho-deposit
              stepsType:
                type: string
                description: '`instant` means the deposit executes in a single transaction. `complex` means multiple steps are required.'
                enum:
                - instant
                - complex
                example: instant
        redeemPacks:
          type: array
          description: Available redemption operation configurations. Each pack defines the steps required to withdraw from the vault.
          items:
            type: object
            additionalProperties: false
            required:
            - name
            - stepsType
            properties:
              name:
                type: string
                description: Identifier for the redemption pack.
                example: morpho-redeem
              stepsType:
                type: string
                description: '`instant` means the redemption executes in a single transaction. `complex` means multiple steps are required.'
                enum:
                - instant
                - complex
                example: instant
    ValidationError:
      type: object
      additionalProperties: false
      required:
      - statusCode
      - message
      - errors
      properties:
        statusCode:
          type: number
          description: HTTP status code. Always `400` for validation errors.
          example: 400
        message:
          type: string
          description: Human-readable summary of the validation failure.
          example: Validation failed
        errors:
          type: array
          description: List of individual validation errors.
          items:
            type: object
            additionalProperties: false
            required:
            - code
            - message
            - path
            properties:
              code:
                type: string
                description: Machine-readable error code.
                example: invalid_type
              message:
                type: string
                description: Description of this specific validation failure.
                example: Expected integer, received string
              path:
                type: array
                description: JSON path to the field that failed validation.
                items:
                  oneOf:
                  - type: string
                  - type: number
                example:
                - chainId
    NotFoundError:
      type: object
      additionalProperties: false
      required:
      - statusCode
      - message
      properties:
        statusCode:
          type: integer
          description: HTTP status code.
          example: 404
        message:
          type: string
          description: Error message describing what was not found.
          example: Vault not found
  securitySchemes:
    x-lifi-api-key:
      type: apiKey
      in: header
      name: x-lifi-api-key