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

# Get lifetime wallet Multiply earnings

> Cumulative native earnings over Multiply and MultiplyFixedRate lifecycles. Controlled by an off, internal, or on gate. The generation parameter is internal-only.



## OpenAPI

````yaml /kamino-api.json get /owners/{pubkey}/multiply/pnl
openapi: 3.1.0
info:
  version: 1.0.0
  title: Kamino Public 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
security: []
paths:
  /owners/{pubkey}/multiply/pnl:
    get:
      tags:
        - Multiply
      summary: Get lifetime wallet Multiply earnings
      description: >-
        Cumulative native earnings over Multiply and MultiplyFixedRate
        lifecycles. Controlled by an off, internal, or on gate. The generation
        parameter is internal-only.
      operationId: getWalletMultiplyPnl
      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:
            type: string
          required: false
          name: positionsCursor
          in: query
        - schema:
            type: integer
            exclusiveMinimum: 0
            description: Internal validation only
          required: false
          description: Internal validation only
          name: generation
          in: query
      responses:
        '200':
          description: OK
          content:
            application/json:
              example:
                wallet: Api479WaLLetG1111111111111111111111111111111
                accountingVersion: 2
                generation: 4797
                status: complete
                reasons: []
                coverage:
                  start: '2026-04-30'
                  computedThrough: '2026-09-28T23:59:00Z'
                  marksFinalThrough: '2026-09-28'
                  projectionRefreshedOn: '2026-09-29T19:00:00Z'
                  oldestIncludedProjection: null
                  lifecycles:
                    total: 1
                    complete: 1
                    partial: 0
                    unavailable: 0
                    open: 0
                    closed: 1
                    typeUnknown: 0
                    missingCreate: 0
                earnings:
                  lstSolPnlSol: '1.5'
                  otherPairsPnlUsd: '0'
                  earningsUsd: '300'
                  valuation:
                    solUsdPrice: '200'
                    priceObservedAt: '2026-09-29T19:00:00Z'
                    solUsdRepricing: true
                partialSubtotal: null
                earningsByType:
                  Multiply:
                    status: complete
                    reasons: []
                    lstSolPnlSol: '0'
                    otherPairsPnlUsd: '0'
                    earningsUsd: '0'
                    partialSubtotal: null
                    lifecycles: 0
                  MultiplyFixedRate:
                    status: complete
                    reasons: []
                    lstSolPnlSol: '1.5'
                    otherPairsPnlUsd: '0'
                    earningsUsd: '300'
                    partialSubtotal: null
                    lifecycles: 1
                positions:
                  - obligation: Api479EarnobG1111111111111111111111111111111
                    lifecycle: 1
                    market: Api479Market11111111111111111111111111111111
                    type: MultiplyFixedRate
                    denomination: lst_sol
                    status: complete
                    reasons: []
                    open: false
                    createdOn: '2026-04-30T12:00:00Z'
                    closedOn: '2026-05-01T12:00:00Z'
                    pnlSol: '1.5'
                    pnlUsd: null
                    asOf: '2026-05-01T12:00:00Z'
                    aligned: true
                positionsCursor: null
              schema:
                type: object
                properties:
                  wallet:
                    $ref: '#/components/schemas/AddressBase58'
                  accountingVersion:
                    type: number
                  generation:
                    type: number
                  status:
                    type: string
                    enum:
                      - complete
                      - partial
                      - unavailable
                  reasons:
                    type: array
                    items:
                      type: string
                  coverage:
                    type: object
                    properties:
                      start:
                        type:
                          - string
                          - 'null'
                      computedThrough:
                        type: string
                      marksFinalThrough:
                        type:
                          - string
                          - 'null'
                      projectionRefreshedOn:
                        type:
                          - string
                          - 'null'
                      oldestIncludedProjection:
                        type:
                          - string
                          - 'null'
                      lifecycles:
                        type: object
                        properties:
                          total:
                            type: number
                          complete:
                            type: number
                          partial:
                            type: number
                          unavailable:
                            type: number
                          open:
                            type: number
                          closed:
                            type: number
                          typeUnknown:
                            type: number
                          missingCreate:
                            type: number
                        required:
                          - total
                          - complete
                          - partial
                          - unavailable
                          - open
                          - closed
                          - typeUnknown
                          - missingCreate
                    required:
                      - start
                      - computedThrough
                      - marksFinalThrough
                      - projectionRefreshedOn
                      - oldestIncludedProjection
                      - lifecycles
                  earnings:
                    type: object
                    properties:
                      lstSolPnlSol:
                        type:
                          - string
                          - 'null'
                        description: Native SOL earnings of LST/SOL lifecycles
                      otherPairsPnlUsd:
                        type:
                          - string
                          - 'null'
                        description: Native USD earnings of other pairs
                      earningsUsd:
                        type:
                          - string
                          - 'null'
                        description: >-
                          SOL earnings converted at the stated SOL/USD price
                          plus USD earnings
                      valuation:
                        type: object
                        properties:
                          solUsdPrice:
                            type:
                              - string
                              - 'null'
                          priceObservedAt:
                            type:
                              - string
                              - 'null'
                          solUsdRepricing:
                            type: boolean
                            enum:
                              - true
                        required:
                          - solUsdPrice
                          - priceObservedAt
                          - solUsdRepricing
                    required:
                      - lstSolPnlSol
                      - otherPairsPnlUsd
                      - earningsUsd
                      - valuation
                  partialSubtotal:
                    type:
                      - object
                      - 'null'
                    properties:
                      lstSolPnlSol:
                        type:
                          - string
                          - 'null'
                        description: Native SOL earnings of LST/SOL lifecycles
                      otherPairsPnlUsd:
                        type:
                          - string
                          - 'null'
                        description: Native USD earnings of other pairs
                      earningsUsd:
                        type:
                          - string
                          - 'null'
                        description: >-
                          SOL earnings converted at the stated SOL/USD price
                          plus USD earnings
                    required:
                      - lstSolPnlSol
                      - otherPairsPnlUsd
                      - earningsUsd
                    description: >-
                      Labelled sum of computable lifecycles when complete totals
                      are unavailable
                  earningsByType:
                    type: object
                    properties:
                      Multiply:
                        type: object
                        properties:
                          lstSolPnlSol:
                            type:
                              - string
                              - 'null'
                            description: Native SOL earnings of LST/SOL lifecycles
                          otherPairsPnlUsd:
                            type:
                              - string
                              - 'null'
                            description: Native USD earnings of other pairs
                          earningsUsd:
                            type:
                              - string
                              - 'null'
                            description: >-
                              SOL earnings converted at the stated SOL/USD price
                              plus USD earnings
                          status:
                            type: string
                            enum:
                              - complete
                              - partial
                              - unavailable
                          reasons:
                            type: array
                            items:
                              type: string
                          partialSubtotal:
                            type:
                              - object
                              - 'null'
                            properties:
                              lstSolPnlSol:
                                type:
                                  - string
                                  - 'null'
                                description: Native SOL earnings of LST/SOL lifecycles
                              otherPairsPnlUsd:
                                type:
                                  - string
                                  - 'null'
                                description: Native USD earnings of other pairs
                              earningsUsd:
                                type:
                                  - string
                                  - 'null'
                                description: >-
                                  SOL earnings converted at the stated SOL/USD
                                  price plus USD earnings
                            required:
                              - lstSolPnlSol
                              - otherPairsPnlUsd
                              - earningsUsd
                            description: >-
                              Labelled sum of computable lifecycles when
                              complete totals are unavailable
                          lifecycles:
                            type: integer
                        required:
                          - lstSolPnlSol
                          - otherPairsPnlUsd
                          - earningsUsd
                          - status
                          - reasons
                          - partialSubtotal
                          - lifecycles
                      MultiplyFixedRate:
                        type: object
                        properties:
                          lstSolPnlSol:
                            type:
                              - string
                              - 'null'
                            description: Native SOL earnings of LST/SOL lifecycles
                          otherPairsPnlUsd:
                            type:
                              - string
                              - 'null'
                            description: Native USD earnings of other pairs
                          earningsUsd:
                            type:
                              - string
                              - 'null'
                            description: >-
                              SOL earnings converted at the stated SOL/USD price
                              plus USD earnings
                          status:
                            type: string
                            enum:
                              - complete
                              - partial
                              - unavailable
                          reasons:
                            type: array
                            items:
                              type: string
                          partialSubtotal:
                            type:
                              - object
                              - 'null'
                            properties:
                              lstSolPnlSol:
                                type:
                                  - string
                                  - 'null'
                                description: Native SOL earnings of LST/SOL lifecycles
                              otherPairsPnlUsd:
                                type:
                                  - string
                                  - 'null'
                                description: Native USD earnings of other pairs
                              earningsUsd:
                                type:
                                  - string
                                  - 'null'
                                description: >-
                                  SOL earnings converted at the stated SOL/USD
                                  price plus USD earnings
                            required:
                              - lstSolPnlSol
                              - otherPairsPnlUsd
                              - earningsUsd
                            description: >-
                              Labelled sum of computable lifecycles when
                              complete totals are unavailable
                          lifecycles:
                            type: integer
                        required:
                          - lstSolPnlSol
                          - otherPairsPnlUsd
                          - earningsUsd
                          - status
                          - reasons
                          - partialSubtotal
                          - lifecycles
                    required:
                      - Multiply
                      - MultiplyFixedRate
                    description: Both obligation types are always present
                  positions:
                    type: array
                    items:
                      type: object
                      properties:
                        obligation:
                          $ref: '#/components/schemas/AddressBase58'
                        lifecycle:
                          type: number
                        market:
                          $ref: '#/components/schemas/AddressBase58'
                        type:
                          type: string
                          enum:
                            - Multiply
                            - MultiplyFixedRate
                        denomination:
                          type: string
                          enum:
                            - lst_sol
                            - usd
                        status:
                          type: string
                          enum:
                            - complete
                            - partial
                            - unavailable
                        reasons:
                          type: array
                          items:
                            type: string
                        open:
                          type: boolean
                        createdOn:
                          type: string
                        closedOn:
                          type:
                            - string
                            - 'null'
                        pnlSol:
                          type:
                            - string
                            - 'null'
                        pnlUsd:
                          type:
                            - string
                            - 'null'
                        asOf:
                          type:
                            - string
                            - 'null'
                        aligned:
                          type: boolean
                      required:
                        - obligation
                        - lifecycle
                        - market
                        - type
                        - denomination
                        - status
                        - reasons
                        - open
                        - createdOn
                        - closedOn
                        - pnlSol
                        - pnlUsd
                        - asOf
                        - aligned
                  positionsCursor:
                    type:
                      - string
                      - 'null'
                required:
                  - wallet
                  - accountingVersion
                  - generation
                  - status
                  - reasons
                  - coverage
                  - earnings
                  - partialSubtotal
                  - earningsByType
                  - positions
                  - positionsCursor
                examples:
                  - wallet: Api479WaLLetG1111111111111111111111111111111
                    accountingVersion: 2
                    generation: 4797
                    status: complete
                    reasons: []
                    coverage:
                      start: '2026-04-30'
                      computedThrough: '2026-09-28T23:59:00Z'
                      marksFinalThrough: '2026-09-28'
                      projectionRefreshedOn: '2026-09-29T19:00:00Z'
                      oldestIncludedProjection: null
                      lifecycles:
                        total: 1
                        complete: 1
                        partial: 0
                        unavailable: 0
                        open: 0
                        closed: 1
                        typeUnknown: 0
                        missingCreate: 0
                    earnings:
                      lstSolPnlSol: '1.5'
                      otherPairsPnlUsd: '0'
                      earningsUsd: '300'
                      valuation:
                        solUsdPrice: '200'
                        priceObservedAt: '2026-09-29T19:00:00Z'
                        solUsdRepricing: true
                    partialSubtotal: null
                    earningsByType:
                      Multiply:
                        status: complete
                        reasons: []
                        lstSolPnlSol: '0'
                        otherPairsPnlUsd: '0'
                        earningsUsd: '0'
                        partialSubtotal: null
                        lifecycles: 0
                      MultiplyFixedRate:
                        status: complete
                        reasons: []
                        lstSolPnlSol: '1.5'
                        otherPairsPnlUsd: '0'
                        earningsUsd: '300'
                        partialSubtotal: null
                        lifecycles: 1
                    positions:
                      - obligation: Api479EarnobG1111111111111111111111111111111
                        lifecycle: 1
                        market: Api479Market11111111111111111111111111111111
                        type: MultiplyFixedRate
                        denomination: lst_sol
                        status: complete
                        reasons: []
                        open: false
                        createdOn: '2026-04-30T12:00:00Z'
                        closedOn: '2026-05-01T12:00:00Z'
                        pnlSol: '1.5'
                        pnlUsd: null
                        asOf: '2026-05-01T12:00:00Z'
                        aligned: true
                    positionsCursor: null
                  - wallet: Api479WaLLetG1111111111111111111111111111111
                    accountingVersion: 2
                    generation: 4797
                    status: complete
                    reasons: []
                    coverage:
                      start: null
                      computedThrough: '2026-09-28T23:59:00Z'
                      marksFinalThrough: '2026-09-28'
                      projectionRefreshedOn: '2026-09-29T19:00:00Z'
                      oldestIncludedProjection: null
                      lifecycles:
                        total: 0
                        complete: 0
                        partial: 0
                        unavailable: 0
                        open: 0
                        closed: 0
                        typeUnknown: 0
                        missingCreate: 0
                    earnings:
                      lstSolPnlSol: '0'
                      otherPairsPnlUsd: '0'
                      earningsUsd: '0'
                      valuation:
                        solUsdPrice: '200'
                        priceObservedAt: '2026-09-29T19:00:00Z'
                        solUsdRepricing: true
                    partialSubtotal: null
                    earningsByType:
                      Multiply:
                        status: complete
                        reasons: []
                        lstSolPnlSol: '0'
                        otherPairsPnlUsd: '0'
                        earningsUsd: '0'
                        partialSubtotal: null
                        lifecycles: 0
                      MultiplyFixedRate:
                        status: complete
                        reasons: []
                        lstSolPnlSol: '0'
                        otherPairsPnlUsd: '0'
                        earningsUsd: '0'
                        partialSubtotal: null
                        lifecycles: 0
                    positions: []
                    positionsCursor: null
                  - wallet: Api479WaLLetG1111111111111111111111111111111
                    accountingVersion: 2
                    generation: 4797
                    status: partial
                    reasons:
                      - fee_unknown
                    coverage:
                      start: '2026-04-30'
                      computedThrough: '2026-09-28T23:59:00Z'
                      marksFinalThrough: '2026-09-28'
                      projectionRefreshedOn: '2026-09-29T19:00:00Z'
                      oldestIncludedProjection: null
                      lifecycles:
                        total: 2
                        complete: 1
                        partial: 1
                        unavailable: 0
                        open: 0
                        closed: 1
                        typeUnknown: 0
                        missingCreate: 0
                    earnings:
                      lstSolPnlSol: null
                      otherPairsPnlUsd: null
                      earningsUsd: null
                      valuation:
                        solUsdPrice: '200'
                        priceObservedAt: '2026-09-29T19:00:00Z'
                        solUsdRepricing: true
                    partialSubtotal:
                      lstSolPnlSol: '1.5'
                      otherPairsPnlUsd: '0'
                      earningsUsd: '300'
                    earningsByType:
                      Multiply:
                        status: partial
                        reasons:
                          - fee_unknown
                        lstSolPnlSol: null
                        otherPairsPnlUsd: null
                        earningsUsd: null
                        partialSubtotal:
                          lstSolPnlSol: '0'
                          otherPairsPnlUsd: '0'
                          earningsUsd: '0'
                        lifecycles: 1
                      MultiplyFixedRate:
                        status: complete
                        reasons: []
                        lstSolPnlSol: '1.5'
                        otherPairsPnlUsd: '0'
                        earningsUsd: '300'
                        partialSubtotal: null
                        lifecycles: 1
                    positions:
                      - obligation: Api479EarnobG1111111111111111111111111111111
                        lifecycle: 1
                        market: Api479Market11111111111111111111111111111111
                        type: MultiplyFixedRate
                        denomination: lst_sol
                        status: complete
                        reasons: []
                        open: false
                        createdOn: '2026-04-30T12:00:00Z'
                        closedOn: '2026-05-01T12:00:00Z'
                        pnlSol: '1.5'
                        pnlUsd: null
                        asOf: '2026-05-01T12:00:00Z'
                        aligned: true
                      - obligation: Api479EarnobA1111111111111111111111111111111
                        lifecycle: 1
                        market: Api479Market11111111111111111111111111111111
                        type: Multiply
                        denomination: lst_sol
                        status: partial
                        reasons:
                          - fee_unknown
                        open: false
                        createdOn: '2026-04-30T12:00:00Z'
                        closedOn: '2026-05-01T12:00:00Z'
                        pnlSol: '0'
                        pnlUsd: null
                        asOf: '2026-05-01T12:00:00Z'
                        aligned: true
                    positionsCursor: null
                  - wallet: Api479WaLLetG1111111111111111111111111111111
                    accountingVersion: 2
                    generation: 4797
                    status: unavailable
                    reasons:
                      - discovery_unknown
                    coverage:
                      start: '2026-04-30'
                      computedThrough: '2026-09-28T23:59:00Z'
                      marksFinalThrough: '2026-09-28'
                      projectionRefreshedOn: '2026-09-29T19:00:00Z'
                      oldestIncludedProjection: null
                      lifecycles:
                        total: 1
                        complete: 1
                        partial: 0
                        unavailable: 0
                        open: 0
                        closed: 1
                        typeUnknown: 0
                        missingCreate: 1
                    earnings:
                      lstSolPnlSol: null
                      otherPairsPnlUsd: null
                      earningsUsd: null
                      valuation:
                        solUsdPrice: '200'
                        priceObservedAt: '2026-09-29T19:00:00Z'
                        solUsdRepricing: true
                    partialSubtotal:
                      lstSolPnlSol: '1.5'
                      otherPairsPnlUsd: '0'
                      earningsUsd: '300'
                    earningsByType:
                      Multiply:
                        status: unavailable
                        reasons:
                          - discovery_unknown
                        lstSolPnlSol: null
                        otherPairsPnlUsd: null
                        earningsUsd: null
                        partialSubtotal:
                          lstSolPnlSol: '0'
                          otherPairsPnlUsd: '0'
                          earningsUsd: '0'
                        lifecycles: 0
                      MultiplyFixedRate:
                        status: unavailable
                        reasons:
                          - discovery_unknown
                        lstSolPnlSol: null
                        otherPairsPnlUsd: null
                        earningsUsd: null
                        partialSubtotal:
                          lstSolPnlSol: '1.5'
                          otherPairsPnlUsd: '0'
                          earningsUsd: '300'
                        lifecycles: 1
                    positions:
                      - obligation: Api479EarnobG1111111111111111111111111111111
                        lifecycle: 1
                        market: Api479Market11111111111111111111111111111111
                        type: MultiplyFixedRate
                        denomination: lst_sol
                        status: complete
                        reasons: []
                        open: false
                        createdOn: '2026-04-30T12:00:00Z'
                        closedOn: '2026-05-01T12:00:00Z'
                        pnlSol: '1.5'
                        pnlUsd: null
                        asOf: '2026-05-01T12:00:00Z'
                        aligned: true
                    positionsCursor: null
                  - wallet: Api479WaLLetG1111111111111111111111111111111
                    accountingVersion: 2
                    generation: 4797
                    status: partial
                    reasons:
                      - price_missing
                    coverage:
                      start: '2026-04-30'
                      computedThrough: '2026-09-28T23:59:00Z'
                      marksFinalThrough: '2026-09-28'
                      projectionRefreshedOn: '2026-09-29T19:00:00Z'
                      oldestIncludedProjection: null
                      lifecycles:
                        total: 1
                        complete: 1
                        partial: 0
                        unavailable: 0
                        open: 0
                        closed: 1
                        typeUnknown: 0
                        missingCreate: 0
                    earnings:
                      lstSolPnlSol: '1.5'
                      otherPairsPnlUsd: '0'
                      earningsUsd: null
                      valuation:
                        solUsdPrice: null
                        priceObservedAt: null
                        solUsdRepricing: true
                    partialSubtotal:
                      lstSolPnlSol: '1.5'
                      otherPairsPnlUsd: '0'
                      earningsUsd: null
                    earningsByType:
                      Multiply:
                        status: complete
                        reasons: []
                        lstSolPnlSol: '0'
                        otherPairsPnlUsd: '0'
                        earningsUsd: '0'
                        partialSubtotal: null
                        lifecycles: 0
                      MultiplyFixedRate:
                        status: partial
                        reasons:
                          - price_missing
                        lstSolPnlSol: '1.5'
                        otherPairsPnlUsd: '0'
                        earningsUsd: null
                        partialSubtotal:
                          lstSolPnlSol: '1.5'
                          otherPairsPnlUsd: '0'
                          earningsUsd: null
                        lifecycles: 1
                    positions:
                      - obligation: Api479EarnobG1111111111111111111111111111111
                        lifecycle: 1
                        market: Api479Market11111111111111111111111111111111
                        type: MultiplyFixedRate
                        denomination: lst_sol
                        status: complete
                        reasons: []
                        open: false
                        createdOn: '2026-04-30T12:00:00Z'
                        closedOn: '2026-05-01T12:00:00Z'
                        pnlSol: '1.5'
                        pnlUsd: null
                        asOf: '2026-05-01T12:00:00Z'
                        aligned: true
                    positionsCursor: null
        '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
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Error message describing why it was not authorized
                    example: >-
                      Not authorized for this request. Please include the basic
                      auth headers.
                required:
                  - error
        '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'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
components:
  schemas:
    AddressBase58:
      type: string
      description: Valid base58-encoded address
      example: VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd
    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

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.