curl --request GET \
--url https://api.kamino.finance/v2/kamino-market/{marketPubkey}/obligations/{obligationPubkey}/analytics/historyconst options = {method: 'GET'};
fetch('https://api.kamino.finance/v2/kamino-market/{marketPubkey}/obligations/{obligationPubkey}/analytics/history', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.kamino.finance/v2/kamino-market/{marketPubkey}/obligations/{obligationPubkey}/analytics/history"
response = requests.get(url)
print(response.text)false{
"market": "VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd",
"obligation": "VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd",
"frequency": "hour",
"history": [
{
"timestamp": "2023-11-07T05:31:56Z",
"netValue": "1234.56789",
"deposit": "1234.56789",
"borrow": "1234.56789",
"ltv": "1234.56789",
"liquidationLtv": "1234.56789",
"baseApy": "1234.56789",
"farmRewardsApy": "1234.56789",
"assetYieldApy": "1234.56789"
}
]
}{
"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"
}Get obligation analytics history
Get precomputed position values and signed APY components relative to equity in [start, end). Omit start for full history; end defaults to now. Daily history may end with the latest hourly bucket from today or yesterday when that day is not yet covered by a daily row. Finalized data typically lags by 1-2 hours.
curl --request GET \
--url https://api.kamino.finance/v2/kamino-market/{marketPubkey}/obligations/{obligationPubkey}/analytics/historyconst options = {method: 'GET'};
fetch('https://api.kamino.finance/v2/kamino-market/{marketPubkey}/obligations/{obligationPubkey}/analytics/history', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.kamino.finance/v2/kamino-market/{marketPubkey}/obligations/{obligationPubkey}/analytics/history"
response = requests.get(url)
print(response.text)false{
"market": "VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd",
"obligation": "VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd",
"frequency": "hour",
"history": [
{
"timestamp": "2023-11-07T05:31:56Z",
"netValue": "1234.56789",
"deposit": "1234.56789",
"borrow": "1234.56789",
"ltv": "1234.56789",
"liquidationLtv": "1234.56789",
"baseApy": "1234.56789",
"farmRewardsApy": "1234.56789",
"assetYieldApy": "1234.56789"
}
]
}{
"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 market public key
"7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF"
Kamino Lend obligation public key
"63QrAB1okxCc4FpsgcKYHjYTp1ua8ch6mLReyKRdc22o"
Query Parameters
Solana cluster environment
mainnet-beta, devnet, localnet "mainnet-beta"
Auto-selects hour for ranges up to 32 days starting within the last 33 days, otherwise day. Explicit hour requires a start and the same range and lookback limits.
hour, day Date input (ISO 8601 string or epoch in ms)
"2024-01-01T00:00:00.000Z"
Date input (ISO 8601 string or epoch in ms)
"2024-01-01T00:00:00.000Z"
Response
OK
Valid base58-encoded address
"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"
Valid base58-encoded address
"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"
hour, day Ascending bucket starts with decimal values rounded to 6 decimal places. The three APY components add up to net APY. Empty obligations have zero stats and null APYs. The final daily point may be the latest hourly snapshot from today or yesterday when that day has no returned daily row; finalized data typically lags by 1-2 hours.
Show child attributes
Show child attributes