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

# Get user transactions

> Get all Kamino Lend transactions for a given user.



## OpenAPI

````yaml /kamino-api.json get /v2/kamino-market/{marketPubkey}/users/{userPubkey}/transactions
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:
  /v2/kamino-market/{marketPubkey}/users/{userPubkey}/transactions:
    get:
      tags:
        - Kamino Lend Transactions
      summary: Get user transactions
      description: Get all Kamino Lend transactions for a given user.
      parameters:
        - schema:
            allOf:
              - $ref: '#/components/schemas/AddressBase58'
              - description: Kamino Lend market public key
                example: 7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF
          required: true
          description: Kamino Lend market public key
          name: marketPubkey
          in: path
        - schema:
            allOf:
              - $ref: '#/components/schemas/AddressBase58'
              - description: User wallet public key
                example: AcNSmd5CxwLs21TYUmhWt7CW2v159TdYRkvQxb1iBYRj
          required: true
          description: User wallet public key
          name: userPubkey
          in: path
        - schema:
            type: string
            enum:
              - mainnet-beta
              - devnet
              - localnet
            default: mainnet-beta
            description: Solana cluster environment
            example: mainnet-beta
          required: false
          description: Solana cluster environment
          name: env
          in: query
        - schema:
            type: string
            enum:
              - asc
              - desc
            default: asc
            description: Sort order (asc for oldest first, desc for newest first)
            example: desc
          required: false
          description: Sort order (asc for oldest first, desc for newest first)
          name: sort
          in: query
        - schema:
            type: string
            enum:
              - 'true'
              - 'false'
            default: 'false'
            description: Return only instructions in the latest position
          required: false
          description: Return only instructions in the latest position
          name: latestPosition
          in: query
      responses:
        '200':
          description: >-
            OK. Long no-op rollover runs are collapsed. History keeps the newest
            KLEND_TX_MAX_ROWS instructions (default 10000), plus the latest
            creation of each obligation. Withdraw-queue history has a separate
            cap.
          headers:
            X-Kamino-Truncated:
              schema:
                type: string
                enum:
                  - 'true'
                description: Present when the history cap omitted instructions
              required: false
              description: Present when the history cap omitted instructions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KlendUserTransactionsResponseV2'
        '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:
    AddressBase58:
      type: string
      description: Valid base58-encoded address
      example: VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd
    KlendUserTransactionsResponseV2:
      type: object
      additionalProperties:
        type: array
        items:
          $ref: '#/components/schemas/KlendTransactionUserResponseV2'
    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
    KlendTransactionUserResponseV2:
      type: object
      properties:
        createdOn:
          type: string
          format: date-time
        rolloverCount:
          type: integer
          exclusiveMinimum: 0
        firstRolloverTimestamp:
          anyOf:
            - type: number
            - type: string
              pattern: ^\d+$
          description: Oldest rollover in the run, in Unix milliseconds, matching timestamp
        transactionSignature:
          type: string
        transactionName:
          type: string
        liquidityToken:
          type: string
        liquidityTokenMint:
          $ref: '#/components/schemas/AddressBase58'
        liquidityTokenAmount:
          $ref: '#/components/schemas/Decimal'
        liquidityTokenPrice:
          $ref: '#/components/schemas/Decimal'
        solPrice:
          $ref: '#/components/schemas/Decimal'
        liquidityUsdValue:
          $ref: '#/components/schemas/Decimal'
        isLiquidationWithdrawal:
          type: boolean
        obligationType:
          type: string
        transactionDisplayName:
          type: string
        isSecondPartOfCompositeIx:
          type: boolean
        amountBasis:
          type: string
          enum:
            - debt
        borrowFeeAmount:
          $ref: '#/components/schemas/Decimal'
        borrowFeeEstimated:
          type: boolean
        liquidationFeeAmount:
          allOf:
            - $ref: '#/components/schemas/Decimal'
            - description: >-
                Liquidations only, on the collateral leg
                (isLiquidationWithdrawal: true); the debt leg never carries it.
                Absent when unknown, e.g. rows not yet backfilled. Liquidation
                bonus the obligation paid, in this leg's collateral token units:
                liquidityTokenAmount * rate / (1 + rate). Realised value frozen
                when the instruction was indexed. The rate is logged rounded to
                whole bps, so the fee is exact to about 0.5 bps / rate.
              example: '0.056738407'
        liquidationFeeUsd:
          allOf:
            - $ref: '#/components/schemas/Decimal'
            - description: >-
                Liquidations only, on the collateral leg
                (isLiquidationWithdrawal: true); the debt leg never carries it.
                Absent when unknown, e.g. rows not yet backfilled.
                liquidationFeeAmount * liquidityTokenPrice, on the same price
                basis as liquidityUsdValue. Also absent, while the other fee
                fields are set, when the collateral token had no price.
              example: '8.20'
        liquidationBonusRate:
          allOf:
            - $ref: '#/components/schemas/Decimal'
            - description: >-
                Liquidations only, on the collateral leg
                (isLiquidationWithdrawal: true); the debt leg never carries it.
                Absent when unknown, e.g. rows not yet backfilled. Bonus rate
                applied, as a fraction: full precision when the program logged
                it, otherwise bps / 10000, otherwise the estimate named by
                liquidationFeeSource.
              example: '0.05'
        liquidationFeeBps:
          type: integer
          description: >-
            Liquidations only, on the collateral leg (isLiquidationWithdrawal:
            true); the debt leg never carries it. Absent when unknown, e.g. rows
            not yet backfilled. liquidationBonusRate rounded to whole bps.
        liquidationProtocolFeeAmount:
          allOf:
            - $ref: '#/components/schemas/Decimal'
            - description: >-
                Liquidations only, on the collateral leg
                (isLiquidationWithdrawal: true); the debt leg never carries it.
                Absent when unknown, e.g. rows not yet backfilled. Protocol
                share of the bonus, in collateral token units. Part of
                liquidationFeeAmount, not an extra charge.
              example: '0.028369204'
        liquidationLiquidatorFeeAmount:
          allOf:
            - $ref: '#/components/schemas/Decimal'
            - description: >-
                Liquidations only, on the collateral leg
                (isLiquidationWithdrawal: true); the debt leg never carries it.
                Absent when unknown, e.g. rows not yet backfilled. Liquidator
                share of the bonus: liquidationFeeAmount -
                liquidationProtocolFeeAmount.
              example: '0.028369203'
        liquidationFeeEstimated:
          type: boolean
          description: >-
            Liquidations only, on the collateral leg (isLiquidationWithdrawal:
            true); the debt leg never carries it. Absent when unknown, e.g. rows
            not yet backfilled. True when the transaction logs were truncated
            and the rate or the protocol share had to be derived.
        liquidationFeeSource:
          type: string
          enum:
            - bonus_log
            - eligibility_log
            - oracle_prices
            - protocol_fee_share
          description: >-
            Liquidations only, on the collateral leg (isLiquidationWithdrawal:
            true); the debt leg never carries it. Absent when unknown, e.g. rows
            not yet backfilled. Evidence for the rate: bonus_log (realised bonus
            line), eligibility_log (eligibility line, same rate), oracle_prices
            (seized collateral value over repaid debt value at the refresh
            prices logged in the same transaction), protocol_fee_share (protocol
            fee transfer over the reserve's protocol liquidation fee pct).
        liquidationFeeKind:
          type: string
          enum:
            - liquidation_bonus
            - order_execution_bonus
          description: >-
            Liquidations only, on the collateral leg (isLiquidationWithdrawal:
            true); the debt leg never carries it. Absent when unknown, e.g. rows
            not yet backfilled. Which fee this is. Always liquidation_bonus
            today; order_execution_bonus is reserved for stop-loss / take-profit
            order executions, which are not in this feed yet.
        liquidationReason:
          type: string
          enum:
            - ltv_exceeded
            - individual_deleveraging
            - market_wide_deleveraging
            - reserve_debt_maturity_reached
            - obligation_borrow_debt_term_reached
            - unknown
          description: >-
            Liquidations only, on the collateral leg (isLiquidationWithdrawal:
            true); the debt leg never carries it. Absent when unknown, e.g. rows
            not yet backfilled. Why the obligation was liquidated, unknown when
            the logs were truncated.
        timestamp:
          type: string
          description: Unix timestamp in milliseconds encoded as a numeric string
          example: '1757687976000'
      required:
        - createdOn
        - transactionSignature
        - transactionName
        - liquidityToken
        - liquidityTokenMint
        - liquidityTokenAmount
        - isLiquidationWithdrawal
        - obligationType
        - transactionDisplayName
        - timestamp
    Decimal:
      type: string
      description: Decimal value represented as string
      example: '1234.56789'

````

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