Skip to main content

Overview

Kamino provides two integration options:
OptionDescription
REST APIHTTPS endpoints for data and analytics. Language-agnostic.
TypeScript SDKOn-chain state reads and transaction building. TS/JS only.

Core Differences

Comparison of API and SDK capabilities.
CapabilityREST APITypeScript SDK
Data queries (vaults, reserves)Ready-made endpointsOn-chain reads
User position trackingRich endpointsReal-time account lookup
Historical metrics & chartsBuilt-in history endpointsNot available
Transaction building (deposit, borrow)Unsigned transaction endpointsInstruction builders
Vault creationNot supportedAdmin-level creation tools
Language/runtimeAny (via HTTP)TypeScript/JavaScript only

Data & Analytics

Retrieve vault, market, and historical performance data.
REST APIFetch historical APY data for lending market reserves.
const options = {method: 'GET'};
fetch('https://api.kamino.finance/kamino-market/{market-id}/rates/history', options)
  .then(response => response.json())
  .then(response => console.log(response))
  .catch(err => console.error(err));
TypeScript SDKNo history tracking. Developers must persist snapshots manually if needed.

On-Chain Transactions

Build and execute deposit, borrow, repay, and withdraw operations.
REST API
Get unsigned Solana transactions to deposit liquidity into a Kamino Lend market reserve. Returns transaction that must be signed client-side.
const depositRequest = {
  wallet: 'YOUR_WALLET_ADDRESS',
  market: 'DxXdAyU3kCjnyggvHmY5nAwg5cRbbmdyX3npfDMjjMek',
  reserve: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
  amount: '1.0', // 1 USDC (decimal format, not lamports)
};

const res = await fetch('https://api.kamino.finance/ktx/klend/deposit', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify(depositRequest),
});

const { transaction } = await res.json();
// Sign and send transaction client-side
TypeScript SDK
Build and execute deposit transactions directly on-chain.
import { KaminoMarket, KaminoAction, VanillaObligation, PROGRAM_ID } from '@kamino-finance/klend-sdk';
import { createSolanaRpc, address } from '@solana/kit';
import BN from 'bn.js';

const rpc = createSolanaRpc('https://api.mainnet-beta.solana.com');
const market = await KaminoMarket.load(
  rpc,
  address('DxXdAyU3kCjnyggvHmY5nAwg5cRbbmdyX3npfDMjjMek'),
  100
);

const depositAction = await KaminoAction.buildDepositTxns(
  market,
  new BN(1_000_000), // 1 USDC
  address('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'),
  signer,
  new VanillaObligation(PROGRAM_ID),
  true
);
// Build, sign, and send transaction
REST API
Get unsigned transactions for borrow and repay operations.
// Borrow
const borrowRequest = {
  wallet: 'YOUR_WALLET_ADDRESS',
  market: '7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF',
  reserve: 'D6q6wuQSrifJKZYpR1M8R4YawnLDtDsMmWM1NbBmgJ59',
  amount: '1.0',
};

const borrowRes = await fetch('https://api.kamino.finance/ktx/klend/borrow', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify(borrowRequest),
});

// Repay
const repayRequest = {
  wallet: 'YOUR_WALLET_ADDRESS',
  market: '7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF',
  reserve: 'D6q6wuQSrifJKZYpR1M8R4YawnLDtDsMmWM1NbBmgJ59',
  amount: '1.0',
};

const repayRes = await fetch('https://api.kamino.finance/ktx/klend/repay', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify(repayRequest),
});
TypeScript SDK
Build borrow and repay transactions directly.
import { KaminoAction, VanillaObligation, PROGRAM_ID } from '@kamino-finance/klend-sdk';
import BN from 'bn.js';

const borrowAction = await KaminoAction.buildBorrowTxns(
  market,
  new BN(1_000_000),
  tokenMint,
  signer,
  new VanillaObligation(PROGRAM_ID),
  true,
  undefined,
  1_000_000,
  true,
  false
);
TypeScript SDK
const { vault: vaultSigner, initVaultIxs: instructions } =
  await kaminoManager.createVaultIxs(kaminoVaultConfig);

Choose the right tool for your use case.
Use CaseBest Tool
Display vault list with APR & TVLREST API
Chart vault APY over 30 daysREST API
Fetch a user’s historical rewardsREST API
Build transactions for client signingREST API
Execute transactions in backendSDK
Create a new liquidity vaultSDK
Build in non-JS backend (e.g. Python)API only
Require zero rate limitsSDK with private RPC

Summary

Use the Kamino REST API for fast data integration and history tracking across any backend. Use the TypeScript SDK to simulate, compose, and send on-chain transactions with full control.