Get charts for a reserve
curl --request GET \
--url https://api.kamino.finance/reserves/{reservePubkey}/chartsconst options = {method: 'GET'};
fetch('https://api.kamino.finance/reserves/{reservePubkey}/charts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.kamino.finance/reserves/{reservePubkey}/charts"
response = requests.get(url)
print(response.text)false{
"borrowCurve": [
{
"utilizationRateBps": "8000",
"borrowRateBps": "500"
}
],
"history": [
{
"timestamp": "2025-03-01T12:00:00.000Z",
"supplyApy": "0.0412",
"borrowApy": "0.0621",
"totalSupply": "125000.5",
"totalSupplyUsd": "250001",
"totalBorrow": "50000.2",
"totalBorrowUsd": "100000.4",
"availableLiquidityCapped": "50000",
"availableLiquidityCappedUsd": "100000",
"utilization": "0.4"
}
]
}{
"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"
}
]
}{
"metadata": "Account could not be found"
}{
"error": "An internal error occurred"
}Kamino Lend Reserves
Get charts for a reserve
Get the current raw borrow rate curve and historical base supply and borrow APYs for a reserve.
GET
/
reserves
/
{reservePubkey}
/
charts
Get charts for a reserve
curl --request GET \
--url https://api.kamino.finance/reserves/{reservePubkey}/chartsconst options = {method: 'GET'};
fetch('https://api.kamino.finance/reserves/{reservePubkey}/charts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.kamino.finance/reserves/{reservePubkey}/charts"
response = requests.get(url)
print(response.text)false{
"borrowCurve": [
{
"utilizationRateBps": "8000",
"borrowRateBps": "500"
}
],
"history": [
{
"timestamp": "2025-03-01T12:00:00.000Z",
"supplyApy": "0.0412",
"borrowApy": "0.0621",
"totalSupply": "125000.5",
"totalSupplyUsd": "250001",
"totalBorrow": "50000.2",
"totalBorrowUsd": "100000.4",
"availableLiquidityCapped": "50000",
"availableLiquidityCappedUsd": "100000",
"utilization": "0.4"
}
]
}{
"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"
}
]
}{
"metadata": "Account could not be found"
}{
"error": "An internal error occurred"
}Path Parameters
Kamino Lend reserve public key
Example:
"FBSyPnxtHKLBZ4UeeUyAnbtFuAmTHLtso9YtsqRDRWpM"
Query Parameters
KLend program ID
Example:
"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"
Frequency of the snapshots
Available options:
hour, day Example:
"hour"
Date input (ISO 8601 string or epoch in ms)
Example:
"2024-01-01T00:00:00.000Z"
Date input (ISO 8601 string or epoch in ms)
Example:
"2024-01-01T00:00:00.000Z"