Kamino Kamino Lend Yield API
The Kamino Lend Yield API from Kamino — 7 operation(s) for kamino lend yield.
The Kamino Lend Yield API from Kamino — 7 operation(s) for kamino lend yield.
openapi: 3.0.0
info:
version: 1.0.0
title: Kamino Public Airdrop Kamino Lend Yield 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 Lend Yield
paths:
/kamino-market/{marketPubkey}/reserves/{reservePubkey}/borrow-and-staking-apys/history:
get:
summary: Get KLend reserve borrow APY and staking APY history
description: Get historical borrow interest APY and staking APY data for reserves that contain LST tokens with staking yield. Used for Multiply underlying APY calculations.
tags:
- Kamino Lend Yield
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: Kamino Lend reserve public key
example: FBSyPnxtHKLBZ4UeeUyAnbtFuAmTHLtso9YtsqRDRWpM
required: true
description: Kamino Lend reserve public key
name: reservePubkey
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:
anyOf:
- type: string
- type: number
default: '1970-01-01T00:00:00.000Z'
description: Date input (ISO 8601 string or epoch in ms)
examples:
- '2024-01-01T00:00:00.000Z'
- 1704067200000
example: 2020-01-01T00:00Z
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
example: 2020-02-01T00:00Z
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: array
items:
$ref: '#/components/schemas/BorrowAndStakingApyResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/kamino-market/{marketPubkey}/reserves/{reservePubkey}/borrow-and-staking-apys/history/median:
get:
summary: Get KLend reserve borrow APY and median staking APY history
description: Get historical borrow interest APY and median staking APY data for reserves that contain LST tokens with staking yield. Uses median staking APY values for more stable calculations.
tags:
- Kamino Lend Yield
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: Kamino Lend reserve public key
example: FBSyPnxtHKLBZ4UeeUyAnbtFuAmTHLtso9YtsqRDRWpM
required: true
description: Kamino Lend reserve public key
name: reservePubkey
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:
anyOf:
- type: string
- type: number
default: '1970-01-01T00:00:00.000Z'
description: Date input (ISO 8601 string or epoch in ms)
examples:
- '2024-01-01T00:00:00.000Z'
- 1704067200000
example: 2020-01-01T00:00Z
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
example: 2020-02-01T00:00Z
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: array
items:
$ref: '#/components/schemas/BorrowAndStakingApyResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/v2/kamino-market/{marketPubkey}/obligations/{obligationPubkey}/interest-fees:
get:
summary: Get interest fees earned per obligation
description: Get historical interest fees earned for a specific obligation. Returns total fees earned and historical fee breakdown by token.
tags:
- Kamino Lend Yield
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: Kamino Lend obligation public key
example: 63QrAB1okxCc4FpsgcKYHjYTp1ua8ch6mLReyKRdc22o
required: true
description: Kamino Lend obligation public key
name: obligationPubkey
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:
anyOf:
- type: string
- type: number
default: '1970-01-01T00:00:00.000Z'
description: Date input (ISO 8601 string or epoch in ms)
examples:
- '2024-01-01T00:00:00.000Z'
- 1704067200000
example: 2020-01-01T00:00Z
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
example: 2020-02-01T00:00Z
required: false
description: Date input (ISO 8601 string or epoch in ms)
name: end
in: query
- 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/InterestRateEarnedResponse'
'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'
/v2/kamino-market/{marketPubkey}/obligations/{obligationPubkey}/interest-paid:
get:
summary: Get interest fees paid per obligation
description: Get historical interest fees paid for a specific obligation. Returns total fees paid and historical fee breakdown by token.
tags:
- Kamino Lend Yield
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: Kamino Lend obligation public key
example: 63QrAB1okxCc4FpsgcKYHjYTp1ua8ch6mLReyKRdc22o
required: true
description: Kamino Lend obligation public key
name: obligationPubkey
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:
anyOf:
- type: string
- type: number
default: '1970-01-01T00:00:00.000Z'
description: Date input (ISO 8601 string or epoch in ms)
examples:
- '2024-01-01T00:00:00.000Z'
- 1704067200000
example: 2020-01-01T00:00Z
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
example: 2020-02-01T00:00Z
required: false
description: Date input (ISO 8601 string or epoch in ms)
name: end
in: query
- 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/InterestRatePaidResponse'
'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'
/klend/users/{pubkey}/rewards:
get:
summary: Get user KLend rewards
description: Fetches KLend reward data for a specific user and points source
tags:
- Kamino Lend Yield
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/KlendUserRewardMetrics'
'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'
/klend/rewards:
get:
summary: Get KLend rewards
description: Fetches all active KLend reward metrics for a specific points source
tags:
- Kamino Lend Yield
parameters:
- 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/KlendRewardMetrics'
'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'
/klend/{depositReservePubkey}/{borrowReservePubkey}/rewards/history:
get:
summary: Get KLend reward history
description: Fetches historical KLend reward metrics for a specific deposit and borrow reserve pair
tags:
- Kamino Lend Yield
parameters:
- schema:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Deposit reserve public key
required: true
description: Deposit reserve public key
name: depositReservePubkey
in: path
- schema:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Borrow reserve public key
required: true
description: Borrow reserve public key
name: borrowReservePubkey
in: path
- schema:
anyOf:
- type: string
- type: number
default: '1970-01-01T00:00:00.000Z'
description: Date input (ISO 8601 string or epoch in ms)
examples:
- '2024-01-01T00:00:00.000Z'
- 1704067200000
example: 2020-01-01T00:00Z
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
example: 2020-02-01T00:00Z
required: false
description: Date input (ISO 8601 string or epoch in ms)
name: end
in: query
- schema:
type: string
enum:
- hour
- day
description: Frequency of historical data aggregation
example: hour
examples:
- hour
- day
required: false
description: Frequency of historical data aggregation
name: frequency
in: query
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/KlendRewardHistory'
'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:
TotalFeesObligation:
type: object
additionalProperties:
$ref: '#/components/schemas/TotalInterestFees'
description: Total interest fees earned per obligation
example:
uy9LQEjELMp8r3qpb7fJhu2Y32ydAxTEo74VAEZ6EHQs:
ts: 1762128000000
solFees: '0.00001610553929183891699891935039215032176993'
usdFees: '0.003058858072628656437082436052718601394968'
HistoricalFeesObligation:
type: object
additionalProperties:
type: array
items:
$ref: '#/components/schemas/TokenInterestFees'
description: Historical breakdown of interest fees earned over time
Decimal:
type: string
description: Decimal value represented as string
example: '1234.56789'
TokenInterestFees:
type: object
additionalProperties:
$ref: '#/components/schemas/InterestFees'
description: Historical fees breakdown by reserve. Key is the reserve address.
example:
d4A2prbA2whesmvHaL88BH6Ewn5N4bTSU2Ze8P6Bc4Q:
ts: 1760745600000
solFees: '0'
usdFees: '0'
nativeFees: '0'
KlendRewardHistoryRow:
type: object
properties:
timestamp:
type: string
format: date-time
description: Timestamp of the data point
depositReserve:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- nullable: true
description: Deposit reserve public key, if applicable
borrowReserve:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- nullable: true
description: Borrow reserve public key, if applicable
rewardToken:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Mint address of the reward token
rewardApy:
allOf:
- $ref: '#/components/schemas/Apy'
- description: Annual Percentage Yield from rewards at this point in time
example: '0.2'
required:
- timestamp
- depositReserve
- borrowReserve
- rewardToken
- rewardApy
TotalInterestFees:
type: object
properties:
ts:
type: number
description: Timestamp in milliseconds
example: 1762128000000
solFees:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Total fees in SOL
example: '0.00001610553929183891699891935039215032176993'
usdFees:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Total fees in USD
example: '0.003058858072628656437082436052718601394968'
required:
- ts
- solFees
- usdFees
KlendUserRewardMetric:
type: object
properties:
depositReserve:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- nullable: true
description: Deposit reserve public key, if applicable
borrowReserve:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- nullable: true
description: Borrow reserve public key, if applicable
market:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Market public key
rewardMint:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Mint address of the reward token
lastCalculated:
type: string
format: date
description: Timestamp of the last calculation
tokensEarned:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Total number of reward tokens earned by the user
tokensPerSecond:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Number of reward tokens distributed per second to the user
stakingBoost:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Staking boost percentage applied to the user
effectiveStakingBoost:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Effective staking boost percentage for the user
baseApy:
allOf:
- $ref: '#/components/schemas/Apy'
- description: Base Annual Percentage Yield from rewards for the user
example: '0.2'
boostedApy:
allOf:
- $ref: '#/components/schemas/Apy'
- description: Boosted Annual Percentage Yield from rewards for the user
example: '0.2'
maxApy:
allOf:
- $ref: '#/components/schemas/Apy'
- description: Max Annual Percentage Yield from rewards for the user
example: '0.2'
usdAmount:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Total USD amount of rewards earned by the user without boost
usdAmountBoosted:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Total USD amount of rewards earned by the user with boost applied
required:
- depositReserve
- borrowReserve
- market
- rewardMint
- lastCalculated
- tokensEarned
- tokensPerSecond
- stakingBoost
- effectiveStakingBoost
- baseApy
- boostedApy
- maxApy
- usdAmount
- usdAmountBoosted
KlendUserRewardMetrics:
type: object
properties:
avgBaseApy:
allOf:
- $ref: '#/components/schemas/Apy'
- description: Weighted average Base Annual Percentage Yield for the user
example: '0.2'
avgBoostedApy:
allOf:
- $ref: '#/components/schemas/Apy'
- description: Weighted average Boosted Annual Percentage Yield for the user
example: '0.2'
avgMaxApy:
allOf:
- $ref: '#/components/schemas/Apy'
- description: Weighted average Max Annual Percentage Yield for the user
example: '0.2'
rewards:
type: array
items:
$ref: '#/components/schemas/KlendUserRewardMetric'
description: List of klend user reward metrics
required:
- avgBaseApy
- avgBoostedApy
- avgMaxApy
- rewards
SnapshotDateTime:
type: string
format: date-time
description: Timestamp of the metrics snapshot
example: '2023-06-29T15:15:26.464Z'
KlendRewardMetric:
type: object
properties:
depositReserve:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- nullable: true
description: Deposit reserve public key, if applicable
borrowReserve:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- nullable: true
description: Borrow reserve public key, if applicable
market:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Market public key
rewardToken:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Mint address of the reward token
lastCalculated:
type: string
format: date-time
description: Timestamp of the last calculation
apy:
allOf:
- $ref: '#/components/schemas/Apy'
- description: Annual Percentage Yield from rewards
example: '0.2'
tokensPerSecond:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Number of reward tokens distributed per second
activePositionsUsd:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Total USD value of active positions receiving rewards
required:
- depositReserve
- borrowReserve
- market
- rewardToken
- lastCalculated
- apy
- tokensPerSecond
- activePositionsUsd
AddressBase58:
type: string
description: Valid base58-encoded address
example: VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd
KlendRewardHistory:
type: array
items:
$ref: '#/components/schemas/KlendRewardHistoryRow'
description: List of historical klend reward metrics
BorrowAndStakingApyResponse:
type: object
properties:
createdOn:
allOf:
- $ref: '#/components/schemas/SnapshotDateTime'
- description: Timestamp of the snapshot
example: '2023-10-17T15:00:06.009Z'
borrowInterestApy:
$ref: '#/components/schemas/Apy'
stakingApy:
allOf:
- $ref: '#/components/schemas/Apy'
- description: Staking APY
example: '0.066527842899023711405366628964490454572'
required:
- createdOn
- borrowInterestApy
- stakingApy
KlendRewardMetrics:
type: array
items:
$ref: '#/components/schemas/KlendRewardMetric'
description: List of klend reward metrics
InterestRateEarnedResponse:
type: object
properties:
totalFeesEarnedObligation:
$ref: '#/components/schemas/TotalFeesObligation'
historicalFeesObligation:
$ref: '#/components/schemas/HistoricalFeesObligation'
required:
- totalFeesEarnedObligation
- historicalFeesObligation
InterestFees:
type: object
properties:
ts:
type: number
description: Timestamp in milliseconds
example: 1762128000000
solFees:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Fees in SOL
example: '0.00001610553929183891699891935039215032176993'
usdFees:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Fees in USD
example: '0.003058858072628656437082436052718601394968'
nativeFees:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Fees in native token units
example: '0'
required:
- ts
- solFees
- usdFees
- nativeFees
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
Apy:
type: string
description: Borrow interest APY
example: '0.027610992938039702'
examples:
- '0.123'
- '0'
- '1'
- '1.23'
- '-0.5'
- '999999.999999'
InterestRatePaidResponse:
type: object
properties:
totalFeesPaidObligation:
allOf:
- $ref: '#/components/schemas/TotalFeesObligation'
- description: Total interest fees paid per obligation
historicalFeesObligation:
allOf:
- $ref: '#/components/schemas/HistoricalFeesObligation'
- description: Historical breakdown of interest fees paid over time
required:
- totalFeesPaidObligation
- historicalFeesObligation