YO Protocol API

Public read API for YO Protocol. Fetch current vault snapshots (TVL, yield, underlying pools, allocation), pending redeem status, historical yield/TVL time series, and per-user deposit/withdraw history, pending redemptions and P&L. No API key required.

OpenAPI Specification

exponential-protocol-openapi.yml Raw ↑
generated: '2026-07-19'
method: searched
source: https://docs.yo.xyz/integrations/api
openapi: 3.0.0
info:
  title: Yo Protocol API
  version: '1.0'
  description: >-
    Public read API for the YO Protocol (by Exponential.fi). Fetch historical
    and current protocol- and address-level data for yoVaults: current
    snapshot (TVL, yield, underlying pools, allocation), pending redeem
    requests, historical yield and TVL time series, per-user deposit/withdraw
    history, per-user pending redemptions, and per-user P&L. No API key
    required. Endpoints are assembled verbatim from the per-endpoint OpenAPI
    fragments published on the docs API reference page.
servers:
  - url: https://api.yo.xyz
    description: Production
tags:
  - name: Vault
  - name: History
  - name: Performance
paths:
  /api/v1/vault/{network}/{vaultAddress}:
    get:
      operationId: VaultController_getVault_v1
      summary: Get a snapshot of the current TVL, yield, underlying pools and allocation of a protocol vault.
      tags: [Vault]
      parameters:
        - name: vaultAddress
          required: true
          in: path
          schema: { type: string }
        - name: network
          required: true
          in: path
          schema:
            enum: [base, ethereum, unichain, arbitrum, tac, plasma, hyperevm]
            type: string
      responses:
        '200':
          description: ''
  /api/v1/vault/pending-redeems/{network}/{vaultAddress}:
    get:
      operationId: VaultController_getTotalPendingRedeems_v1
      summary: Check the status of pending redeem requests for a given YO vault on a given blockchain.
      tags: [Vault]
      parameters:
        - name: vaultAddress
          required: true
          in: path
          schema: { type: string }
        - name: network
          required: true
          in: path
          schema:
            enum: [base, ethereum, unichain, arbitrum, tac, plasma, hyperevm]
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponseDto'
                  - properties:
                      data:
                        $ref: '#/components/schemas/AmountDto'
  /api/v1/vault/yield/timeseries/{network}/{vaultAddress}:
    get:
      operationId: VaultController_getYieldTimeseries_v1
      summary: Fetch the historical yield of a specific YO vault.
      tags: [Vault]
      parameters:
        - name: vaultAddress
          required: true
          in: path
          schema: { type: string }
        - name: network
          required: true
          in: path
          schema:
            enum: [base, ethereum, unichain, arbitrum, tac, plasma, hyperevm]
            type: string
      responses:
        '200':
          description: ''
  /api/v1/vault/tvl/timeseries/{network}/{vaultAddress}:
    get:
      operationId: VaultController_getTvlTimeseries_v1
      summary: Fetch the historical TVL of a specific YO vault.
      tags: [Vault]
      parameters:
        - name: vaultAddress
          required: true
          in: path
          schema: { type: string }
        - name: network
          required: true
          in: path
          schema:
            enum: [base, ethereum, unichain, arbitrum, tac, plasma, hyperevm]
            type: string
      responses:
        '200':
          description: ''
  /api/v1/history/user/{network}/{vaultAddress}/{userAddress}:
    get:
      operationId: HistoryController_getAggregatedHistory_v1
      summary: Fetch the historical deposits and withdrawals of a specific address for a specific YO vault on a specific blockchain.
      tags: [History]
      parameters:
        - name: vaultAddress
          required: true
          in: path
          schema: { type: string }
        - name: userAddress
          required: true
          in: path
          schema: { type: string }
        - name: limit
          required: false
          in: query
          schema: { type: number }
        - name: network
          required: true
          in: path
          schema:
            enum: [base, ethereum, unichain, arbitrum, tac, plasma, hyperevm]
            type: string
      responses:
        '200':
          description: ''
  /api/v1/vault/pending-redeems/{network}/{vaultAddress}/{userAddress}:
    get:
      operationId: VaultController_getPendingRedeemsForUser_v1
      summary: Fetch the pending redemptions for a specific user on a specific vault.
      tags: [Vault]
      parameters:
        - name: vaultAddress
          required: true
          in: path
          schema: { type: string }
        - name: userAddress
          required: true
          in: path
          schema: { type: string }
        - name: network
          required: true
          in: path
          schema:
            enum: [base, ethereum, unichain, arbitrum, tac, plasma, hyperevm]
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiResponseDto'
                  - properties:
                      data:
                        $ref: '#/components/schemas/PendingRedeemsForUserResponseDto'
  /api/v1/performance/user/{network}/{vaultAddress}/{userAddress}:
    get:
      operationId: PerformanceController_getUserPerformance_v1
      summary: Fetch the P&L of a user in a specific vault.
      tags: [Performance]
      parameters:
        - name: vaultAddress
          required: true
          in: path
          schema: { type: string }
        - name: userAddress
          required: true
          in: path
          schema: { type: string }
        - name: network
          required: true
          in: path
          schema:
            enum: [base, ethereum, unichain, arbitrum, tac, plasma, hyperevm]
            type: string
      responses:
        '200':
          description: ''
components:
  schemas:
    ApiResponseDto:
      type: object
      properties:
        data:
          type: object
          description: The response data
        message:
          type: string
          description: Message describing the response
        statusCode:
          type: number
          description: HTTP status code of the response
      required: [data, message, statusCode]
    AmountDto:
      type: object
      properties:
        raw:
          format: int64
          type: integer
        formatted:
          type: string
      required: [raw, formatted]
    PendingRedeemsForUserResponseDto:
      type: object
      properties:
        assets:
          $ref: '#/components/schemas/AmountDto'
        shares:
          $ref: '#/components/schemas/AmountDto'
      required: [assets, shares]