> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pods.finance/llms.txt
> Use this file to discover all available pages before exploring further.

# Get strategy details (v2)

> Returns enriched strategy metadata, spot position metrics, and rate history. Supply wallet to include wallet-scoped history and PnL.



## OpenAPI

````yaml /openapi.yaml get /v2/strategies/{strategyId}
openapi: 3.0.0
info:
  version: 2.0.0
  title: Pods API
  description: >
    # Pods API Documentation


    Pods API is a comprehensive DeFi aggregation platform that enables
    cross-chain and same-chain transactions for yield strategies.


    ## Key Features


    - **Cross-Chain Swaps**: Swap tokens across different blockchain networks

    - **Same-Chain Swaps**: Optimal routing for swaps within the same network

    - **Yield Strategies**: Access to multiple DeFi protocols (Aave, Morpho,
    Lido, etc.)

    - **Wallet Tracking**: Monitor positions and yields across protocols

    - **Transaction Monitoring**: Real-time status updates for cross-chain
    transactions


    ## Authentication


    Most API endpoints require authentication using an API key in the
    `x-api-key` header:


    ```

    x-api-key: your-api-key-here

    ```


    Obtain your API key from the Pods dashboard.


    **Exceptions:**

    - `GET /health` is public and does not require authentication.

    - Customer dashboard endpoints (e.g. `GET /customers/me`,
    `/customers/:id/tokens`, `/customers/:id/token-groups`) require a **Bearer**
    token (Supabase or Magic JWT). API key alone is not sufficient for these
    routes because they enforce user role checks.


    ## Base URL


    Production: `https://api.pods.finance`


    ## Rate Limits


    - 100 requests per minute per API key

    - 1000 requests per hour per API key


    ## Quote Expiration


    Quotes expire after 5 minutes. The `deadline` field is a Unix timestamp in
    seconds and `deadlineDate` is an ISO 8601 string (UTC); request a new quote
    when the deadline has passed.


    ## Error Handling


    All errors follow a consistent format. The HTTP status line is the source of
    truth — the body does **not** include `httpStatus`:


    ```json

    {
      "error": {
        "code": "ERROR_CODE",
        "message": "Human-readable error message",
        "details": {}
      }
    }

    ```


    ## Common Error Codes


    - **QUOTE_NOT_FOUND** (404): Quote not found or expired

    - **ACTION_NOT_FOUND** (404): Action not found

    - **STRATEGY_NOT_FOUND** (404): Strategy not found

    - **INVALID_ACTION_TYPE** (400): Action type is not supported for this
    endpoint

    - **QUOTE_EXPIRED** (400): Quote has expired

    - **QUOTE_VALIDATION_ERROR** (400): Quote validation failed

    - **PIX_THIRD_PARTY_QUOTE_MISMATCH** (400): thirdParty must match the Pix
    offramp quote

    - **PROVIDER_NOT_FOUND** (404): Swap provider not found

    - **NO_ROUTE_FOUND** (400): No swap route available between specified chains

    - **INVALID_PREFERRED_PROVIDER** (400): Unknown preferredProvider name

    - **PREFERRED_PROVIDER_NOT_ELIGIBLE** (400): preferredProvider is not
    eligible for this swap route

    - **PREFERRED_PROVIDER_QUOTE_UNAVAILABLE** (400): No quote was returned for
    the requested preferredProvider

    - **QUOTE_GENERATION_FAILED** (400): Could not generate quote for specified
    parameters

    - **FEE_SPONSORSHIP_NOT_ALLOWED** (403): Fee sponsorship is not allowed for
    this customer

    - **INVALID_TX_HASH** (400): Invalid transaction hash format

    - **TX_UPDATE_FAILED** (500): Failed to update transaction status

    - **INVALID_AMOUNT_PARAMS** (400): Cannot specify both amountIn and
    amountOut simultaneously

    - **MISSING_AMOUNT_PARAMS** (400): Either amountIn or amountOut is required

    - **INVALID_SLIPPAGE** (400): slippage must be a number between 0.0001 and
    0.5 (fraction of 1, e.g. 0.01 = 1%)

    - **AMOUNT_IN_TOO_LOW** (400): AmountIn is below the minimum for this route

    - **AMOUNT_IN_TOO_HIGH** (400): AmountIn exceeds available liquidity for
    this route. Try a smaller amount.

    - **AMOUNT_IN_TOO_LOW_OFFRAMP** (400): AmountIn must be greater than 1 USDC

    - **AMOUNT_IN_TOO_HIGH_OFFRAMP** (400): AmountIn must be less than 5k USDC

    - **AMOUNT_OUT_TOO_LOW_OFFRAMP** (400): AmountOut must be greater than 5
    BRLA

    - **AMOUNT_OUT_TOO_HIGH_OFFRAMP** (400): AmountOut must be less than 26k
    BRLA

    - **AMOUNT_IN_TOO_LOW_ONRAMP** (400): AmountIn must be greater than 5 BRLA

    - **AMOUNT_IN_TOO_HIGH_ONRAMP** (400): AmountIn must be less than 75k BRLA

    - **AMOUNT_OUT_TOO_LOW_ONRAMP** (400): AmountOut must be greater than 1 USDC

    - **AMOUNT_OUT_TOO_HIGH_ONRAMP** (400): AmountOut must be less than 15k USDC

    - **TRANSFER_VALIDATION_FAILED** (400): Token transfer validation failed

    - **REFUND_PROCESSING_FAILED** (500): Failed to process refund transaction

    - **INSUFFICIENT_AMOUNT_FOR_REFUND** (400): Transferred amount insufficient
    to cover refund fee

    - **FORBIDDEN** (403): Access denied

    - **INTERNAL_SERVER_ERROR** (500): An unexpected error occurred

    - **BYTECODE_GENERATION_FAILED** (500): Failed to generate transaction
    bytecode

    - **SWAP_EXECUTION_FAILED** (500): Failed to execute swap transaction

    - **KAMINO_SERVICE_UNAVAILABLE** (503): Lending service is temporarily
    unavailable. Please try again later.

    - **KAMINO_BAD_REQUEST** (400): Invalid request to lending service

    - **DEPOSIT_NOT_FOUND** (404): Bitcoin deposit not found

    - **SYMBIOSIS_API_ERROR** (502): Error communicating with Symbiosis API


    ## Support


    - Documentation: https://docs.pods.finance

    - Support: support@pods.finance
  contact:
    name: Pods Support
    email: support@pods.finance
    url: https://pods.finance
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
servers:
  - url: https://api.pods.finance
    description: Production server
security: []
tags:
  - name: Health
    description: Health check endpoints
  - name: KYC
    description: Reusable Sumsub KYC import and status endpoints
  - name: Swap v2
    description: Token swap operations (latest version)
  - name: Tracking
    description: Execution tracking for swaps, transfers, and strategy operations
  - name: Strategies
    description: DeFi yield strategy operations
  - name: Ondo
    description: Ondo Global Markets stock status and tradability
  - name: Tokens
    description: Token catalog and metadata
  - name: Transfer
    description: Token transfer transaction generation
  - name: Wallets
    description: Wallet position tracking
  - name: Customers
    description: Customer account management (Bearer auth)
  - name: Quotes
    description: Quote history and management
  - name: Smart Account
    description: ERC-4337 Gnosis Safe smart account provisioning
paths:
  /v2/strategies/{strategyId}:
    get:
      tags:
        - Strategies
      summary: Get strategy details (v2)
      description: >-
        Returns enriched strategy metadata, spot position metrics, and rate
        history. Supply wallet to include wallet-scoped history and PnL.
      parameters:
        - schema:
            type: string
            description: Strategy ID or slug
          required: true
          name: strategyId
          in: path
        - schema:
            type: integer
            minimum: 7
            maximum: 365
            default: 7
          required: false
          name: days
          in: query
        - schema:
            type: string
          required: false
          name: from
          in: query
        - schema:
            type: string
          required: false
          name: to
          in: query
        - schema:
            allOf:
              - $ref: '#/components/schemas/Address'
              - description: Wallet address for position, history, and PnL enrichment
          required: false
          name: wallet
          in: query
        - schema:
            type: number
            minimum: 0
            exclusiveMinimum: true
            default: 1
          required: false
          name: historyPage
          in: query
        - schema:
            type: number
            minimum: 1
            maximum: 500
            default: 100
          required: false
          name: historyLimit
          in: query
        - schema:
            type: string
            enum:
              - INITIAL
              - PENDING
              - FAILED
              - REFUNDED
              - SUCCESS
          required: false
          name: historyStatus
          in: query
        - schema:
            type: string
          required: false
          name: historyType
          in: query
        - schema:
            type: string
            format: date-time
          required: false
          name: historyDateFrom
          in: query
        - schema:
            type: string
            format: date-time
          required: false
          name: historyDateTo
          in: query
        - schema:
            type: string
            enum:
              - createdAt
              - updatedAt
              - finishedAt
            default: createdAt
          required: false
          name: historySortBy
          in: query
        - schema:
            type: string
            enum:
              - asc
              - desc
            default: desc
          required: false
          name: historySortOrder
          in: query
      responses:
        '200':
          description: Enriched strategy details retrieved
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/StrategyV2DetailResponse'
                  - $ref: '#/components/schemas/WalletStrategyV2DetailResponse'
                description: >-
                  Without wallet, returns APY-only strategy detail. With wallet,
                  also returns wallet-scoped history and PnL.
        '403':
          description: Wallet does not belong to the authenticated customer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Strategy not found or not enabled for the customer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - ApiKeyAuth: []
components:
  schemas:
    Address:
      type: string
      description: Ethereum address (EVM-compatible)
      example: '0xb794F5eA0ba39494cE839613fffBA74279579268'
    StrategyV2DetailResponse:
      type: object
      properties:
        strategy:
          $ref: '#/components/schemas/StrategyMetadata'
        spotPosition:
          $ref: '#/components/schemas/StrategyV2SpotPosition'
        rateHistory:
          $ref: '#/components/schemas/StrategyRateHistoryEmbeddedResponse'
      required:
        - strategy
        - spotPosition
        - rateHistory
      description: Enriched strategy detail with rate history
    WalletStrategyV2DetailResponse:
      type: object
      properties:
        history:
          $ref: '#/components/schemas/StrategyV2HistoryResponse'
        pnl:
          $ref: '#/components/schemas/StrategyPnlEmbeddedResponse'
        rateHistory:
          $ref: '#/components/schemas/StrategyRateHistoryEmbeddedResponse'
        spotPosition:
          allOf:
            - $ref: '#/components/schemas/WalletV2SpotPosition'
            - allOf:
                - $ref: '#/components/schemas/WalletSpotPosition'
                - type: object
                  nullable: true
                  properties:
                    underlyingBalanceUSD:
                      type: number
                    realizedApy7d:
                      type: number
                      nullable: true
                      description: >-
                        Strategy-level realized yield over the trailing 7 days,
                        annualized as a decimal ratio gross of performance fees.
                    realizedApy30d:
                      type: number
                      nullable: true
                      description: >-
                        Strategy-level realized yield over the trailing 30 days,
                        annualized as a decimal ratio gross of performance fees.
                  required:
                    - apy
                    - avgApy
                    - grossAPY
                    - inceptionApy
                    - netAPY
                    - cumulativeProfit
                    - currentPosition
                    - principal
                    - profit
                    - profitInUSD
                    - underlyingBalanceUSD
        strategy:
          $ref: '#/components/schemas/StrategyMetadata'
      required:
        - history
        - pnl
        - rateHistory
        - spotPosition
        - strategy
      description: Enriched strategy detail scoped to a customer-owned wallet
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
            details:
              nullable: true
          required:
            - code
            - message
      required:
        - error
      example:
        error:
          code: QUOTE_NOT_FOUND
          message: Quote not found or expired
    StrategyMetadata:
      type: object
      properties:
        id:
          type: string
          example: Aave-USDC-polygon
        slug:
          type: string
          example: Aave-USDC-polygon
        asset:
          type: string
          description: Strategy asset contract address
        assetDecimals:
          type: number
          example: 6
        assetName:
          type: string
          example: USDC
        availableActions:
          type: array
          items:
            type: string
          example:
            - lend
            - withdraw
        implementationSelector:
          type: string
          example: AavePolygon
        network:
          type: string
          example: polygon
        networkId:
          type: string
          example: '137'
        protocol:
          type: string
          example: Aave
        underlyingAsset:
          type: string
        underlyingDecimals:
          type: number
        isDefault:
          type: boolean
        paused:
          type: boolean
        startDate:
          type: string
        fee:
          type: string
          example: '0'
        performanceFeeBps:
          type: string
          example: '0'
        markupFeeBps:
          type: string
          description: >-
            Customer markup fee in basis points, charged separately from the
            platform performance fee at the contract level. Zero when no markup
            is configured.
          example: '0'
        metadata:
          type: object
          properties: {}
        marketData:
          allOf:
            - $ref: '#/components/schemas/StrategyMarketData'
            - nullable: true
        protocolInfo:
          $ref: '#/components/schemas/StrategyProtocolInfo'
        chain:
          $ref: '#/components/schemas/StrategyChain'
        assetToken:
          $ref: '#/components/schemas/StrategyToken'
        underlyingToken:
          $ref: '#/components/schemas/StrategyToken'
        logourl:
          type: string
        category:
          type: array
          items:
            type: string
      required:
        - id
        - slug
        - asset
        - assetDecimals
        - assetName
        - availableActions
        - implementationSelector
        - network
        - networkId
        - protocol
        - underlyingAsset
        - underlyingDecimals
        - isDefault
        - paused
        - startDate
        - fee
        - performanceFeeBps
        - metadata
      description: >-
        Strategy metadata nested in detail and wallet responses (no APY fields
        at this level)
    StrategyV2SpotPosition:
      allOf:
        - $ref: '#/components/schemas/SpotPositionApy'
        - type: object
          properties:
            performanceFee:
              $ref: '#/components/schemas/BigIntLike'
            realizedApy7d:
              type: number
              nullable: true
              description: >-
                Strategy-level realized yield over the trailing 7 days,
                annualized as a decimal ratio gross of performance fees.
            realizedApy30d:
              type: number
              nullable: true
              description: >-
                Strategy-level realized yield over the trailing 30 days,
                annualized as a decimal ratio gross of performance fees.
          required:
            - realizedApy7d
            - realizedApy30d
      description: Strategy APY metrics enriched with trailing realized APY
    StrategyRateHistoryEmbeddedResponse:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/StrategyRatePoint'
        pagination:
          $ref: '#/components/schemas/Pagination'
      required:
        - items
        - pagination
      description: Paginated strategy rate history embedded in a detail response
    StrategyV2HistoryResponse:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/StrategyV2HistoryItem'
        pagination:
          $ref: '#/components/schemas/Pagination'
      required:
        - items
        - pagination
    StrategyPnlEmbeddedResponse:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/StrategyPnlPoint'
        pagination:
          $ref: '#/components/schemas/Pagination'
      required:
        - items
        - pagination
      description: Paginated wallet PnL embedded in a strategy detail response
    WalletV2SpotPosition:
      allOf:
        - $ref: '#/components/schemas/WalletSpotPosition'
        - type: object
          properties:
            underlyingBalanceUSD:
              type: number
            realizedApy7d:
              type: number
              nullable: true
              description: >-
                Strategy-level realized yield over the trailing 7 days,
                annualized as a decimal ratio gross of performance fees.
            realizedApy30d:
              type: number
              nullable: true
              description: >-
                Strategy-level realized yield over the trailing 30 days,
                annualized as a decimal ratio gross of performance fees.
          required:
            - apy
            - avgApy
            - grossAPY
            - inceptionApy
            - netAPY
            - cumulativeProfit
            - currentPosition
            - principal
            - profit
            - profitInUSD
            - underlyingBalanceUSD
      description: Wallet-scoped strategy position with balances, profit, and realized APY
    WalletSpotPosition:
      type: object
      properties:
        apy:
          type: number
          description: >-
            Mirrors `grossAPY`. Kept for backward compatibility — read `netAPY`
            for expected earnings.
        avgApy:
          type: number
          description: >-
            Annualized average rate since the strategy start date. Gross: no
            Pods fee deducted.
        grossAPY:
          type: number
          description: Raw protocol APY, before any Pods fee.
        inceptionApy:
          type: number
          description: >-
            Cumulative growth since inception, not annualized. Gross: no Pods
            fee deducted.
        netAPY:
          type: number
          description: >-
            Expected APY after Pods fees: `grossAPY * (1 - (performanceFeeBps +
            markupFeeBps) / 10000)`.
        cumulativeProfit:
          $ref: '#/components/schemas/ProfitAmount'
        currentPosition:
          $ref: '#/components/schemas/ProfitAmount'
        currentPositionInShares:
          $ref: '#/components/schemas/AssetAmount'
        principal:
          $ref: '#/components/schemas/ProfitAmount'
        profit:
          $ref: '#/components/schemas/ProfitAmount'
        profitInUSD:
          type: number
          nullable: true
        receiptBalance:
          $ref: '#/components/schemas/AssetAmount'
        underlyingBalance:
          $ref: '#/components/schemas/AssetAmount'
        underlyingBalanceUSD:
          anyOf:
            - type: number
            - type: string
        availableToClaim:
          type: array
          items:
            type: object
            properties: {}
        availableToWithdraw:
          type: array
          items:
            type: object
            properties: {}
        requestedToLend:
          type: array
          items:
            type: object
            properties: {}
        requestedToLendInShares:
          type: array
          items:
            type: object
            properties: {}
        requestedToWithdraw:
          type: array
          items:
            type: object
            properties: {}
        requestedToWithdrawInShares:
          type: array
          items:
            type: object
            properties: {}
        realizedApy7d:
          type: number
          nullable: true
          description: >-
            Strategy-level realized yield over the trailing 7 days, annualized,
            as a decimal ratio gross of performance fees. Measured between daily
            conversion-rate snapshots ending at the latest snapshot, so it
            reflects the growth the strategy actually delivered rather than an
            average of advertised APY. Null when recorded rate history does not
            cover the window.
          example: 0.0412
        realizedApy30d:
          type: number
          nullable: true
          description: >-
            Strategy-level realized yield over the trailing 30 days, annualized,
            as a decimal ratio gross of performance fees. Measured between daily
            conversion-rate snapshots ending at the latest snapshot, so it
            reflects the growth the strategy actually delivered rather than an
            average of advertised APY. Null when recorded rate history does not
            cover the window.
          example: 0.0388
      required:
        - realizedApy7d
        - realizedApy30d
      description: Wallet-scoped position metrics including balances and profit
    StrategyMarketData:
      type: object
      properties:
        lastRefreshedAt:
          type: string
          format: date-time
        samples:
          type: array
          items:
            type: object
            properties:
              at:
                type: string
                format: date-time
              priceUsd:
                type: number
              tvl:
                type: string
              tvlUsd:
                type: number
            required:
              - at
              - tvl
              - tvlUsd
          maxItems: 2
        sharePrice:
          type: number
          nullable: true
        sharePriceChange24h:
          type: number
          nullable: true
        sharePriceRefreshedAt:
          type: string
          nullable: true
          format: date-time
        tvl:
          type: string
        tvlChange24h:
          type: number
          nullable: true
        tvlUsd:
          type: number
        usdRate:
          type: number
    StrategyProtocolInfo:
      type: object
      properties:
        name:
          type: string
          example: Aave
        logo:
          type: string
          format: uri
          example: https://icons.llamao.fi/icons/protocols/aave
      required:
        - name
        - logo
    StrategyChain:
      type: object
      properties:
        name:
          type: string
          example: polygon
        id:
          type: number
          example: 137
        explorer:
          type: object
          properties:
            name:
              type: string
              example: Polygonscan
            url:
              type: string
              format: uri
              example: https://polygonscan.com
          required:
            - name
            - url
        logo:
          type: string
          nullable: true
          format: uri
      required:
        - name
        - id
        - explorer
    StrategyToken:
      type: object
      properties:
        name:
          type: string
          example: USD Coin
        address:
          type: string
          example: '0x3c499c542cef5e3811e1192ce70d8cc03d5c3359'
        symbol:
          type: string
          example: USDC
        decimals:
          type: number
          example: 6
        logo:
          type: string
          nullable: true
          format: uri
      required:
        - name
        - address
        - symbol
        - decimals
    SpotPositionApy:
      type: object
      properties:
        apy:
          type: number
          description: >-
            Mirrors `grossAPY`. Kept for backward compatibility — read `netAPY`
            for expected earnings.
          example: 0.0285
        avgApy:
          type: number
          description: >-
            Annualized average rate since the strategy start date. Gross: no
            Pods fee deducted.
          example: 0.0406
        grossAPY:
          type: number
          description: Raw protocol APY, before any Pods fee.
          example: 0.0285
        inceptionApy:
          type: number
          description: >-
            Cumulative growth since inception, not annualized. Gross: no Pods
            fee deducted.
          example: 0.1468
        netAPY:
          type: number
          description: >-
            Expected APY after Pods fees: `grossAPY * (1 - (performanceFeeBps +
            markupFeeBps) / 10000)`.
          example: 0.0285
      required:
        - apy
        - avgApy
        - grossAPY
        - inceptionApy
        - netAPY
      description: APY-only position metrics (no wallet balances)
    BigIntLike:
      type: string
      description: Large integer represented as string (for amounts with decimals)
      example: '1000000000000000000'
    StrategyRatePoint:
      type: object
      properties:
        date:
          type: string
          example: '2026-07-20T00:00:00.000Z'
        rate:
          type: number
          nullable: true
        apy:
          type: number
          nullable: true
        conversionRateApy:
          type: number
          nullable: true
        timestamp:
          type: string
          format: date-time
      required:
        - date
        - rate
        - apy
        - conversionRateApy
        - timestamp
    Pagination:
      type: object
      properties:
        page:
          type: number
          example: 1
        limit:
          type: number
          example: 10
        total:
          type: number
          example: 24
        totalPages:
          type: number
          example: 3
        hasMore:
          type: boolean
          example: true
      required:
        - page
        - limit
        - total
        - totalPages
        - hasMore
      description: Standard list pagination metadata
    StrategyV2HistoryItem:
      type: object
      properties:
        amounts:
          type: object
          properties:
            assetIn:
              type: object
              nullable: true
              properties:
                amountRaw:
                  type: string
              required:
                - amountRaw
            assetOut:
              type: object
              nullable: true
              properties:
                amountRaw:
                  type: string
              required:
                - amountRaw
        id:
          type: string
        status:
          type: string
        transactions:
          type: array
          items:
            type: object
            properties: {}
        type:
          type: string
      required:
        - amounts
        - id
        - status
        - transactions
        - type
    StrategyPnlPoint:
      type: object
      properties:
        dateString:
          type: string
          description: UTC calendar day for this point (YYYY-MM-DD).
          example: '2026-07-20T00:00:00.000Z'
        sharesBalance:
          allOf:
            - $ref: '#/components/schemas/BigIntLike'
            - description: Receipt/share token balance held at end of day, raw units.
        assetValue:
          allOf:
            - $ref: '#/components/schemas/BigIntLike'
            - description: >-
                Position valued in the underlying asset at the day's rate, raw
                units.
        costBasisAsset:
          allOf:
            - $ref: '#/components/schemas/BigIntLike'
            - description: >-
                Remaining cost basis of the position in underlying-asset raw
                units (reduced proportionally on withdrawals).
        pnlAsset:
          allOf:
            - $ref: '#/components/schemas/BigIntLike'
            - description: >-
                Unrealized PnL in underlying-asset raw units (assetValue -
                costBasisAsset). May be negative.
              example: '1234'
        cumulativeDeposited:
          allOf:
            - $ref: '#/components/schemas/BigIntLike'
            - description: >-
                Cumulative underlying deposited up to and including this day,
                raw units.
        cumulativeWithdrawn:
          allOf:
            - $ref: '#/components/schemas/BigIntLike'
            - description: >-
                Cumulative underlying withdrawn up to and including this day,
                raw units.
        unrealizedPnlPercentage:
          type: number
          nullable: true
          description: >-
            pnlAsset / costBasisAsset as a ratio (0.05 = 5%). Null when cost
            basis is zero.
          example: 0.0123
      required:
        - dateString
        - sharesBalance
        - assetValue
        - costBasisAsset
        - pnlAsset
        - cumulativeDeposited
        - cumulativeWithdrawn
        - unrealizedPnlPercentage
      description: >-
        One daily PnL data point for the wallet, based on its deposit and
        withdrawal cost basis and the strategy's daily share price.
    ProfitAmount:
      allOf:
        - $ref: '#/components/schemas/AssetAmount'
        - type: object
          properties:
            afterFees:
              type: string
      description: Asset amount with an optional after-fees value
    AssetAmount:
      type: object
      properties:
        asset:
          type: string
        decimals:
          type: number
        humanized:
          type: string
        symbol:
          type: string
        value:
          $ref: '#/components/schemas/BigIntLike'
        valueUSD:
          type: string
      required:
        - asset
        - decimals
        - humanized
        - symbol
        - value
      description: Token or position amount serialized at the API boundary
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: API key for authentication. Obtain from your Pods dashboard.

````