Kamino Kamino Earn Vaults API
The Kamino Earn Vaults API from Kamino — 8 operation(s) for kamino earn vaults.
The Kamino Earn Vaults API from Kamino — 8 operation(s) for kamino earn vaults.
openapi: 3.0.0
info:
version: 1.0.0
title: Kamino Public Airdrop Kamino Earn Vaults API
description: 'The Kamino API provides a comprehensive way to interact with Kamino without reading directly from the blockchain.
The API also provides the ability to fetch data that might not be available from just reading the chain.
The API is rate-limited for unauthenticated users. If you feel you need to make more requests or run into rate-limit issues, please reach out.
'
servers:
- url: https://api.kamino.finance
tags:
- name: Kamino Earn Vaults
paths:
/kvaults/transactions:
post:
summary: Bulk get KVault transactions
description: Bulk get all Kamino Earn Vault transactions with paginated access (max 1000 transactions returned in each response). Private (authorized) API access only, please add a basic auth header to your request.
tags:
- Kamino Earn Vaults
parameters:
- schema:
type: string
default: KvauGMspG5k6rtzrqqn7WNn3oZdyKqLKwK2XWQ8FLjd
description: Fetch transactions from this program id
required: false
description: Fetch transactions from this program id
name: programId
in: query
- schema:
type: string
default: false
required: false
name: includeRawJson
in: query
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
start:
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-01-01T00:00Z
end:
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
instruction:
type: string
example: buy
examples:
- buy
- sell
- deposit
- withdraw
- invest
- withdrawAvailable
description: Kvault instruction name
paginationToken:
type: string
example: eyJsYXN0SWQiOjgxfQ==
description: Optional pagination token
required:
- instruction
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
result:
type: array
items:
$ref: '#/components/schemas/KvaultBulkTransaction'
paginationToken:
type: string
example: eyJsYXN0SWQiOjgxfQ==
description: Optional pagination token - if not present you have reached the end
required:
- result
'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
'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
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/kvaults/vaults/{pubkey}/transactions:
post:
summary: Get KVault transactions by vault
description: Get all Kamino Earn Vault transactions for a given vault address
tags:
- Kamino Earn Vaults
parameters:
- schema:
$ref: '#/components/schemas/AddressBase58'
required: true
description: Valid base58-encoded address
name: pubkey
in: path
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
start:
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-01-01T00:00Z
end:
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
instruction:
type: string
example: withdraw
description: Filter by instruction name
direction:
type: string
enum:
- asc
- desc
default: desc
description: Sort order (asc for oldest first, desc for newest first)
example: desc
paginationToken:
type: string
example: eyJsYXN0SWQiOjgxfQ==
description: Optional pagination token
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/KvaultVaultTransactionsResponse'
'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'
/kvaults/vaults/{pubkey}/enqueued-withdraw-transactions:
get:
summary: Get currently queued withdraw-ticket redemptions for a vault
description: Returns `enqueueToWithdraw` klend transactions that were triggered by a kvault `redeemInKind` on this vault and whose underlying withdraw ticket is still queued on-chain (i.e. has not been fully redeemed or cancelled).
tags:
- Kamino Earn Vaults
parameters:
- schema:
$ref: '#/components/schemas/AddressBase58'
required: true
description: Valid base58-encoded address
name: pubkey
in: path
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/EnqueuedWithdrawTransactionsResponse'
'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'
/kvaults/vaults:
get:
summary: Get all kvaults
description: Get all Kamino Earn Vaults
tags:
- Kamino Earn Vaults
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/VaultStateArray'
'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'
/kvaults/vaults/{pubkey}:
get:
summary: Get KVault by address
description: Get a single Kamino Earn Vault by the KVault account address
tags:
- Kamino Earn Vaults
parameters:
- schema:
$ref: '#/components/schemas/AddressBase58'
required: true
description: Valid base58-encoded address
name: pubkey
in: path
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
address:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Public key of the vault
state:
$ref: '#/components/schemas/The vault state object'
programId:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Public key of the kvault program which owns the vault
required:
- address
- state
- programId
'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
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
metadata:
type: string
description: Error message describing why it was not found
example: Account could not be found
required:
- metadata
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/kvaults/vaults/{pubkey}/metrics/history:
get:
summary: Get historical KVault metrics
description: Get historical Kamino Earn Vault metrics for a given vault, between an optional range of dates
tags:
- Kamino Earn Vaults
parameters:
- schema:
$ref: '#/components/schemas/AddressBase58'
required: true
description: Valid base58-encoded address
name: pubkey
in: path
- schema:
anyOf:
- type: string
- type: number
default: '1970-01-01T00:00:00.000Z'
description: Start date of the range (defaults to Unix epoch). Accepts ISO string or epoch in ms.
examples:
- '1970-01-01T00:00:00.000Z'
- 0
required: false
description: Start date of the range (defaults to Unix epoch). Accepts ISO string or epoch in ms.
name: start
in: query
- schema:
anyOf:
- type: string
- type: number
description: End date of the range (defaults to current time). Accepts ISO string or epoch in ms.
examples:
- '2025-01-01T00:00:00.000Z'
- 1735689600000
required: false
description: End date of the range (defaults to current time). Accepts ISO string or epoch in ms.
name: end
in: query
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
type: object
properties:
timestamp:
type: number
description: Unix timestamp in milliseconds
tvl:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Total Value Locked in token denomination
solTvl:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Total Value Locked in SOL
apy:
allOf:
- $ref: '#/components/schemas/Apy'
- description: Annual Percentage Yield
example: '0.2'
apyTheoretical:
allOf:
- $ref: '#/components/schemas/Apy'
- description: Theoretical Annual Percentage Yield
example: '0.2'
apyActual:
allOf:
- $ref: '#/components/schemas/Apy'
- description: Actual Annual Percentage Yield
example: '0.2'
apyFarmRewards:
allOf:
- $ref: '#/components/schemas/Apy'
- description: Annual Percentage Yield from Farm Rewards
example: '0.2'
apyReservesIncentives:
allOf:
- $ref: '#/components/schemas/Apy'
- description: Annual Percentage Yield from Reserves Incentives
example: '0.2'
apyIncentives:
allOf:
- $ref: '#/components/schemas/Apy'
- description: Annual Percentage Yield from Incentives
example: '0.2'
sharePrice:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Share Price of the vault
interest:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Interest earned in token denomination
interestUsd:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Interest earned in USD
interestSol:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Interest earned in SOL
reserves:
type: array
items:
type: object
properties:
pubkey:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Public key of the reserve
supplyApy:
allOf:
- $ref: '#/components/schemas/Apy'
- description: Supply Annual Percentage Yield
example: '0.2'
rewardsApy:
allOf:
- $ref: '#/components/schemas/Apy'
- description: Rewards Annual Percentage Yield
example: '0.2'
allocationRatio:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Allocation Ratio
rewardTokens:
type: array
items:
type: object
properties:
tokenMint:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Token mint address
apy:
allOf:
- $ref: '#/components/schemas/Apy'
- description: Annual Percentage Yield for the reward token
example: '0.2'
required:
- tokenMint
- apy
description: List of reward tokens for the reserve
required:
- pubkey
- supplyApy
- rewardsApy
- allocationRatio
- rewardTokens
description: List of reserves with rewards
vaultRewards:
type: array
items:
type: object
properties:
tokenMint:
allOf:
- $ref: '#/components/schemas/AddressBase58'
- description: Token mint address
apy:
allOf:
- $ref: '#/components/schemas/Apy'
- description: Annual Percentage Yield for the vault reward token
example: '0.2'
required:
- tokenMint
- apy
description: List of vault reward tokens
required:
- timestamp
- tvl
- solTvl
- apy
- apyTheoretical
- apyActual
- apyFarmRewards
- apyReservesIncentives
- apyIncentives
- sharePrice
- interest
- interestUsd
- interestSol
- reserves
- vaultRewards
'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'
/kvaults/vaults/{pubkey}/metrics:
get:
summary: Get current KVault metrics
description: Get current Kamino Earn Vault metrics for a given vault
tags:
- Kamino Earn Vaults
parameters:
- schema:
$ref: '#/components/schemas/AddressBase58'
required: true
description: Valid base58-encoded address
name: pubkey
in: path
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/KvaultMetrics'
'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'
/kvaults/vaults/{pubkey}/allocation-volume/history:
get:
summary: Get historical KVault allocation volume
description: Get historical Kamino Earn Vault allocation volume for a given vault and date range (max 1 year)
tags:
- Kamino Earn Vaults
parameters:
- schema:
$ref: '#/components/schemas/AddressBase58'
required: true
description: Valid base58-encoded address
name: pubkey
in: path
- schema:
anyOf:
- type: string
- type: number
description: Date input (ISO 8601 string or epoch in ms)
examples:
- '2024-01-01T00:00:00.000Z'
- 1704067200000
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:
type: object
properties:
timestamp:
type: string
format: date
description: Timestamp of the investment volume data point
volumeUsd:
allOf:
- $ref: '#/components/schemas/Decimal'
- description: Investment volume in USD
required:
- timestamp
- volumeUsd
description: Array of investment volume data points
'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:
KvaultVaultTransactionsResponse:
type: object
properties:
result:
type: array
items:
$ref: '#/components/schemas/KvaultVaultTransaction'
paginationToken:
type: string
example: eyJsYXN0SWQiOjgxfQ==
description: Optional pagination token
required:
- result
AddressBase58:
type: string
description: Valid base58-encoded address
example: VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd
EnqueuedWithdrawTransactionsResponse:
type: array
items:
$ref: '#/components/schemas/KlendWithdrawQueueTransactionV3'
KvaultEnrichedInstruction:
type: object
properties:
market:
type: string
description: KLend market public key
example: EyV4jxSMd6vpuRgrxMFem7CKRhcB4Vv6WMRDtxPQNP4
reserve:
type: string
description: KLend reserve public key
example: ALnjBHECcdBsSwgVJ6A8pFEZ15qxE5jJQriCXSKT3Bte
solPrice:
$ref: '#/components/schemas/Decimal'
sharePrice:
$ref: '#/components/schemas/Decimal'
tokenPrice:
$ref: '#/components/schemas/Decimal'
tokenAmount:
# --- truncated at 32 KB (51 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/kamino/refs/heads/main/openapi/kamino-kamino-earn-vaults-api-openapi.yml