List Kamino Positions
curl --request GET \
--url https://api.defiorbit.xyz/v1/lending/kamino/position \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.defiorbit.xyz/v1/lending/kamino/position', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.defiorbit.xyz/v1/lending/kamino/position"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.defiorbit.xyz/v1/lending/kamino/position"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.defiorbit.xyz/v1/lending/kamino/position")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.defiorbit.xyz/v1/lending/kamino/position")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.defiorbit.xyz/v1/lending/kamino/position",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"data": [
{
"chain_id": 101,
"wallet": "7FvUzcCoB4Eeykow6PdR3dZLL8WHvqkNr8bKgUKzaiM8",
"target_health_factor": "1.50",
"position": {
"marketAddress": "C7h9YnjPrDvNhe2cWWDhCu4CZEB1XTTH4RzjmsHuengV",
"marketName": "Main",
"obligationAddress": "HwxMtLM5cezFSQLe7h9Y3REUhVCZkgvHkCdXTBLxPqmZ",
"healthFactor": "2.10",
"totalCollateralUSD": "1000.00",
"totalDebtUSD": "400.00",
"availableBorrowsUSD": "400.00",
"currentLiquidationThreshold": "80.00",
"ltv": "40.00",
"netWorthUSD": "600.00",
"suppliedAssets": [
{
"tokenAddress": "mint",
"symbol": "SOL",
"name": "Solana",
"decimals": 9,
"logoURI": null,
"amountSupplied": "5",
"currentPriceUSD": "200.00",
"amountSuppliedUSD": "1000.00",
"supplyAPY": "7.30",
"ltv": "75.00",
"liquidationThreshold": "80.00"
}
],
"borrowedAssets": [
{
"tokenAddress": "mint",
"symbol": "USDC",
"name": "USD Coin",
"decimals": 6,
"logoURI": null,
"amountBorrowed": "400",
"currentPriceUSD": "1.00",
"amountBorrowedUSD": "400.00",
"borrowAPY": "7.30"
}
],
"riskMetrics": {
"maxBorrowCapacityUSD": "800.00",
"borrowUtilization": "50.00",
"liquidationThreshold": "80.00",
"currentLtv": "40.00"
}
},
"calculations": {
"totalSuppliedUSD": "1000.00",
"totalBorrowedUSD": "400.00",
"netPositionUSD": "600.00",
"healthFactor": "2.10",
"dailySupplyInterestUSD": "0.20",
"dailyBorrowInterestUSD": "0.08",
"netDailyInterestUSD": "0.12",
"safeBorrowAmountUSD": "200.00",
"safeWithdrawAmountUSD": "500.00",
"availableBorrowsUSD": "400.00",
"currentLtvPercentage": "40.00",
"netAPY": "7.30",
"positionLeverage": "0.67",
"weightedSupplyAPY": "7.30",
"weightedBorrowAPY": "7.30",
"projectedEarnings": {
"daily": "0.12",
"weekly": "0.84",
"monthly": "3.60",
"yearly": "43.80"
},
"riskMetrics": {
"maxBorrowCapacityUSD": "800.00",
"borrowUtilization": "50.00",
"liquidationThreshold": "80.00"
}
}
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 1,
"next_page": null,
"prev_page": null
},
"request_id": "req_..."
}{
"error": {
"code": "INVALID_PARAMETER",
"message": "page must be a positive integer.",
"request_id": "req_..."
}
}{
"error": {
"code": "INVALID_API_KEY",
"message": "Missing API key.",
"request_id": "req_..."
}
}{
"error": {
"code": "INSUFFICIENT_CREDITS",
"message": "Insufficient API credits.",
"request_id": "req_..."
}
}{
"error": {
"code": "ACCOUNT_SUSPENDED",
"message": "This organization is suspended.",
"request_id": "req_..."
}
}{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Rate limit exceeded. Please try again later.",
"request_id": "req_..."
}
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "An unexpected error occurred.",
"request_id": "req_..."
}
}{
"error": {
"code": "UPSTREAM_ERROR",
"message": "Portfolio data provider temporarily unavailable.",
"request_id": "req_..."
}
}List Kamino Positions
All active Kamino obligations for a wallet. Market name, market address, and obligation address are on position, with collateral and debt. Same item shape as the bundle, including calculations. Use it to discover obligation addresses before calling risk, yield, or events.
Credits: 3 per matching obligation, before pagination.
GET
https://api.defiorbit.xyz
/
v1
/
lending
/
kamino
/
position
List Kamino Positions
curl --request GET \
--url https://api.defiorbit.xyz/v1/lending/kamino/position \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.defiorbit.xyz/v1/lending/kamino/position', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.defiorbit.xyz/v1/lending/kamino/position"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.defiorbit.xyz/v1/lending/kamino/position"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.defiorbit.xyz/v1/lending/kamino/position")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.defiorbit.xyz/v1/lending/kamino/position")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.defiorbit.xyz/v1/lending/kamino/position",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"data": [
{
"chain_id": 101,
"wallet": "7FvUzcCoB4Eeykow6PdR3dZLL8WHvqkNr8bKgUKzaiM8",
"target_health_factor": "1.50",
"position": {
"marketAddress": "C7h9YnjPrDvNhe2cWWDhCu4CZEB1XTTH4RzjmsHuengV",
"marketName": "Main",
"obligationAddress": "HwxMtLM5cezFSQLe7h9Y3REUhVCZkgvHkCdXTBLxPqmZ",
"healthFactor": "2.10",
"totalCollateralUSD": "1000.00",
"totalDebtUSD": "400.00",
"availableBorrowsUSD": "400.00",
"currentLiquidationThreshold": "80.00",
"ltv": "40.00",
"netWorthUSD": "600.00",
"suppliedAssets": [
{
"tokenAddress": "mint",
"symbol": "SOL",
"name": "Solana",
"decimals": 9,
"logoURI": null,
"amountSupplied": "5",
"currentPriceUSD": "200.00",
"amountSuppliedUSD": "1000.00",
"supplyAPY": "7.30",
"ltv": "75.00",
"liquidationThreshold": "80.00"
}
],
"borrowedAssets": [
{
"tokenAddress": "mint",
"symbol": "USDC",
"name": "USD Coin",
"decimals": 6,
"logoURI": null,
"amountBorrowed": "400",
"currentPriceUSD": "1.00",
"amountBorrowedUSD": "400.00",
"borrowAPY": "7.30"
}
],
"riskMetrics": {
"maxBorrowCapacityUSD": "800.00",
"borrowUtilization": "50.00",
"liquidationThreshold": "80.00",
"currentLtv": "40.00"
}
},
"calculations": {
"totalSuppliedUSD": "1000.00",
"totalBorrowedUSD": "400.00",
"netPositionUSD": "600.00",
"healthFactor": "2.10",
"dailySupplyInterestUSD": "0.20",
"dailyBorrowInterestUSD": "0.08",
"netDailyInterestUSD": "0.12",
"safeBorrowAmountUSD": "200.00",
"safeWithdrawAmountUSD": "500.00",
"availableBorrowsUSD": "400.00",
"currentLtvPercentage": "40.00",
"netAPY": "7.30",
"positionLeverage": "0.67",
"weightedSupplyAPY": "7.30",
"weightedBorrowAPY": "7.30",
"projectedEarnings": {
"daily": "0.12",
"weekly": "0.84",
"monthly": "3.60",
"yearly": "43.80"
},
"riskMetrics": {
"maxBorrowCapacityUSD": "800.00",
"borrowUtilization": "50.00",
"liquidationThreshold": "80.00"
}
}
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 1,
"next_page": null,
"prev_page": null
},
"request_id": "req_..."
}{
"error": {
"code": "INVALID_PARAMETER",
"message": "page must be a positive integer.",
"request_id": "req_..."
}
}{
"error": {
"code": "INVALID_API_KEY",
"message": "Missing API key.",
"request_id": "req_..."
}
}{
"error": {
"code": "INSUFFICIENT_CREDITS",
"message": "Insufficient API credits.",
"request_id": "req_..."
}
}{
"error": {
"code": "ACCOUNT_SUSPENDED",
"message": "This organization is suspended.",
"request_id": "req_..."
}
}{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Rate limit exceeded. Please try again later.",
"request_id": "req_..."
}
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "An unexpected error occurred.",
"request_id": "req_..."
}
}{
"error": {
"code": "UPSTREAM_ERROR",
"message": "Portfolio data provider temporarily unavailable.",
"request_id": "req_..."
}
}Authorizations
Query Parameters
Solana wallet.
Example:
"7FvUzcCoB4Eeykow6PdR3dZLL8WHvqkNr8bKgUKzaiM8"
Page. Default: 1.
Maximum 25. Default: 10.
Required range:
x <= 25