Get lifetime wallet Multiply earnings
curl --request GET \
--url https://api.kamino.finance/owners/{pubkey}/multiply/pnlconst options = {method: 'GET'};
fetch('https://api.kamino.finance/owners/{pubkey}/multiply/pnl', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.kamino.finance/owners/{pubkey}/multiply/pnl"
response = requests.get(url)
print(response.text)false{
"wallet": "Api479WaLLetG1111111111111111111111111111111",
"accountingVersion": 2,
"generation": 4797,
"status": "complete",
"reasons": [],
"coverage": {
"start": "2026-04-30",
"computedThrough": "2026-09-28T23:59:00Z",
"marksFinalThrough": "2026-09-28",
"projectionRefreshedOn": "2026-09-29T19:00:00Z",
"oldestIncludedProjection": null,
"lifecycles": {
"total": 1,
"complete": 1,
"partial": 0,
"unavailable": 0,
"open": 0,
"closed": 1,
"typeUnknown": 0,
"missingCreate": 0
}
},
"earnings": {
"lstSolPnlSol": "1.5",
"otherPairsPnlUsd": "0",
"earningsUsd": "300",
"valuation": {
"solUsdPrice": "200",
"priceObservedAt": "2026-09-29T19:00:00Z",
"solUsdRepricing": true
}
},
"partialSubtotal": null,
"earningsByType": {
"Multiply": {
"status": "complete",
"reasons": [],
"lstSolPnlSol": "0",
"otherPairsPnlUsd": "0",
"earningsUsd": "0",
"partialSubtotal": null,
"lifecycles": 0
},
"MultiplyFixedRate": {
"status": "complete",
"reasons": [],
"lstSolPnlSol": "1.5",
"otherPairsPnlUsd": "0",
"earningsUsd": "300",
"partialSubtotal": null,
"lifecycles": 1
}
},
"positions": [
{
"obligation": "Api479EarnobG1111111111111111111111111111111",
"lifecycle": 1,
"market": "Api479Market11111111111111111111111111111111",
"type": "MultiplyFixedRate",
"denomination": "lst_sol",
"status": "complete",
"reasons": [],
"open": false,
"createdOn": "2026-04-30T12:00:00Z",
"closedOn": "2026-05-01T12:00:00Z",
"pnlSol": "1.5",
"pnlUsd": null,
"asOf": "2026-05-01T12:00:00Z",
"aligned": true
}
],
"positionsCursor": null
}{
"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"
}
]
}{
"error": "Not authorized for this request. Please include the basic auth headers."
}{
"metadata": "Account could not be found"
}{
"error": "An internal error occurred"
}{
"error": "<string>"
}Multiply
Get lifetime wallet Multiply earnings
Cumulative native earnings over Multiply and MultiplyFixedRate lifecycles. Controlled by an off, internal, or on gate. The generation parameter is internal-only.
GET
/
owners
/
{pubkey}
/
multiply
/
pnl
Get lifetime wallet Multiply earnings
curl --request GET \
--url https://api.kamino.finance/owners/{pubkey}/multiply/pnlconst options = {method: 'GET'};
fetch('https://api.kamino.finance/owners/{pubkey}/multiply/pnl', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.kamino.finance/owners/{pubkey}/multiply/pnl"
response = requests.get(url)
print(response.text)false{
"wallet": "Api479WaLLetG1111111111111111111111111111111",
"accountingVersion": 2,
"generation": 4797,
"status": "complete",
"reasons": [],
"coverage": {
"start": "2026-04-30",
"computedThrough": "2026-09-28T23:59:00Z",
"marksFinalThrough": "2026-09-28",
"projectionRefreshedOn": "2026-09-29T19:00:00Z",
"oldestIncludedProjection": null,
"lifecycles": {
"total": 1,
"complete": 1,
"partial": 0,
"unavailable": 0,
"open": 0,
"closed": 1,
"typeUnknown": 0,
"missingCreate": 0
}
},
"earnings": {
"lstSolPnlSol": "1.5",
"otherPairsPnlUsd": "0",
"earningsUsd": "300",
"valuation": {
"solUsdPrice": "200",
"priceObservedAt": "2026-09-29T19:00:00Z",
"solUsdRepricing": true
}
},
"partialSubtotal": null,
"earningsByType": {
"Multiply": {
"status": "complete",
"reasons": [],
"lstSolPnlSol": "0",
"otherPairsPnlUsd": "0",
"earningsUsd": "0",
"partialSubtotal": null,
"lifecycles": 0
},
"MultiplyFixedRate": {
"status": "complete",
"reasons": [],
"lstSolPnlSol": "1.5",
"otherPairsPnlUsd": "0",
"earningsUsd": "300",
"partialSubtotal": null,
"lifecycles": 1
}
},
"positions": [
{
"obligation": "Api479EarnobG1111111111111111111111111111111",
"lifecycle": 1,
"market": "Api479Market11111111111111111111111111111111",
"type": "MultiplyFixedRate",
"denomination": "lst_sol",
"status": "complete",
"reasons": [],
"open": false,
"createdOn": "2026-04-30T12:00:00Z",
"closedOn": "2026-05-01T12:00:00Z",
"pnlSol": "1.5",
"pnlUsd": null,
"asOf": "2026-05-01T12:00:00Z",
"aligned": true
}
],
"positionsCursor": null
}{
"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"
}
]
}{
"error": "Not authorized for this request. Please include the basic auth headers."
}{
"metadata": "Account could not be found"
}{
"error": "An internal error occurred"
}{
"error": "<string>"
}Path Parameters
Valid base58-encoded address of the user wallet
Example:
"AxqtG9SHDkZTLSWg81Sp7VqAzQpRqXtR9ziJ3VQAS8As"
Response
OK
Valid base58-encoded address
Example:
"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"
Available options:
complete, partial, unavailable Show child attributes
Show child attributes
Show child attributes
Show child attributes
Labelled sum of computable lifecycles when complete totals are unavailable
Show child attributes
Show child attributes
Both obligation types are always present
Show child attributes
Show child attributes
Show child attributes
Show child attributes