Skip to main content

Reading Vault Data

Retrieve user share balances and vault state information using the Kamino SDK and API.
Historical vault data is only available via the API.
1

Get All Vaults

This fetches all available Kamino vaults from the API, and returns an array of vault objects containing address, state, and configuration data for each vault.
getAllVaults
async function getAllVaults(): Promise<void> {
  const url = 'https://api.kamino.finance/kvaults/vaults';
  const res = await fetch(url);
  if (!res.ok) {
    throw new Error(`Request failed: ${res.status} ${res.statusText}`);
  }
  const vaults = await res.json(); // Response 200: array of vaults

  vaults.forEach((vault: any) => {
    console.log({
      address: vault.address,
      name: vault.state.name,
      tokenMint: vault.state.tokenMint,
      sharesIssued: vault.state.sharesIssued,
      tokenAvailable: vault.state.tokenAvailable,
    });
  });
}

getAllVaults().catch(console.error);
View
2

Get Vault Info

Retrieves real-time vault metrics including holdings, APY rates, and exchange rate. And uses the SDK to query on-chain vault state and performance data.
Using the SDK requires a private RPC connection or the public rate-limited RPC endpoint.
getVaultInfo
import { createSolanaRpc, address } from '@solana/kit';
import { KaminoVault } from '@kamino-finance/klend-sdk';

const vault = new KaminoVault(
  createSolanaRpc('https://api.mainnet-beta.solana.com'), // RPC
  address('HDsayqAsDWy3QvANGqh2yNraqcD8Fnjgh73Mhb3WRS5E') // USDC vault
);

console.log({
  holdings: (await vault.getVaultHoldings()).asJSON(),
  apys: await vault.getAPYs(),
  exchangeRate: (await vault.getExchangeRate()).toString(),
});
View Code
3

Get Vault Historical Info

This queries historical performance metrics for a specific vault and user over a time range, and returns time-series data including balance, yield, and allocation changes.
getVaultHistoricalInfo
async function getVaultHistoricalInfo(): Promise<void> {
  const kvaultPubkey = 'HDsayqAsDWy3QvANGqh2yNraqcD8Fnjgh73Mhb3WRS5E'; // vault address
  const ownerPubkey = 'AxqtG9SHDkZTLSWg81Sp7VqAzQpRqXtR9ziJ3VQAS8As'; // user address

  const API_BASE_URL = 'https://api.kamino.finance';

  const params = new URLSearchParams({
    start: '1970-01-01T00:00:00.000Z', // or epoch ms string like "0"
    end: '2025-01-01T00:00:00.000Z',
  }).toString();

  const url = `${API_BASE_URL}/kvaults/users/${ownerPubkey}/vaults/${kvaultPubkey}/metrics/history?${params}`;
  const res = await fetch(url);
  if (!res.ok) {
    throw new Error(`Request failed: ${res.status} ${res.statusText}`);
  }
  const data = await res.json(); // Response 200: array of metric points
  console.log(data);
}

getVaultHistoricalInfo().catch(console.error);
View Code
4

Get Advanced Vault Allocation Info

Queries the vault’s allocation strategy showing how funds are distributed across different reserves with their target weights and current allocations.
getVaultAllocations
import { createSolanaRpc, address } from '@solana/kit';
import { KaminoVault } from '@kamino-finance/klend-sdk';

const vault = new KaminoVault(
  createSolanaRpc('https://api.mainnet-beta.solana.com'), // RPC
  address('HDsayqAsDWy3QvANGqh2yNraqcD8Fnjgh73Mhb3WRS5E') // USDC vault
);

const allocations = await vault.getVaultAllocations();

for (const [address, overview] of allocations) {
  console.log(
    `Reserve: ${address}: weight ${overview.targetWeight.toString()}, allocation: ${overview.ctokenAllocation.toString()}`
  );
}
View Code
5

Get Advanced Vault Incentives Info

Retrieves detailed incentive information for the vault including delegated farm rewards, reserve farm incentives, and direct vault farm incentives along with comprehensive vault overview metrics.
getVaultIncentives
import { createSolanaRpc, address } from '@solana/kit';
import { KaminoManager, KaminoVault } from '@kamino-finance/klend-sdk';
import { Decimal } from 'decimal.js';

const rpc = createSolanaRpc('https://api.mainnet-beta.solana.com');
const vault = new KaminoVault(
  rpc,
  address('HDsayqAsDWy3QvANGqh2yNraqcD8Fnjgh73Mhb3WRS5E') // USDC vault
);

const kaminoManager = new KaminoManager(rpc);

const vaultTokenPrice = new Decimal(1.0); // as it is an USDC vault the token price is 1
const vaultOverview = await kaminoManager.getVaultOverview(vault, vaultTokenPrice);

console.log('vaultOverview', vaultOverview);
console.log('delegated farm incentives', vaultOverview.delegatedFarmIncentives);
console.log('reserves farm incentives', vaultOverview.reservesFarmsIncentives);
console.log('vault farm incentives', vaultOverview.vaultFarmIncentives);
View Code

Additional Resources