Kamino Portfolio API
The Portfolio API from Kamino — 2 operation(s) for portfolio.
The Portfolio API from Kamino — 2 operation(s) for portfolio.
openapi: 3.0.0
info:
version: 1.0.0
title: Kamino Public Airdrop Portfolio 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: Portfolio
paths:
/portfolio/{pubkey}:
get:
operationId: getPortfolio
summary: Get portfolio source data for a wallet
description: Returns source position rows across Kamino products (lending, multiply, leverage, liquidity, earn, private credit, staking). Portfolio totals, counts, fees, historical PnL, and display-only rollups are intentionally left to client composition or their dedicated endpoints.
tags:
- Portfolio
parameters:
- schema:
$ref: '#/components/schemas/AddressBase58'
required: true
description: Valid base58-encoded address
name: pubkey
in: path
- schema:
type: string
default: KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD
description: KLend program ID
example: KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD
required: false
description: KLend program ID
name: programId
in: query
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PortfolioResponse'
example:
timestamp: '2026-06-12T11:16:12.657Z'
sections:
lending:
indexed: true
positionsRefreshedOn: '2026-06-11T23:14:19.969Z'
pricesRefreshedOn: '2026-06-12T11:12:29.057Z'
errors: []
multiply:
indexed: true
positionsRefreshedOn: '2026-06-11T23:13:54.680Z'
pricesRefreshedOn: '2026-06-12T11:12:29.057Z'
errors: []
leverage:
indexed: true
positionsRefreshedOn: '2026-06-11T23:14:00.518Z'
pricesRefreshedOn: '2026-06-12T11:12:29.057Z'
errors: []
liquidity:
indexed: true
positionsRefreshedOn: '2026-06-11T23:11:53.211Z'
pricesRefreshedOn: '2026-06-11T23:14:24.861Z'
errors: []
earn:
indexed: true
positionsRefreshedOn: '2026-06-11T23:12:29.633Z'
pricesRefreshedOn: '2026-06-12T11:12:29.057Z'
errors: []
privateCredit:
indexed: true
positionsRefreshedOn: '2026-06-11T23:12:29.846Z'
pricesRefreshedOn: '2026-06-12T11:12:29.057Z'
errors: []
staking:
indexed: true
positionsRefreshedOn: '2026-06-11T23:04:34.002Z'
pricesRefreshedOn: '2026-06-12T11:12:29.057Z'
errors: []
lending:
- obligation: HpAQMFgpSJ3XZWEXtSQgJmuL3Fd8QepJSG79csgq3hoB
market: 5wJeMrUYECGq41fxRESKALVcHnNX26TAWy4W98yULsua
tag: Vanilla
netValue: '262.00710654164595037'
totalDepositValue: '491.89391304710577576'
totalBorrowValue: '229.88680650545982539'
ltv: '0.4673503786241097951'
maxLtv: '0.5727335057760832411'
liquidationLtv: '0.63241141170317723635'
leverage: '1.8774067602205262589'
deposits:
- mint: XsoCS1TfEyfFhfvj8EtZ528L3CaKBDBRqRapnBbDF2W
symbol: SPYx
amount: '0.16082255065800625522'
value: '119.1703926699327137'
price: '741.005488237479553'
reserve: UvXjBuC7YZYaGB9Rn1PpBD1GySmjzunXgE8Zev9ua8d
maxLtv: '0.73'
liquidationLtv: '0.75'
borrows:
- mint: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
symbol: USDC
amount: '229.95449131043213799'
value: '229.88680650545982539'
price: '0.99970566'
reserve: 97zoywd8mPZsGTg8q1wdD2Wgkdrs2tqusp1Qqcxbyj7E
borrowFactor: '1'
multiply:
- obligation: 2JsWdyxA15WodMBzRY5uNUJDvL71xm9NwfMj6qdYi3SC
market: 7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF
tag: Multiply
netValue: '39.032947857306441512'
totalDepositValue: '124.32509095187057771'
totalBorrowValue: '85.292143094564136198'
ltv: '0.68604126843215345899'
maxLtv: '0.87000000000000000002'
liquidationLtv: '0.91999999999999999997'
leverage: '3.1851319917308934971'
deposits:
- mint: J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn
symbol: JitoSOL
amount: '1.4488817124626824571'
value: '124.32509095187057771'
price: '85.807619685221685924'
reserve: EVbyPKrHG6WBfm4dLxLMJpUDY43cCAcHSpV3KYjKsktW
maxLtv: '0.87'
liquidationLtv: '0.92'
borrows:
- mint: So11111111111111111111111111111111111111112
symbol: SOL
amount: '1.276825076608483649'
value: '85.292143094564136198'
price: '66.80017855'
reserve: d4A2prbA2whesmvHaL88BH6Ewn5N4bTSU2Ze8P6Bc4Q
borrowFactor: '1'
depositMint: J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn
borrowMint: So11111111111111111111111111111111111111112
leverage:
- obligation: VgtvJ1iCDAb65pWbwhvX33X6CWMWMdrYRABEhNTJ9xq
market: 7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF
tag: Leverage
netValue: '8.774498333310038026'
totalDepositValue: '23.724451929066735492'
totalBorrowValue: '14.949953595756697466'
ltv: '0.6301495874575001704'
maxLtv: '0.75'
liquidationLtv: '0.80000000000000000002'
leverage: '2.7037958214663046734'
deposits:
- mint: 7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs
symbol: ETH
amount: '0.014174648995927885562'
value: '23.724451929066735492'
price: '1673.72412085'
reserve: febGYTnFX4GbSGoFHFeJXUHgNaK53fB23uDins9Jp1E
maxLtv: '0.75'
liquidationLtv: '0.8'
borrows:
- mint: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
symbol: USDC
amount: '14.954355260684127232'
value: '14.949953595756697466'
price: '0.99970566'
reserve: D6q6wuQSrifJKZYpR1M8R4YawnLDtDsMmWM1NbBmgJ59
borrowFactor: '1'
depositMint: 7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs
borrowMint: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
liquidity:
- strategy: HBuYwvq67VKnLyKxPzDjzskyRMk7ps39gwHdvaPGwdmQ
shareMint: 7XB1azPg9hmD196uiGNa61EyvXbCmQhg8jSdptRGkRTZ
shares: '216.673457'
netValue: '26.383693978132575086'
tokenA:
mint: JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN
symbol: JUP
amount: '54.602417609162028891'
value: '9.1141301646553401798'
price: '0.16691807'
tokenB:
mint: bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1
symbol: bSOL
amount: '0.19898556021252914791'
value: '17.269563813477234906'
price: '86.788025196563257466'
earn:
- vault: 7cYGMEwQKhdYdugAyQBEqtwG6KhHyuEDcgUrdfGaV6qV
tokenMint: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
symbol: USDC
name: Core+ USDC Vault
netValue: '102.43833649457444653'
shares: '97.742099'
amount: '102.46849707200261978'
privateCredit:
- vault: 91b1opzHNUQobfLZxGMNYT5qDRKoqV8FdsdQBmH4wBxy
tokenMint: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
symbol: USDC
name: Kamino Institutional USDC
netValue: '10.357873888364687946'
shares: '10'
amount: '10.360923522594328361'
staking:
- mint: KMNo3nJsBXfcpJTVhZcXLW7RmTwTt4GVFE7suUBo9sS
symbol: KMNO
farm: 2sFZDpBn4sA42uNbAD6QzQ98rPSmqnPyksYe6SJKVvay
amount: '1700.2533519964832604'
value: '30.92680935374059216'
price: '0.01818953'
'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:
nullable: true
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'
/portfolio/{pubkey}/rewards:
get:
operationId: getPortfolioRewards
summary: Get pending farm rewards for a wallet
description: Returns pending farm reward source rows across Kamino products. USD reward totals are composed on the client from price data.
tags:
- Portfolio
parameters:
- schema:
$ref: '#/components/schemas/AddressBase58'
required: true
description: Valid base58-encoded address
name: pubkey
in: path
- schema:
type: string
default: KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD
description: KLend program ID
example: KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD
required: false
description: KLend program ID
name: programId
in: query
- schema:
type: string
pattern: ^\d+(,\d+)*$
description: Comma-separated farm reward types to include. Defaults to 0,1 to match portfolio webapp rewards.
example: 0,1
required: false
description: Comma-separated farm reward types to include. Defaults to 0,1 to match portfolio webapp rewards.
name: rewardTypes
in: query
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PortfolioRewardsResponse'
example:
timestamp: '2026-06-12T11:16:12.684Z'
farms:
- farm: A9nKRhBPVdQ2QDfzMkhpZzsAimCt59wSKxpo36bzhDiU
userState: JBhXSh6Zb5TPi8g6rsTpNjmuet4V7YGGtU3daou9Y2qs
delegatee: ARygwR6WBPvatQ2bBrSyytsyBgqrRDwxEuANWSSydfXW
strategy: HBuYwvq67VKnLyKxPzDjzskyRMk7ps39gwHdvaPGwdmQ
positionType: Liquidity
activeStakeAmount: '216.673457'
tokenMints:
- JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN
- bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1
rewards:
- mint: BLZEEuZUBVqFhj8adcCFPJvPVCiCyVmh3hkJMrU8KuJA
amount: '59.765598641'
index: 0
type: 0
tokenProgram: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
- farm: 9hUeaxTE3UsRFVt46NPDszSGW76gqDwK743SvJvjYUiY
userState: HkPCNqo1FRo41oiCwG8Kjsg664Jamsv8TE9kU7bqVP5S
delegatee: 5CVMEG7NSdEDVTPiz8efwL6zbXYSVEpkHovf54n2bvoZ
vault: NSSESC5s9Mk7uhUg7hdRiEeNaz7FQmZveJseF62Zjbc
positionType: Lend
activeStakeAmount: '0'
tokenMints:
- CASHx9KJUStyftLFWGvEVf59SGeG9sh5FfcnZMVPCASH
rewards:
- mint: CASHx9KJUStyftLFWGvEVf59SGeG9sh5FfcnZMVPCASH
amount: '0.446532'
index: 0
type: 0
tokenProgram: TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
- farm: 3Dsn7mXKCxQ54QxDtogFsGqgMhhgWnVtN5MGLHvowh3E
userState: F8vs1tNCEdsvHB9ZgYCNRNnb2CbmDULEfQ68A6ZXHvwm
delegatee: 51rLRu3pvps8vWHVt6uSBeRgQ2UJgCPsw5TEdGsQSKkA
positionType: Borrow Markets
activeStakeAmount: '0'
tokenMints: []
rewards:
- mint: CASHx9KJUStyftLFWGvEVf59SGeG9sh5FfcnZMVPCASH
amount: '0.003248'
index: 0
type: 1
tokenProgram: TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
'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:
nullable: true
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:
PortfolioSectionError:
type: object
properties:
code:
type: string
description: Stable subcomponent error code
required:
- code
Decimal:
type: string
description: Decimal value represented as string
example: '1234.56789'
PortfolioLendingDeposit:
type: object
properties:
mint:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Token mint address
symbol:
type: string
description: Best-effort token symbol from known SQL-backed mint metadata, or UNKNOWN when unavailable
example: SOL
amount:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Token amount
value:
type: string
nullable: true
example: '1234.56789'
description: Current USD value for this token row
price:
type: string
nullable: true
example: '1234.56789'
description: Current token price in USD
reserve:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Resolved KLend reserve address backing this token row
maxLtv:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Maximum loan-to-value ratio for the reserve as a fraction, adjusted for the obligation's elevation group
liquidationLtv:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Liquidation loan-to-value threshold for the reserve as a fraction, adjusted for the obligation's elevation group
required:
- mint
- symbol
- amount
- value
- price
- maxLtv
- liquidationLtv
PortfolioMultiplyPosition:
type: object
properties:
obligation:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Obligation address
market:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Lending market address
tag:
type: string
enum:
- Vanilla
- Lending
- LendingFixedRate
- Multiply
- MultiplyFixedRate
- Leverage
- LeverageFixedRate
description: Obligation type tag
example: Lending
netValue:
type: string
nullable: true
example: '1234.56789'
description: Net account value in USD from refreshed obligation stats
totalDepositValue:
type: string
nullable: true
example: '1234.56789'
description: Total deposit value in USD from refreshed obligation stats
totalBorrowValue:
type: string
nullable: true
example: '1234.56789'
description: Total borrow value in USD from refreshed obligation stats
ltv:
type: string
nullable: true
example: '1234.56789'
description: Current loan-to-value ratio from refreshed obligation stats
maxLtv:
type: string
nullable: true
example: '1234.56789'
description: Maximum loan-to-value ratio for the whole obligation from refreshed stats
liquidationLtv:
type: string
nullable: true
example: '1234.56789'
description: Liquidation LTV threshold from refreshed obligation stats
leverage:
type: string
nullable: true
example: '1234.56789'
description: Current leverage from refreshed obligation stats
deposits:
type: array
items:
$ref: '#/components/schemas/PortfolioLendingDeposit'
borrows:
type: array
items:
$ref: '#/components/schemas/PortfolioLendingBorrow'
depositMint:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Primary deposit token mint used for this multiply position
borrowMint:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Primary borrow token mint used for this multiply position
required:
- obligation
- market
- tag
- netValue
- totalDepositValue
- totalBorrowValue
- ltv
- maxLtv
- liquidationLtv
- leverage
- deposits
- borrows
PortfolioRewardToken:
type: object
properties:
mint:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Reward token mint
amount:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Pending reward amount
index:
type: integer
description: Reward info index on the farm state used for claim instructions
example: 0
type:
type: integer
description: Farm reward type index used by farm rewards accounting
example: 0
tokenProgram:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Token program ID for the reward token
required:
- mint
- amount
- index
- type
- tokenProgram
PortfolioLendingBorrow:
type: object
properties:
mint:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Token mint address
symbol:
type: string
description: Best-effort token symbol from known SQL-backed mint metadata, or UNKNOWN when unavailable
example: SOL
amount:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Token amount
value:
type: string
nullable: true
example: '1234.56789'
description: Current USD value for this token row
price:
type: string
nullable: true
example: '1234.56789'
description: Current token price in USD
reserve:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Resolved KLend reserve address backing this token row
borrowFactor:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Borrow factor for the reserve as a fraction (e.g. 1.25); 1 when an elevation group is active
required:
- mint
- symbol
- amount
- value
- price
- borrowFactor
PortfolioStakingPosition:
type: object
properties:
mint:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Staked token mint address
symbol:
type: string
description: Staked token symbol
example: KMNO
farm:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Farm address where the staking position is held
amount:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Amount of KMNO staked
value:
type: string
nullable: true
example: '1234.56789'
description: Current USD value of staked KMNO
price:
type: string
nullable: true
example: '1234.56789'
description: Current staked token price in USD
required:
- mint
- symbol
- farm
- amount
- value
- price
PortfolioPrivateCreditPosition:
type: object
properties:
vault:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Vault address
tokenMint:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Vault underlying token mint
symbol:
type: string
description: Vault underlying token symbol
example: USDC
name:
type: string
description: Vault name
example: Maple USDC
netValue:
type: string
nullable: true
example: '1234.56789'
description: Current position value in USD
shares:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Number of shares held
amount:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Underlying token amount for the position
required:
- vault
- tokenMint
- symbol
- name
- netValue
- shares
- amount
PortfolioLeveragePosition:
type: object
properties:
obligation:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Obligation address
market:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Lending market address
tag:
type: string
enum:
- Vanilla
- Lending
- LendingFixedRate
- Multiply
- MultiplyFixedRate
- Leverage
- LeverageFixedRate
description: Obligation type tag
example: Lending
netValue:
type: string
nullable: true
example: '1234.56789'
description: Net account value in USD from refreshed obligation stats
totalDepositValue:
type: string
nullable: true
example: '1234.56789'
description: Total deposit value in USD from refreshed obligation stats
totalBorrowValue:
type: string
nullable: true
example: '1234.56789'
description: Total borrow value in USD from refreshed obligation stats
ltv:
type: string
nullable: true
example: '1234.56789'
description: Current loan-to-value ratio from refreshed obligation stats
maxLtv:
type: string
nullable: true
example: '1234.56789'
description: Maximum loan-to-value ratio for the whole obligation from refreshed stats
liquidationLtv:
type: string
nullable: true
example: '1234.56789'
description: Liquidation LTV threshold from refreshed obligation stats
leverage:
type: string
nullable: true
example: '1234.56789'
description: Current leverage from refreshed obligation stats
deposits:
type: array
items:
$ref: '#/components/schemas/PortfolioLendingDeposit'
borrows:
type: array
items:
$ref: '#/components/schemas/PortfolioLendingBorrow'
depositMint:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Primary deposit token mint used for this leverage position
borrowMint:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Primary borrow token mint used for this leverage position
required:
- obligation
- market
- tag
- netValue
- totalDepositValue
- totalBorrowValue
- ltv
- maxLtv
- liquidationLtv
- leverage
- deposits
- borrows
PortfolioLiquidityPosition:
type: object
properties:
strategy:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Strategy address
shareMint:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Strategy share mint address
shares:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Total strategy shares held directly or staked in farms
netValue:
type: string
nullable: true
example: '1234.56789'
description: Current net position value in USD
tokenA:
$ref: '#/components/schemas/PortfolioPositionToken'
tokenB:
$ref: '#/components/schemas/PortfolioPositionToken'
required:
- strategy
- shareMint
- shares
- netValue
- tokenA
- tokenB
PortfolioResponse:
type: object
properties:
timestamp:
type: string
format: date-time
description: Response timestamp as an ISO-8601 string
sections:
$ref: '#/components/schemas/PortfolioSections'
lending:
type: array
items:
$ref: '#/components/schemas/PortfolioLendingPosition'
multiply:
type: array
items:
$ref: '#/components/schemas/PortfolioMultiplyPosition'
leverage:
type: array
items:
$ref: '#/components/schemas/PortfolioLeveragePosition'
liquidity:
type: array
items:
$ref: '#/components/schemas/PortfolioLiquidityPosition'
earn:
type: array
items:
$ref: '#/components/schemas/PortfolioEarnPosition'
privateCredit:
type: array
items:
$ref: '#/components/schemas/PortfolioPrivateCreditPosition'
staking:
type: array
items:
$ref: '#/components/schemas/PortfolioStakingPosition'
required:
- timestamp
- sections
- lending
- multiply
- leverage
- liquidity
- earn
- privateCredit
- staking
AddressBase58:
type: string
description: Valid base58-encoded address
example: VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd
PortfolioFarmReward:
type: object
properties:
farm:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Farm address
userState:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: User state address used for claiming
delegatee:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Delegatee recorded on the user farm state, used to build claim instructions
strategy:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Liquidity strategy associated with the farm, when applicable
vault:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: KVault associated with the farm, when applicable
positionType:
type: string
enum:
- Liquidity
- Lend
- Borrow Markets
- Multiply
- Leverage
description: Farm position type
example: Lend
activeStakeAmount:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Active stake amount in farm
tokenMints:
type: array
items:
$ref: '#/components/schemas/AddressBase58'
default: []
description: Token mints identifying the position (e.g. tokenA+tokenB for liquidity)
rewards:
type: array
items:
$ref: '#/components/schemas/PortfolioRewardToken'
required:
- farm
- userState
- delegatee
- positionType
- activeStakeAmount
- rewards
description: Farm reward row; at most one of strategy or vault is present.
PortfolioRewardsResponse:
type: object
properties:
timestamp:
type: string
format: date-time
description: Response timestamp as an ISO-8601 string
farms:
type: array
items:
$ref: '#/components/schemas/PortfolioFarmReward'
partialErrors:
$ref: '#/components/schemas/PortfolioRewardsPartialErrors'
required:
- timestamp
- farms
Port
# --- truncated at 32 KB (38 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/kamino/refs/heads/main/openapi/kamino-portfolio-api-openapi.yml