Kamino Kamino Earn User API

The Kamino Earn User API from Kamino — 8 operation(s) for kamino earn user.

Operations 8

GET /kvaults/users/{pubkey}/transactions Get user KVault transactions
GET /kvaults/users/{pubkey}/positions Get all user KVault positions
GET /kvaults/users/{userPubkey}/positions/{vaultPubkey} Get user position for a specific KVault
GET /kvaults/users/{pubkey}/metrics/history Get historical user metrics for all KVault positions
GET /kvaults/users/{userPubkey}/vaults/{vaultPubkey}/metrics/history Get historical user metrics for a single KVault
GET /kvaults/users/{userPubkey}/vaults/{vaultPubkey}/pnl Get user KVault PnL
GET /kvaults/users/{userPubkey}/vaults/{vaultPubkey}/pnl/history Get user KVault PnL history
GET /kvaults/users/{pubkey}/rewards Get season user rewards

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/kamino-kamino-earn-user-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 email required.

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

OpenAPI Specification

kamino-kamino-earn-user-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 1.0.0
  title: Kamino Public Airdrop Kamino Earn User API
  description: 'The Kamino API provides a comprehensive way to interact with Kamino without reading directly from the blockchain.


    The API also provides the ability to fetch data that might not be available from just reading the chain.


    The API is rate-limited for unauthenticated users. If you feel you need to make more requests or run into rate-limit issues, please reach out.

    '
servers:
- url: https://api.kamino.finance
tags:
- name: Kamino Earn User
paths:
  /kvaults/users/{pubkey}/transactions:
    get:
      summary: Get user KVault transactions
      description: Get all Kamino Earn Vault transactions for a given user
      tags:
      - Kamino Earn User
      parameters:
      - schema:
          allOf:
          - $ref: '#/components/schemas/AddressBase58'
          - description: Valid base58-encoded address of the user wallet
            example: AxqtG9SHDkZTLSWg81Sp7VqAzQpRqXtR9ziJ3VQAS8As
        required: true
        description: Valid base58-encoded address of the user wallet
        name: pubkey
        in: path
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/KVaultInstruction'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: High-level error message describing the failure
                    example: Invalid query params
                  details:
                    type: array
                    items:
                      type: object
                      additionalProperties: {}
                    description: Detailed validation issues (present only for validation errors)
                required:
                - error
                description: Bad request response (400)
                example:
                  error: Invalid query request
                  details:
                  - code: invalid_union
                    errors:
                    - - code: custom
                        path: []
                        message: Invalid date string
                    - - expected: number
                        code: invalid_type
                        path: []
                        message: 'Invalid input: expected number, received string'
                    path:
                    - start
                    message: Invalid input
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /kvaults/users/{pubkey}/positions:
    get:
      summary: Get all user KVault positions
      description: Get a list of user positions for each Kamino Earn Vault the user has currently deposited into. Returns staked and unstaked shares.
      tags:
      - Kamino Earn User
      parameters:
      - schema:
          allOf:
          - $ref: '#/components/schemas/AddressBase58'
          - description: Valid base58-encoded address of the user wallet
            example: AxqtG9SHDkZTLSWg81Sp7VqAzQpRqXtR9ziJ3VQAS8As
        required: true
        description: Valid base58-encoded address of the user wallet
        name: pubkey
        in: path
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/VaultStateArray'
                - items:
                    type: object
                    properties:
                      vaultAddress:
                        allOf:
                        - $ref: '#/components/schemas/AddressBase58'
                        - description: Address of the Kamino Earn Vault
                      stakedShares:
                        allOf:
                        - $ref: '#/components/schemas/Decimal'
                        - description: The number of Kamino Earn Vault shares staked in a farm
                      unstakedShares:
                        allOf:
                        - $ref: '#/components/schemas/Decimal'
                        - description: The number of Kamino Earn Vault shares held in the user wallet
                      totalShares:
                        allOf:
                        - $ref: '#/components/schemas/Decimal'
                        - description: The total number of Kamino Earn Vault shares both held and staked by the user
                    required:
                    - vaultAddress
                    - stakedShares
                    - unstakedShares
                    - totalShares
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: High-level error message describing the failure
                    example: Invalid query params
                  details:
                    type: array
                    items:
                      type: object
                      additionalProperties: {}
                    description: Detailed validation issues (present only for validation errors)
                required:
                - error
                description: Bad request response (400)
                example:
                  error: Invalid query request
                  details:
                  - code: invalid_union
                    errors:
                    - - code: custom
                        path: []
                        message: Invalid date string
                    - - expected: number
                        code: invalid_type
                        path: []
                        message: 'Invalid input: expected number, received string'
                    path:
                    - start
                    message: Invalid input
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /kvaults/users/{userPubkey}/positions/{vaultPubkey}:
    get:
      summary: Get user position for a specific KVault
      description: Get a single user position for a Kamino Earn Vault the user currently has currently deposited into. Returns staked and unstaked shares.
      tags:
      - Kamino Earn User
      parameters:
      - schema:
          allOf:
          - $ref: '#/components/schemas/AddressBase58'
          - description: Valid base58-encoded address of the vault
            example: HDsayqAsDWy3QvANGqh2yNraqcD8Fnjgh73Mhb3WRS5E
        required: true
        description: Valid base58-encoded address of the vault
        name: vaultPubkey
        in: path
      - schema:
          allOf:
          - $ref: '#/components/schemas/AddressBase58'
          - description: Valid base58-encoded address of the user wallet
            example: AxqtG9SHDkZTLSWg81Sp7VqAzQpRqXtR9ziJ3VQAS8As
        required: true
        description: Valid base58-encoded address of the user wallet
        name: userPubkey
        in: path
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  vaultAddress:
                    allOf:
                    - $ref: '#/components/schemas/AddressBase58'
                    - description: Address of the Kamino Earn Vault
                  stakedShares:
                    allOf:
                    - $ref: '#/components/schemas/Decimal'
                    - description: The number of Kamino Earn Vault shares staked in a farm
                  unstakedShares:
                    allOf:
                    - $ref: '#/components/schemas/Decimal'
                    - description: The number of Kamino Earn Vault shares held in the user wallet
                  totalShares:
                    allOf:
                    - $ref: '#/components/schemas/Decimal'
                    - description: The total number of Kamino Earn Vault shares both held and staked by the user
                required:
                - vaultAddress
                - stakedShares
                - unstakedShares
                - totalShares
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: High-level error message describing the failure
                    example: Invalid query params
                  details:
                    type: array
                    items:
                      type: object
                      additionalProperties: {}
                    description: Detailed validation issues (present only for validation errors)
                required:
                - error
                description: Bad request response (400)
                example:
                  error: Invalid query request
                  details:
                  - code: invalid_union
                    errors:
                    - - code: custom
                        path: []
                        message: Invalid date string
                    - - expected: number
                        code: invalid_type
                        path: []
                        message: 'Invalid input: expected number, received string'
                    path:
                    - start
                    message: Invalid input
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  metadata:
                    type: string
                    description: Error message describing why it was not found
                    example: Account could not be found
                required:
                - metadata
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /kvaults/users/{pubkey}/metrics/history:
    get:
      summary: Get historical user metrics for all KVault positions
      description: Get historical timeseries of total usd/sol/interest/apy for all user Kamino Earn Vault positions
      tags:
      - Kamino Earn User
      parameters:
      - schema:
          allOf:
          - $ref: '#/components/schemas/AddressBase58'
          - description: Valid base58-encoded address of the user wallet
            example: AxqtG9SHDkZTLSWg81Sp7VqAzQpRqXtR9ziJ3VQAS8As
        required: true
        description: Valid base58-encoded address of the user wallet
        name: pubkey
        in: path
      - schema:
          anyOf:
          - type: string
          - type: number
          default: '1970-01-01T00:00:00.000Z'
          description: Start date of the range (defaults to Unix epoch). Accepts ISO string or epoch in ms.
          examples:
          - '1970-01-01T00:00:00.000Z'
          - 0
        required: false
        description: Start date of the range (defaults to Unix epoch). Accepts ISO string or epoch in ms.
        name: start
        in: query
      - schema:
          anyOf:
          - type: string
          - type: number
          description: End date of the range (defaults to current time). Accepts ISO string or epoch in ms.
          examples:
          - '2025-01-01T00:00:00.000Z'
          - 1735689600000
        required: false
        description: End date of the range (defaults to current time). Accepts ISO string or epoch in ms.
        name: end
        in: query
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UserKVaultTotal'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: High-level error message describing the failure
                    example: Invalid query params
                  details:
                    type: array
                    items:
                      type: object
                      additionalProperties: {}
                    description: Detailed validation issues (present only for validation errors)
                required:
                - error
                description: Bad request response (400)
                example:
                  error: Invalid query request
                  details:
                  - code: invalid_union
                    errors:
                    - - code: custom
                        path: []
                        message: Invalid date string
                    - - expected: number
                        code: invalid_type
                        path: []
                        message: 'Invalid input: expected number, received string'
                    path:
                    - start
                    message: Invalid input
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /kvaults/users/{userPubkey}/vaults/{vaultPubkey}/metrics/history:
    get:
      summary: Get historical user metrics for a single KVault
      description: Get historical timeseries of total usd/sol/interest/apy for a single user Kamino Earn Vault position
      tags:
      - Kamino Earn User
      parameters:
      - schema:
          allOf:
          - $ref: '#/components/schemas/AddressBase58'
          - description: Valid base58-encoded address of the vault
            example: HDsayqAsDWy3QvANGqh2yNraqcD8Fnjgh73Mhb3WRS5E
        required: true
        description: Valid base58-encoded address of the vault
        name: vaultPubkey
        in: path
      - schema:
          allOf:
          - $ref: '#/components/schemas/AddressBase58'
          - description: Valid base58-encoded address of the user wallet
            example: AxqtG9SHDkZTLSWg81Sp7VqAzQpRqXtR9ziJ3VQAS8As
        required: true
        description: Valid base58-encoded address of the user wallet
        name: userPubkey
        in: path
      - schema:
          anyOf:
          - type: string
          - type: number
          default: '1970-01-01T00:00:00.000Z'
          description: Start date of the range (defaults to Unix epoch). Accepts ISO string or epoch in ms.
          examples:
          - '1970-01-01T00:00:00.000Z'
          - 0
        required: false
        description: Start date of the range (defaults to Unix epoch). Accepts ISO string or epoch in ms.
        name: start
        in: query
      - schema:
          anyOf:
          - type: string
          - type: number
          description: End date of the range (defaults to current time). Accepts ISO string or epoch in ms.
          examples:
          - '2025-01-01T00:00:00.000Z'
          - 1735689600000
        required: false
        description: End date of the range (defaults to current time). Accepts ISO string or epoch in ms.
        name: end
        in: query
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UserKvaultMetrics'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: High-level error message describing the failure
                    example: Invalid query params
                  details:
                    type: array
                    items:
                      type: object
                      additionalProperties: {}
                    description: Detailed validation issues (present only for validation errors)
                required:
                - error
                description: Bad request response (400)
                example:
                  error: Invalid query request
                  details:
                  - code: invalid_union
                    errors:
                    - - code: custom
                        path: []
                        message: Invalid date string
                    - - expected: number
                        code: invalid_type
                        path: []
                        message: 'Invalid input: expected number, received string'
                    path:
                    - start
                    message: Invalid input
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /kvaults/users/{userPubkey}/vaults/{vaultPubkey}/pnl:
    get:
      summary: Get user KVault PnL
      description: Get current PnL and cost basis of user vault position
      tags:
      - Kamino Earn User
      parameters:
      - schema:
          allOf:
          - $ref: '#/components/schemas/AddressBase58'
          - description: Valid base58-encoded address of the vault
            example: HDsayqAsDWy3QvANGqh2yNraqcD8Fnjgh73Mhb3WRS5E
        required: true
        description: Valid base58-encoded address of the vault
        name: vaultPubkey
        in: path
      - schema:
          allOf:
          - $ref: '#/components/schemas/AddressBase58'
          - description: Valid base58-encoded address of the user wallet
            example: AxqtG9SHDkZTLSWg81Sp7VqAzQpRqXtR9ziJ3VQAS8As
        required: true
        description: Valid base58-encoded address of the user wallet
        name: userPubkey
        in: path
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KvaultPnl'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: High-level error message describing the failure
                    example: Invalid query params
                  details:
                    type: array
                    items:
                      type: object
                      additionalProperties: {}
                    description: Detailed validation issues (present only for validation errors)
                required:
                - error
                description: Bad request response (400)
                example:
                  error: Invalid query request
                  details:
                  - code: invalid_union
                    errors:
                    - - code: custom
                        path: []
                        message: Invalid date string
                    - - expected: number
                        code: invalid_type
                        path: []
                        message: 'Invalid input: expected number, received string'
                    path:
                    - start
                    message: Invalid input
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /kvaults/users/{userPubkey}/vaults/{vaultPubkey}/pnl/history:
    get:
      summary: Get user KVault PnL history
      description: Get PnL and cost basis history of user vault position
      tags:
      - Kamino Earn User
      parameters:
      - schema:
          allOf:
          - $ref: '#/components/schemas/AddressBase58'
          - description: Valid base58-encoded address of the vault
            example: HDsayqAsDWy3QvANGqh2yNraqcD8Fnjgh73Mhb3WRS5E
        required: true
        description: Valid base58-encoded address of the vault
        name: vaultPubkey
        in: path
      - schema:
          allOf:
          - $ref: '#/components/schemas/AddressBase58'
          - description: Valid base58-encoded address of the user wallet
            example: AxqtG9SHDkZTLSWg81Sp7VqAzQpRqXtR9ziJ3VQAS8As
        required: true
        description: Valid base58-encoded address of the user wallet
        name: userPubkey
        in: path
      - schema:
          anyOf:
          - type: string
          - type: number
          description: Date input (ISO 8601 string or epoch in ms)
          examples:
          - '2024-01-01T00:00:00.000Z'
          - 1704067200000
        required: false
        description: Date input (ISO 8601 string or epoch in ms)
        name: start
        in: query
      - schema:
          anyOf:
          - type: string
          - type: number
          description: Date input (ISO 8601 string or epoch in ms)
          examples:
          - '2024-01-01T00:00:00.000Z'
          - 1704067200000
        required: false
        description: Date input (ISO 8601 string or epoch in ms)
        name: end
        in: query
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  history:
                    type: array
                    items:
                      $ref: '#/components/schemas/KvaultPnlTimeseriesValue'
                  totalPnl:
                    $ref: '#/components/schemas/KvaultMultiValue'
                  totalCostBasis:
                    $ref: '#/components/schemas/KvaultMultiValue'
                required:
                - history
                - totalPnl
                - totalCostBasis
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: High-level error message describing the failure
                    example: Invalid query params
                  details:
                    type: array
                    items:
                      type: object
                      additionalProperties: {}
                    description: Detailed validation issues (present only for validation errors)
                required:
                - error
                description: Bad request response (400)
                example:
                  error: Invalid query request
                  details:
                  - code: invalid_union
                    errors:
                    - - code: custom
                        path: []
                        message: Invalid date string
                    - - expected: number
                        code: invalid_type
                        path: []
                        message: 'Invalid input: expected number, received string'
                    path:
                    - start
                    message: Invalid input
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /kvaults/users/{pubkey}/rewards:
    get:
      summary: Get season user rewards
      description: Get user season points rewards for each Kamino Earn Vault which the user has invested in
      tags:
      - Kamino Earn User
      parameters:
      - schema:
          $ref: '#/components/schemas/AddressBase58'
        required: true
        description: Valid base58-encoded address
        name: pubkey
        in: path
      - schema:
          type: string
          description: Points source identifier
          example: Season1
          examples:
          - Season1
          - Season2
          - Season3
          - Season4
        required: false
        description: Points source identifier
        name: source
        in: query
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KvaultUserRewardMetrics'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: High-level error message describing the failure
                    example: Invalid query params
                  details:
                    type: array
                    items:
                      type: object
                      additionalProperties: {}
                    description: Detailed validation issues (present only for validation errors)
                required:
                - error
                description: Bad request response (400)
                example:
                  error: Invalid query request
                  details:
                  - code: invalid_union
                    errors:
                    - - code: custom
                        path: []
                        message: Invalid date string
                    - - expected: number
                        code: invalid_type
                        path: []
                        message: 'Invalid input: expected number, received string'
                    path:
                    - start
                    message: Invalid input
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    UserKvaultMetrics:
      type: object
      properties:
        createdOn:
          allOf:
          - $ref: '#/components/schemas/SnapshotDateTime'
          - description: Timestamp when the snapshot was created (ISO 8601 format)
            example: '2025-03-01T12:00:00.000Z'
        sharesAmount:
          allOf:
          - $ref: '#/components/schemas/Decimal'
          - description: User's total shares amount
        usdAmount:
          allOf:
          - $ref: '#/components/schemas/Decimal'
          - description: User's USD amount in kvault
        solAmount:
          allOf:
          - $ref: '#/components/schemas/Decimal'
          - description: User's SOL amount in kvault
        apy:
          allOf:
          - $ref: '#/components/schemas/Apy'
          - description: APY in decimal format (not percentage) represented as string. Multiply by 100 to get percentage (%) - 0.1 in API response is 10%.
            example: '0.2'
        cumulativeInterestEarned:
          allOf:
          - $ref: '#/components/schemas/Decimal'
          - description: Total interest earned in kvault token amount for kvault
        cumulativeInterestEarnedUsd:
          allOf:
          - $ref: '#/components/schemas/Decimal'
          - description: Total interest earned in USD for kvault
        cumulativeInterestEarnedSol:
          allOf:
          - $ref: '#/components/schemas/Decimal'
          - description: Total interest earned in SOL for kvault
        interestEarnedPerSecond:
          allOf:
          - $ref: '#/components/schemas/Decimal'
          - description: Interest earned per second at that specific moment in token
        interestEarnedPerSecondUsd:
          allOf:
          - $ref: '#/components/schemas/Decimal'
          - description: Interest earned per second at that specific moment in USD
        interestEarnedPerSecondSol:
          allOf:
          - $ref: '#/components/schemas/Decimal'
          - description: Interest earned per second at that specific moment in SOL
      required:
      - createdOn
      - sharesAmount
      - usdAmount
      - solAmount
      - apy
      - cumulativeInterestEarned
      - cumulativeInterestEarnedUsd
      - cumulativeInterestEarnedSol
      - interestEarnedPerSecond
      - interestEarnedPerSecondUsd
      - interestEarnedPerSecondSol
    AddressBase58:
      type: string
      description: Valid base58-encoded address
      example: VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd
    KvaultMultiValue:
      type: object
      properties:
        usd:
          allOf:
          - $ref: '#/components/schemas/Decimal'
          - description: Value in USD
        sol:
          allOf:
          - $ref: '#/components/schemas/Decimal'
          - description: Value in SOL
        token:
          allOf:
          - $ref: '#/components/schemas/Decimal'
          - description: Value in token denomination
      required:
      - usd
      - sol
      - token
    VaultStateArray:
      type: array
      items:
        type: object
        properties:
          address:
            allOf:
            - $ref: '#/components/schemas/AddressBase58'
            - description: Public key of the vault
          state:
            $ref: '#/components/schemas/The_vault_state_object'
          programId:
            allOf:
            - $ref: '#/components/schemas/AddressBase58'
            - description: Public key of the kvault program which owns the vault
        required:
        - address
        - state
        - programId
    Decimal:
      type: string
      description: Decimal value represented as string
      example: '1234.56789'
    Apy:
      type: string
      description: Borrow interest APY
      example: '0.027610992938039702'
      examples:
      - '0.123'
      - '0'
      - '1'
      - '1.23'
      - '-0.5'
      - '999999.999999'
    Error:
      type: object
      properties:
        error:
          type: string
          description: Error message for internal server failure
          example: An internal error occurred
      required:
      - error
      description: Internal server error response (500)
      example:
        error: An internal error occurred
    KvaultPnlTimeseriesValue:
      type: object
      properties:
        timestamp:
          type: number
          description: Unix timestamp in milliseconds
        type:
          anyOf:
          - type: string
            enum:
            - buy
          - type: string
            enum:
            - sell
          - type: string
            enum:
            - mark-to-market
        position:
          allOf:
          - $ref: '#/components/schemas/Decimal'
          - description: Current position value
        quantity:
          allOf:
          - $ref: '#/components/schemas/Decimal'
          - description: Quantity involved in transaction
        tokenPrice:
          allOf:
          - $ref: '#/components/schemas/KvaultMultiValue'
          - description: Token price snapshot
        sharePrice:
          allOf:
          - $ref: '#/components/schemas/KvaultMultiValue'
          - description: Share price snapshot
        costBasis:
          allOf:
          - $ref: '#/components/schemas/KvaultMultiValue'
          - description: Cost basis for position
        realizedPnl:
          allOf:
          - $ref: '#/components/schemas/KvaultMultiValue'
          - description: Realized profit/loss
        pnl:
          allOf:
          - $ref: '#/components/schemas/KvaultMultiValue'
          - description: Total profit/loss
        positionValue:
          allOf:
          - $ref: '#/components/schemas/KvaultMultiValue'
          - description: Value of the position
        investment:
          allOf:
          - $ref: '#/components/schemas/KvaultMultiValue'
          - description: Total invested value
      required:
      - timestamp
      - type
      - position
      - quantity
      - tokenPrice
      - sharePrice
      - costBasis
      - realizedPnl
      - pnl
      - positionValue
      - investment
    The_vault_state_object:
      type: object
      properties:
        vaultAdminAuthority:
          allOf:
          - $ref: '#/compon

# --- truncated at 32 KB (45 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/kamino/refs/heads/main/openapi/kamino-kamino-earn-user-api-openapi.yml