{"openapi":"3.1.0","info":{"version":"1.0.0","title":"Kamino Public API","description":"The Kamino API provides a comprehensive way to interact with Kamino without reading directly from the blockchain.\n\nThe API also provides the ability to fetch data that might not be available from just reading the chain.\n\nThe API is rate-limited for unauthenticated users. If you feel you need to make more requests or run into rate-limit issues, please reach out.\n"},"servers":[{"url":"https://api.kamino.finance"}],"components":{"schemas":{"SlotDuration":{"type":"object","properties":{"recentSlotDurationInMs":{"type":"number","description":"Slot duration in milliseconds calculated from the median duration of the last 3 epoch slot durations","example":400}},"required":["recentSlotDurationInMs"]},"Error":{"type":"object","properties":{"error":{"type":"string","description":"Error message for internal server failure","example":"An internal error occurred"}},"required":["error"],"description":"Internal server error response (500)","example":{"error":"An internal error occurred"}},"AddressBase58":{"type":"string","description":"Market public key","example":"9pMFoVgsG2cNiUCSBEE69iWFN7c1bz9gu9TtPeXkAMTs"},"SnapshotDateTime":{"type":"string","format":"date-time","description":"Timestamp of the metrics snapshot","example":"2023-06-29T15:15:26.464Z"},"Decimal":{"type":"string","description":"Total Value Locked in USD","example":"234.14377328764223","examples":["0.123","0","1","1.23","-42.0","999999.999999"]},"MarketMetricsResponse":{"type":"object","properties":{"market":{"$ref":"#/components/schemas/AddressBase58"},"timestamp":{"$ref":"#/components/schemas/SnapshotDateTime"},"metrics":{"type":"object","properties":{"tvl":{"$ref":"#/components/schemas/Decimal"},"obligations":{"type":"integer","description":"Number of obligations","example":38}},"required":["tvl","obligations"],"description":"Market metrics"}},"required":["market","timestamp","metrics"]},"Apy":{"type":"string","description":"Borrow interest APY","example":"0.027610992938039702","examples":["0.123","0","1","1.23","-0.5","999999.999999"]},"BorrowAndStakingApyResponse":{"type":"object","properties":{"createdOn":{"allOf":[{"$ref":"#/components/schemas/SnapshotDateTime"},{"description":"Timestamp of the snapshot","example":"2023-10-17T15:00:06.009Z"}]},"borrowInterestApy":{"$ref":"#/components/schemas/Apy"},"stakingApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Staking APY","example":"0.066527842899023711405366628964490454572"}]}},"required":["createdOn","borrowInterestApy","stakingApy"]},"ReserveMetricsResponse":{"type":"object","properties":{"reserve":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Reserve public key","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"liquidityToken":{"type":"string","description":"Liquidity token symbol","example":"SOL"},"liquidityTokenMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Liquidity token mint address","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"maxLtv":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Maximum loan-to-value ratio","example":"0.65"}]},"borrowApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Current borrow APY","example":"0.05450988511483601"}]},"supplyApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Current supply APY","example":"0.038266801210808055"}]},"totalSupply":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total supply amount","example":"1234.56789"}]},"totalBorrow":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total borrow amount","example":"1234.56789"}]},"totalBorrowUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total borrow in USD","example":"1234.56789"}]},"totalSupplyUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total supply in USD","example":"1234.56789"}]}},"required":["reserve","liquidityToken","liquidityTokenMint","maxLtv","borrowApy","supplyApy","totalSupply","totalBorrow","totalBorrowUsd","totalSupplyUsd"]},"LeverageMetricsResponse":{"type":"object","properties":{"avgLeverage":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Average leverage","example":"1234.56789"}]},"totalBorrowed":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total borrowed amount","example":"1234.56789"}]},"totalDeposited":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total deposited amount","example":"1234.56789"}]},"totalBorrowedUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total borrowed in USD","example":"1234.56789"}]},"totalObligations":{"type":"string","description":"Total number of obligations"},"totalDepositedUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total deposited in USD","example":"1234.56789"}]},"tvl":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total Value Locked","example":"1234.56789"}]},"updatedOn":{"type":"string","format":"date-time","description":"Last update timestamp"},"depositReserve":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Deposit reserve public key","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"borrowReserve":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Borrow reserve public key","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"tag":{"type":"string","description":"Tag (Multiply or Leverage)","example":"Multiply"}},"required":["avgLeverage","totalBorrowed","totalDeposited","totalBorrowedUsd","totalObligations","totalDepositedUsd","tvl","updatedOn","depositReserve","borrowReserve","tag"]},"ReserveAccountDataResponse":{"type":"object","properties":{"market":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"reserves":{"type":"array","items":{"type":"object","properties":{"pubkey":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Reserve public key","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"data":{"type":"string","description":"Base64 encoded reserve account data"}},"required":["pubkey","data"]}}},"required":["market","reserves"]},"KlendTransactionResponseV2":{"type":"object","properties":{"createdOn":{"type":["string","null"],"format":"date"},"timestamp":{"type":"number"},"transactionSignature":{"type":"string"},"transactionName":{"type":"string"},"liquidityToken":{"type":"string"},"liquidityTokenMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"liquidityTokenAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]},"liquidityTokenPrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]},"solPrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]},"liquidityUsdValue":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]},"isLiquidationWithdrawal":{"type":"boolean"},"obligation":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"obligationType":{"type":"string"},"transactionDisplayName":{"type":"string"},"isSecondPartOfCompositeIx":{"type":"boolean"}},"required":["createdOn","timestamp","transactionSignature","transactionName","liquidityToken","liquidityTokenMint","liquidityTokenAmount","isLiquidationWithdrawal","obligation","obligationType","transactionDisplayName"]},"KlendTransactionsResponseV2":{"type":"object","properties":{"transactions":{"type":"array","items":{"$ref":"#/components/schemas/KlendTransactionResponseV2"}}},"required":["transactions"]},"KlendTransactionUserResponseV2":{"type":"object","properties":{"createdOn":{"type":["string","null"],"format":"date"},"timestamp":{"type":"number"},"transactionSignature":{"type":"string"},"transactionName":{"type":"string"},"liquidityToken":{"type":"string"},"liquidityTokenMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"liquidityTokenAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]},"liquidityTokenPrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]},"solPrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]},"liquidityUsdValue":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]},"isLiquidationWithdrawal":{"type":"boolean"},"obligationType":{"type":"string"},"transactionDisplayName":{"type":"string"},"isSecondPartOfCompositeIx":{"type":"boolean"}},"required":["createdOn","timestamp","transactionSignature","transactionName","liquidityToken","liquidityTokenMint","liquidityTokenAmount","isLiquidationWithdrawal","obligationType","transactionDisplayName"]},"KlendAllMarketsUserTransactionsItem":{"type":"object","properties":{"market":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"obligations":{"type":"object","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/KlendTransactionUserResponseV2"}}}},"required":["market","obligations"]},"KlendAllMarketsUserTransactionsResponseV2":{"type":"array","items":{"$ref":"#/components/schemas/KlendAllMarketsUserTransactionsItem"}},"KlendUserTransactionsResponseV2":{"type":"object","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/KlendTransactionUserResponseV2"}}},"KlendBulkTxResultItem":{"type":"object","properties":{"ixs":{"type":"array","items":{}},"timestamp":{"type":["string","null"],"format":"date"},"signature":{"type":"string"},"obligation":{"type":"string"},"wallet":{"type":"string"},"rawJson":{"type":"string"}},"required":["ixs","timestamp","signature","obligation","wallet"]},"KlendBulkTxResponse":{"type":"object","properties":{"result":{"type":"array","items":{"$ref":"#/components/schemas/KlendBulkTxResultItem"}},"paginationToken":{"type":"string","description":"Token for next page. Absent when no more results."}},"required":["result"]},"KlendBulkTxBody":{"type":"object","properties":{"start":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Date input (ISO 8601 string or epoch in ms)","examples":["2024-01-01T00:00:00.000Z",1704067200000],"example":"2020-01-01T00:00Z"},"end":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Date input (ISO 8601 string or epoch in ms)","examples":["2024-01-01T00:00:00.000Z",1704067200000],"example":"2020-02-01T00:00Z"},"instruction":{"type":"string","description":"Instruction name to filter by","example":"depositReserveLiquidityAndObligationCollateralV2"},"paginationToken":{"type":"string","example":"eyJsYXN0SWQiOiIxMjM0In0=","description":"Pagination token for next page"}},"required":["instruction"]},"MarketConfigResponseV2":{"type":"object","properties":{"name":{"type":"string","description":"Market name","example":"Main Market"},"isPrimary":{"type":"boolean","description":"Whether this is a primary market","example":true},"description":{"type":"string","description":"Market description","example":"Primary market on mainnet"},"lendingMarket":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Lending market public key","example":"7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF"}]},"lookupTable":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Lookup table address","example":"FGMSBiyVE8TvZcdQnZETAAKw28tkQJ2ccZy6pyp95URb"}]},"isCurated":{"type":"boolean","description":"Whether this market is curated","example":false}},"required":["name","isPrimary","description","lendingMarket","lookupTable","isCurated"]},"PnlResponse":{"type":"object","properties":{"usd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"PnL in USD","example":"25.21"}]},"sol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"PnL in SOL","example":"1.0"}]},"invested":{"type":"object","properties":{"usd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]},"sol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]}},"required":["usd","sol"],"description":"Invested amounts"}},"required":["usd","sol"]},"TotalInterestFees":{"type":"object","properties":{"ts":{"type":"number","description":"Timestamp in milliseconds","example":1762128000000},"solFees":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total fees in SOL","example":"0.00001610553929183891699891935039215032176993"}]},"usdFees":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total fees in USD","example":"0.003058858072628656437082436052718601394968"}]}},"required":["ts","solFees","usdFees"]},"TotalFeesObligation":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/TotalInterestFees"},"description":"Total interest fees earned per obligation","example":{"uy9LQEjELMp8r3qpb7fJhu2Y32ydAxTEo74VAEZ6EHQs":{"ts":1762128000000,"solFees":"0.00001610553929183891699891935039215032176993","usdFees":"0.003058858072628656437082436052718601394968"}}},"InterestFees":{"type":"object","properties":{"ts":{"type":"number","description":"Timestamp in milliseconds","example":1762128000000},"solFees":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Fees in SOL","example":"0.00001610553929183891699891935039215032176993"}]},"usdFees":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Fees in USD","example":"0.003058858072628656437082436052718601394968"}]},"nativeFees":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Fees in native token units","example":"0"}]}},"required":["ts","solFees","usdFees","nativeFees"]},"TokenInterestFees":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/InterestFees"},"description":"Historical fees breakdown by reserve. Key is the reserve address.","example":{"d4A2prbA2whesmvHaL88BH6Ewn5N4bTSU2Ze8P6Bc4Q":{"ts":1760745600000,"solFees":"0","usdFees":"0","nativeFees":"0"}}},"HistoricalFeesObligation":{"type":"object","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/TokenInterestFees"}},"description":"Historical breakdown of interest fees earned over time"},"InterestRateEarnedResponse":{"type":"object","properties":{"totalFeesEarnedObligation":{"$ref":"#/components/schemas/TotalFeesObligation"},"historicalFeesObligation":{"$ref":"#/components/schemas/HistoricalFeesObligation"}},"required":["totalFeesEarnedObligation","historicalFeesObligation"]},"InterestRatePaidResponse":{"type":"object","properties":{"totalFeesPaidObligation":{"allOf":[{"$ref":"#/components/schemas/TotalFeesObligation"},{"description":"Total interest fees paid per obligation"}]},"historicalFeesObligation":{"allOf":[{"$ref":"#/components/schemas/HistoricalFeesObligation"},{"description":"Historical breakdown of interest fees paid over time"}]}},"required":["totalFeesPaidObligation","historicalFeesObligation"]},"ObligationStats":{"type":"object","properties":{"leverage":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Leverage ratio of the obligation","example":"1.0580080950430842892"}]},"borrowLimit":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Maximum borrow limit","example":"1.3496969599567630906"}]},"loanToValue":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Current loan-to-value ratio","example":"0.054827647647367082766"}]},"liquidationLtv":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Liquidation loan-to-value threshold","example":"0.75000000000000000001"}]},"netAccountValue":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Net account value","example":"1.7239138521696367095"}]},"userTotalBorrow":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total amount borrowed by the user","example":"0.10000095858274584538"}]},"userTotalDeposit":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total amount deposited by the user","example":"1.8239148107523825549"}]},"borrowUtilization":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Borrow utilization ratio","example":"0.074091415739685246983"}]},"borrowLiquidationLimit":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Borrow liquidation limit","example":"1.3679361080642869162"}]},"userTotalCollateralDeposit":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total collateral deposited by the user","example":"1.8239148107523825549"}]},"userTotalLiquidatableDeposit":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total liquidatable deposit amount","example":"1.8239148107523825549"}]},"potentialElevationGroupUpdate":{"type":"number","description":"Potential elevation group update indicator","example":0},"userTotalBorrowBorrowFactorAdjusted":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total borrow adjusted by borrow factor","example":"0.10000095858274584538"}]}},"required":["leverage","borrowLimit","loanToValue","liquidationLtv","netAccountValue","userTotalBorrow","userTotalDeposit","borrowUtilization","borrowLiquidationLimit","userTotalCollateralDeposit","userTotalLiquidatableDeposit","potentialElevationGroupUpdate","userTotalBorrowBorrowFactorAdjusted"],"description":"Refreshed obligation statistics"},"Position":{"type":"object","properties":{"amount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount in the position","example":"10000708.005624756258"}]},"mintAddress":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Token mint address","example":"So11111111111111111111111111111111111111112"}]},"marketValueRefreshed":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Refreshed market value of the position","example":"1.8239148107523825549"}]}},"required":["amount","mintAddress","marketValueRefreshed"]},"ObligationSolValues":{"type":"object","properties":{"netValueSol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Net value in SOL","example":"0.009469142566566941841900274495955292427975"}]},"collateralValueSol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Collateral value in SOL","example":"0.01001842948854487210536205388880118310325"}]},"debtValueSol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Debt value in SOL","example":"0.0005492869219779302633519230615141419874818"}]},"solPrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"SOL price in USD","example":"182.05596125"}]},"timestampSolPrice":{"allOf":[{"$ref":"#/components/schemas/SnapshotDateTime"},{"description":"Timestamp of the SOL price","example":"2025-10-17T00:00:00.000Z"}]},"timestampObligation":{"allOf":[{"$ref":"#/components/schemas/SnapshotDateTime"},{"description":"Timestamp of the obligation snapshot","example":"2025-10-17T00:00:00.000Z"}]}},"required":["netValueSol","collateralValueSol","debtValueSol","solPrice","timestampSolPrice","timestampObligation"],"description":"Obligation values denominated in SOL"},"ObligationMetrics":{"type":"object","properties":{"timestamp":{"allOf":[{"$ref":"#/components/schemas/SnapshotDateTime"},{"example":"2025-10-17T00:00:00.000Z"}]},"refreshedStats":{"$ref":"#/components/schemas/ObligationStats"},"deposits":{"type":"array","items":{"$ref":"#/components/schemas/Position"},"description":"Array of deposit positions"},"borrows":{"type":"array","items":{"$ref":"#/components/schemas/Position"},"description":"Array of borrow positions"},"tag":{"type":"integer","minimum":0,"maximum":3,"description":"Obligation type tag (0 = Vanilla, 1 = Multiply, 2 = Lending, 3 = Leverage)","example":0},"obligationSolValues":{"$ref":"#/components/schemas/ObligationSolValues"}},"required":["timestamp","refreshedStats","deposits","borrows","tag","obligationSolValues"]},"ObligationMetricsHistoryResponse":{"type":"object","properties":{"obligation":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Obligation public key","example":"3HdrCvoJ91bwgVTejdDXfguo6S2A9jjUkBR5fasq4WhB"}]},"history":{"type":"array","items":{"$ref":"#/components/schemas/ObligationMetrics"},"description":"Historical metrics for the obligation"}},"required":["obligation","history"]},"BorrowOrderFill":{"type":"object","properties":{"eventType":{"type":"string","enum":["partial_fill","full_fill"],"description":"Type of fill event","example":"partial_fill"},"eventTimestamp":{"type":["string","null"],"format":"date","description":"Timestamp of the on-chain transaction"},"transactionSignature":{"type":"string","description":"Transaction signature","example":"2XWcSQVtR4NoHBhzYpDkYkmYtEFkFXC5ZwrKiPok1kvA86GvnN15qP7RNP6eTeNWgJqgnR1GA2M3QPp1hucW7e1v"},"debtLiquidityMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Debt liquidity token mint","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"filledAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount filled in this event (difference of remaining debt before and after)","example":"1234.56789"}]}},"required":["eventType","eventTimestamp","transactionSignature","debtLiquidityMint","filledAmount"]},"BorrowOrderFillsResponse":{"type":"object","properties":{"fills":{"type":"array","items":{"$ref":"#/components/schemas/BorrowOrderFill"}}},"required":["fills"]},"ObligationDeposit":{"type":"object","properties":{"depositReserve":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Reserve address the collateral is deposited to","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"depositedAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount of collateral deposited","example":"1234.56789"}]}},"required":["depositReserve","depositedAmount"]},"OpenBorrowOrder":{"type":"object","properties":{"obligationPubkey":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Obligation public key","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"owner":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Obligation owner wallet","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"deposits":{"type":"array","items":{"$ref":"#/components/schemas/ObligationDeposit"},"description":"Active collateral deposits backing this obligation"},"debtLiquidityMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Debt liquidity token mint","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"remainingDebtAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Remaining debt amount to be filled, in lamports","example":"1234.56789"}]},"requestedDebtAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Originally requested debt amount, in lamports","example":"1234.56789"}]},"filledDebtDestination":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Token account where filled funds are sent","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"maxBorrowRateBps":{"type":"number","description":"Maximum borrow rate the owner agrees to, in bps"},"minDebtTermSeconds":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Minimum debt term the owner agrees to, in seconds","example":"1234.56789"}]},"fillableUntilTimestamp":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Unix timestamp until which the order can be filled","example":"1234.56789"}]},"placedAtTimestamp":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Unix timestamp when the order was placed","example":"1234.56789"}]},"lastUpdatedAtTimestamp":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Unix timestamp when the order was last updated","example":"1234.56789"}]}},"required":["obligationPubkey","owner","deposits","debtLiquidityMint","remainingDebtAmount","requestedDebtAmount","filledDebtDestination","maxBorrowRateBps","minDebtTermSeconds","fillableUntilTimestamp","placedAtTimestamp","lastUpdatedAtTimestamp"]},"ObligationsWithOpenBorrowOrdersResponse":{"type":"object","properties":{"obligations":{"type":"array","items":{"$ref":"#/components/schemas/OpenBorrowOrder"}}},"required":["obligations"]},"Apr":{"type":"string","description":"APR in decimal format (not percentage) represented as string. Multiply by 100 to get percentage (%) - 0.1 in API response is 10%.","example":"0.2","examples":["0.123","0","1","1.23","-0.5","999999.999999"]},"YieldHistoryItem":{"type":"object","properties":{"createdOn":{"allOf":[{"$ref":"#/components/schemas/SnapshotDateTime"},{"description":"Timestamp when the snapshot was created (ISO 8601 format)","example":"2025-03-01T12:00:00.000Z"}]},"apr":{"$ref":"#/components/schemas/Apr"},"apy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"APY in decimal format (not percentage) represented as string. Multiply by 100 to get percentage (%) - 0.1 in API response is 10%.","example":"0.2"}]}},"required":["createdOn","apr","apy"]},"YieldHistoryResponse":{"type":"array","items":{"$ref":"#/components/schemas/YieldHistoryItem"}},"PtYieldItem":{"type":"object","properties":{"apy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"APY in decimal format (not percentage) represented as string. Multiply by 100 to get percentage (%) - 0.1 in API response is 10%.","example":"0.2"}]},"tokenMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address of the token mint","example":"So11111111111111111111111111111111111111112","examples":["So11111111111111111111111111111111111111112","EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"]}]}},"required":["apy","tokenMint"]},"PtYieldsResponse":{"type":"array","items":{"$ref":"#/components/schemas/PtYieldItem"}},"AirdropAllocation":{"type":"object","properties":{"quantity":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Quantity of tokens allocated to the user for the airdrop","example":"1234.56789"}]},"name":{"type":"string","description":"Name of the airdrop allocation source","example":"main"}},"required":["quantity","name"]},"Integer":{"type":"string","description":"Total number of unique users participating in the airdrop","example":"1","examples":["0","1","100","1.0"]},"AirdropMetrics":{"type":"object","properties":{"totalAllocation":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total allocated amount across all users for this airdrop","example":"1234.56789"}]},"totalUsers":{"$ref":"#/components/schemas/Integer"},"claimDate":{"allOf":[{"$ref":"#/components/schemas/SnapshotDateTime"},{"description":"Date when the airdrop claim becomes available or was executed","example":"2025-03-01T12:00:00.000Z"}]}},"required":["totalAllocation","totalUsers","claimDate"]},"StakingYield":{"type":"object","properties":{"apy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Staking APY in decimal format for the token","example":"0.2"}]},"tokenMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address of the liquid staking token mint","example":"J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn","examples":["J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn","mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So","pSo1f9nQXWgXibFtKf7NWYxb5enAM4qfP6UJSiXRQfL"]}]}},"required":["apy","tokenMint"]},"Epoch":{"type":"object","properties":{"epoch":{"type":"number","description":"Epoch identifier","example":678},"firstSlot":{"type":"number","description":"First slot number of the epoch","example":"123456789"},"lastSlot":{"type":"number","description":"Last slot number of the epoch","example":"123999999"},"startBlockTime":{"allOf":[{"$ref":"#/components/schemas/SnapshotDateTime"},{"description":"UTC timestamp when the epoch started","example":"2025-03-01T12:00:00.000Z"}]},"endBlockTime":{"allOf":[{"$ref":"#/components/schemas/SnapshotDateTime"},{"description":"UTC timestamp when the epoch ended","example":"2025-03-01T12:00:00.000Z"}]}},"required":["epoch","firstSlot","lastSlot","startBlockTime","endBlockTime"]},"KVaultInstruction":{"type":"object","properties":{"createdOn":{"type":"string","format":"date","description":"Date when the instruction was created"},"instruction":{"type":"string","description":"Type of instruction"},"tokenMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Token mint address","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"tokenAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount of tokens involved","example":"1234.56789"}]},"tokenPrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Price of the token at the time of instruction","example":"1234.56789"}]},"solPrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Price of SOL at the time of instruction","example":"1234.56789"}]},"sharePrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Price per share at the time of instruction","example":"1234.56789"}]},"numberOfShares":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Number of shares involved","example":"1234.56789"}]},"usdValue":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"USD value of the transaction","example":"1234.56789"}]},"transaction":{"type":"string","description":"Transaction signature"},"kvault":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"KVault identifier","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"latestPosition":{"type":"boolean","description":"Indicates if this is the latest position"}},"required":["createdOn","instruction","tokenMint","tokenAmount","tokenPrice","solPrice","sharePrice","numberOfShares","usdValue","transaction","kvault","latestPosition"]},"KvaultEnrichedInstruction":{"type":"object","properties":{"market":{"type":"string","description":"KLend market public key","example":"EyV4jxSMd6vpuRgrxMFem7CKRhcB4Vv6WMRDtxPQNP4"},"reserve":{"type":"string","description":"KLend reserve public key","example":"ALnjBHECcdBsSwgVJ6A8pFEZ15qxE5jJQriCXSKT3Bte"},"solPrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]},"sharePrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]},"tokenPrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]},"tokenAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]},"numberOfShares":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]}},"required":["solPrice","sharePrice","tokenPrice","tokenAmount","numberOfShares"],"description":"Enriched kvault instruction object","example":{"tokenAmount":"835.924775","numberOfShares":"814.34612","solPrice":"138.7776002","sharePrice":"1.0263403430350673002","tokenPrice":"0.99984713"}},"KvaultBulkTransaction":{"type":"object","properties":{"ix":{"$ref":"#/components/schemas/KvaultEnrichedInstruction"},"timestamp":{"allOf":[{"$ref":"#/components/schemas/SnapshotDateTime"},{"description":"Timestamp when the transaction was executed (ISO 8601 format)","example":"2025-03-01T12:00:00.000Z"}]},"signature":{"type":"string","description":"Transaction signature","example":"2XWcSQVtR4NoHBhzYpDkYkmYtEFkFXC5ZwrKiPok1kvA86GvnN15qP7RNP6eTeNWgJqgnR1GA2M3QPp1hucW7e1v"},"kvault":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address of the vault","example":"HDsayqAsDWy3QvANGqh2yNraqcD8Fnjgh73Mhb3WRS5E"}]},"wallet":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address of the user wallet","example":"AxqtG9SHDkZTLSWg81Sp7VqAzQpRqXtR9ziJ3VQAS8As"}]},"rawJson":{"type":"string","description":"Entire raw JSON of the instruction"}},"required":["ix","timestamp","signature","kvault","wallet"]},"KvaultVaultEnrichedInstruction":{"type":"object","properties":{"market":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"KLend market public key","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"reserve":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"KLend reserve public key","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"solPrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]},"sharePrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]},"tokenPrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]},"tokenAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]},"numberOfShares":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]}},"required":["solPrice","sharePrice","tokenPrice","tokenAmount","numberOfShares"]},"KvaultVaultTransaction":{"type":"object","properties":{"ix":{"$ref":"#/components/schemas/KvaultVaultEnrichedInstruction"},"timestamp":{"allOf":[{"$ref":"#/components/schemas/SnapshotDateTime"},{"description":"Timestamp when the transaction was executed (ISO 8601 format)","example":"2025-03-01T12:00:00.000Z"}]},"signature":{"type":"string","description":"Transaction signature","example":"2XWcSQVtR4NoHBhzYpDkYkmYtEFkFXC5ZwrKiPok1kvA86GvnN15qP7RNP6eTeNWgJqgnR1GA2M3QPp1hucW7e1v"},"kvault":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address of the vault","example":"HDsayqAsDWy3QvANGqh2yNraqcD8Fnjgh73Mhb3WRS5E"}]},"wallet":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address of the user wallet","example":"AxqtG9SHDkZTLSWg81Sp7VqAzQpRqXtR9ziJ3VQAS8As"}]}},"required":["ix","timestamp","signature","kvault","wallet"]},"KvaultVaultTransactionsResponse":{"type":"object","properties":{"result":{"type":"array","items":{"$ref":"#/components/schemas/KvaultVaultTransaction"}},"paginationToken":{"type":"string","example":"eyJsYXN0SWQiOjgxfQ==","description":"Optional pagination token"}},"required":["result"]},"The vault state object":{"type":"object","properties":{"vaultAdminAuthority":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the vault admin authority","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"baseVaultAuthority":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the base vault authority","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"baseVaultAuthorityBump":{"type":"number","description":"Bump seed for the base vault authority"},"tokenMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the token mint","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"tokenMintDecimals":{"type":"number","description":"Decimals of the token mint"},"tokenVault":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the token vault","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"tokenProgram":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the token program","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"sharesMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the shares mint","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"sharesMintDecimals":{"type":"number","description":"Decimals of the shares mint"},"tokenAvailable":{"type":"string","description":"Amount of tokens available in the vault"},"sharesIssued":{"type":"string","description":"Total shares issued by the vault"},"availableCrankFunds":{"type":"string","description":"Available crank funds in the vault"},"performanceFeeBps":{"type":"number","description":"Performance fee in basis points"},"managementFeeBps":{"type":"number","description":"Management fee in basis points"},"lastFeeChargeTimestamp":{"type":"number","description":"Timestamp of the last fee charge"},"prevAum":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Previous assets under management scaled factor","example":"1234.56789"}]},"pendingFees":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Pending fees scaled factor","example":"1234.56789"}]},"vaultAllocationStrategy":{"type":"array","items":{"type":"object","properties":{"reserve":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the reserve","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"ctokenVault":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the cToken vault","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"targetAllocationWeight":{"type":"number","description":"Target allocation weight as a whole number"},"tokenAllocationCap":{"type":"string","description":"Token allocation cap in lamports"},"ctokenVaultBump":{"type":"number","description":"cToken vault bump seed"},"ctokenAllocation":{"type":"string","description":"cToken allocation in lamports"},"lastInvestSlot":{"type":"string","description":"Last invest slot"},"tokenTargetAllocation":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Token target allocation scaled factor","example":"1234.56789"}]}},"required":["reserve","ctokenVault","targetAllocationWeight","tokenAllocationCap","ctokenVaultBump","ctokenAllocation","lastInvestSlot","tokenTargetAllocation"],"description":"Vault allocation strategy entry"},"description":"List of vault allocation strategies"},"minDepositAmount":{"type":"string","description":"Minimum deposit amount in lamports"},"minWithdrawAmount":{"type":"string","description":"Minimum withdraw amount in lamports"},"minInvestAmount":{"type":"string","description":"Minimum invest amount in lamports"},"minInvestDelaySlots":{"type":"number","description":"Minimum invest delay in slots"},"crankFundFeePerReserve":{"type":"string","description":"Crank fund fee per reserve"},"pendingAdmin":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the pending admin","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"cumulativeEarnedInterest":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Cumulative earned interest in decimal format","example":"1234.56789"}]},"cumulativeMgmtFees":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Cumulative management fees in decimal format","example":"1234.56789"}]},"cumulativePerfFees":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Cumulative performance fees in decimal format","example":"1234.56789"}]},"name":{"type":"string","description":"Name of the vault"},"vaultLookupTable":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the vault lookup table","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"vaultFarm":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the vault farm","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"creationTimestamp":{"type":"number","description":"Timestamp of vault creation"},"allocationAdmin":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the allocation admin","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]}},"required":["vaultAdminAuthority","baseVaultAuthority","baseVaultAuthorityBump","tokenMint","tokenMintDecimals","tokenVault","tokenProgram","sharesMint","sharesMintDecimals","tokenAvailable","sharesIssued","availableCrankFunds","performanceFeeBps","managementFeeBps","lastFeeChargeTimestamp","prevAum","pendingFees","vaultAllocationStrategy","minDepositAmount","minWithdrawAmount","minInvestAmount","minInvestDelaySlots","crankFundFeePerReserve","pendingAdmin","cumulativeEarnedInterest","cumulativeMgmtFees","cumulativePerfFees","name","vaultLookupTable","vaultFarm","creationTimestamp","allocationAdmin"]},"VaultStateArray":{"type":"array","items":{"type":"object","properties":{"address":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the vault","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"state":{"$ref":"#/components/schemas/The vault state object"},"programId":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the kvault program which owns the vault","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]}},"required":["address","state","programId"]}},"KvaultMetrics":{"type":"object","properties":{"apy7d":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"7-day Annual Percentage Yield of the kvault","example":"0.2"}]},"apy24h":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"24-hour Annual Percentage Yield of the kvault","example":"0.2"}]},"apy30d":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"30-day Annual Percentage Yield of the kvault","example":"0.2"}]},"apy90d":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"90-day Annual Percentage Yield of the kvault","example":"0.2"}]},"apy180d":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"180-day Annual Percentage Yield of the kvault","example":"0.2"}]},"apy365d":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"365-day Annual Percentage Yield of the kvault","example":"0.2"}]},"tokenPrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Price of the kvault token","example":"1234.56789"}]},"solPrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Price of SOL","example":"1234.56789"}]},"tokensAvailable":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Number of tokens available in the kvault","example":"1234.56789"}]},"tokensAvailableUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"USD value of tokens available in the kvault","example":"1234.56789"}]},"tokensInvested":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Number of tokens invested in the kvault","example":"1234.56789"}]},"tokensInvestedUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"USD value of tokens invested in the kvault","example":"1234.56789"}]},"sharePrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Price per share of the kvault","example":"1234.56789"}]},"tokensPerShare":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Number of tokens per share in the kvault","example":"1234.56789"}]},"apy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield of the kvault","example":"0.2"}]},"apyTheoretical":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Theoretical Annual Percentage Yield of the kvault","example":"0.2"}]},"apyActual":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Actual Annual Percentage Yield of the kvault","example":"0.2"}]},"apyFarmRewards":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield from farm rewards in the kvault","example":"0.2"}]},"apyIncentives":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield from incentives in the kvault","example":"0.2"}]},"apyReservesIncentives":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield from reserves incentives in the kvault","example":"0.2"}]},"numberOfHolders":{"type":"number","description":"Number of holders of the kvault"},"sharesIssued":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total shares issued by the kvault","example":"1234.56789"}]},"cumulativeInterestEarned":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Cumulative interest earned in the kvault token amount","example":"1234.56789"}]},"cumulativeInterestEarnedUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Cumulative interest earned in USD for the kvault","example":"1234.56789"}]},"cumulativeInterestEarnedSol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Cumulative interest earned in SOL for the kvault","example":"1234.56789"}]},"interestEarnedPerSecond":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Interest earned per second in the kvault token amount","example":"1234.56789"}]},"interestEarnedPerSecondUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Interest earned per second in USD for the kvault","example":"1234.56789"}]},"interestEarnedPerSecondSol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Interest earned per second in SOL for the kvault","example":"1234.56789"}]},"cumulativePerformanceFees":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Cumulative performance fees in the kvault token amount","example":"1234.56789"}]},"cumulativePerformanceFeesUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Cumulative performance fees in USD for the kvault","example":"1234.56789"}]},"cumulativePerformanceFeesSol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Cumulative performance fees in SOL for the kvault","example":"1234.56789"}]},"cumulativeManagementFees":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Cumulative management fees in the kvault token amount","example":"1234.56789"}]},"cumulativeManagementFeesUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Cumulative management fees in USD for the kvault","example":"1234.56789"}]},"cumulativeManagementFeesSol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Cumulative management fees in SOL for the kvault","example":"1234.56789"}]}},"required":["apy7d","apy24h","apy30d","apy90d","apy180d","apy365d","tokenPrice","solPrice","tokensAvailable","tokensAvailableUsd","tokensInvested","tokensInvestedUsd","sharePrice","tokensPerShare","apy","apyTheoretical","apyActual","apyFarmRewards","apyIncentives","apyReservesIncentives","numberOfHolders","sharesIssued","cumulativeInterestEarned","cumulativeInterestEarnedUsd","cumulativeInterestEarnedSol","interestEarnedPerSecond","interestEarnedPerSecondUsd","interestEarnedPerSecondSol","cumulativePerformanceFees","cumulativePerformanceFeesUsd","cumulativePerformanceFeesSol","cumulativeManagementFees","cumulativeManagementFeesUsd","cumulativeManagementFeesSol"]},"UserKVaultTotal":{"type":"object","properties":{"createdOn":{"allOf":[{"$ref":"#/components/schemas/SnapshotDateTime"},{"description":"Timestamp when the snapshot was created (ISO 8601 format)","example":"2025-03-01T12:00:00.000Z"}]},"usdAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"User's total amount across all vaults in USD","example":"1234.56789"}]},"solAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"User's total amount across all vaults in SOL","example":"1234.56789"}]},"weightedApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Weighted average APY across all vaults in decimal format","example":"0.2"}]},"cumulativeInterestEarnedUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total interest earned in USD across all vaults","example":"1234.56789"}]},"cumulativeInterestEarnedSol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total interest earned in SOL across all vaults","example":"1234.56789"}]},"interestEarnedPerSecondUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Interest earned per second at that specific moment in USD","example":"1234.56789"}]},"interestEarnedPerSecondSol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Interest earned per second at that specific moment in SOL","example":"1234.56789"}]}},"required":["createdOn","usdAmount","solAmount","weightedApy","cumulativeInterestEarnedUsd","cumulativeInterestEarnedSol","interestEarnedPerSecondUsd","interestEarnedPerSecondSol"]},"UserKvaultMetrics":{"type":"object","properties":{"createdOn":{"allOf":[{"$ref":"#/components/schemas/SnapshotDateTime"},{"description":"Timestamp when the snapshot was created (ISO 8601 format)","example":"2025-03-01T12:00:00.000Z"}]},"sharesAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"User's total shares amount","example":"1234.56789"}]},"usdAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"User's USD amount in kvault","example":"1234.56789"}]},"solAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"User's SOL amount in kvault","example":"1234.56789"}]},"apy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"APY in decimal format (not percentage) represented as string. Multiply by 100 to get percentage (%) - 0.1 in API response is 10%.","example":"0.2"}]},"cumulativeInterestEarned":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total interest earned in kvault token amount for kvault","example":"1234.56789"}]},"cumulativeInterestEarnedUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total interest earned in USD for kvault","example":"1234.56789"}]},"cumulativeInterestEarnedSol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total interest earned in SOL for kvault","example":"1234.56789"}]},"interestEarnedPerSecond":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Interest earned per second at that specific moment in token","example":"1234.56789"}]},"interestEarnedPerSecondUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Interest earned per second at that specific moment in USD","example":"1234.56789"}]},"interestEarnedPerSecondSol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Interest earned per second at that specific moment in SOL","example":"1234.56789"}]}},"required":["createdOn","sharesAmount","usdAmount","solAmount","apy","cumulativeInterestEarned","cumulativeInterestEarnedUsd","cumulativeInterestEarnedSol","interestEarnedPerSecond","interestEarnedPerSecondUsd","interestEarnedPerSecondSol"]},"KvaultMultiValue":{"type":"object","properties":{"usd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Value in USD","example":"1234.56789"}]},"sol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Value in SOL","example":"1234.56789"}]},"token":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Value in token denomination","example":"1234.56789"}]}},"required":["usd","sol","token"]},"KvaultPnl":{"type":"object","properties":{"totalPnl":{"$ref":"#/components/schemas/KvaultMultiValue"},"totalCostBasis":{"$ref":"#/components/schemas/KvaultMultiValue"}},"required":["totalPnl","totalCostBasis"]},"KvaultPnlTimeseriesValue":{"type":"object","properties":{"timestamp":{"type":"number","description":"Unix timestamp in milliseconds"},"type":{"anyOf":[{"type":"string","enum":["buy"]},{"type":"string","enum":["sell"]},{"type":"string","enum":["mark-to-market"]}]},"position":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Current position value","example":"1234.56789"}]},"quantity":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Quantity involved in transaction","example":"1234.56789"}]},"tokenPrice":{"allOf":[{"$ref":"#/components/schemas/KvaultMultiValue"},{"description":"Token price snapshot"}]},"sharePrice":{"allOf":[{"$ref":"#/components/schemas/KvaultMultiValue"},{"description":"Share price snapshot"}]},"costBasis":{"allOf":[{"$ref":"#/components/schemas/KvaultMultiValue"},{"description":"Cost basis for position"}]},"realizedPnl":{"allOf":[{"$ref":"#/components/schemas/KvaultMultiValue"},{"description":"Realized profit/loss"}]},"pnl":{"allOf":[{"$ref":"#/components/schemas/KvaultMultiValue"},{"description":"Total profit/loss"}]},"positionValue":{"allOf":[{"$ref":"#/components/schemas/KvaultMultiValue"},{"description":"Value of the position"}]},"investment":{"allOf":[{"$ref":"#/components/schemas/KvaultMultiValue"},{"description":"Total invested value"}]}},"required":["timestamp","type","position","quantity","tokenPrice","sharePrice","costBasis","realizedPnl","pnl","positionValue","investment"]},"FoundLuts":{"type":"object","properties":{"lutAddresses":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"description":"List of Lookup Table addresses that together cover the requested addresses"}},"required":["lutAddresses"]},"FindLutsForAddresses":{"type":"object","properties":{"addresses":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"minItems":1,"maxItems":100,"description":"Addresses to find in LUTs (max 100)"},"verify":{"type":"boolean","default":true,"description":"Whether to verify that LUTs are active on-chain (defaults to true)","example":false},"userAccounts":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"maxItems":100,"default":[],"description":"User-specific accounts (e.g. ATAs, token accounts). These are still searched in LUTs but are excluded from missing account tracking."}},"required":["addresses"]},"ManagedLutResponse":{"type":"object","properties":{"productIdentifierAddress":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"The product identifier address","example":"6KhEbVjFg8bNkpTSyEfGJhMGtv2bRQiAKKbKZLPvrBFm"}]},"lutAddresses":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"description":"Active lookup table addresses","example":["3Kz4sMiBCxg7JdCCjwRTHtFsQRqJCSKh5pVERhPfMzYF"]}},"required":["productIdentifierAddress","lutAddresses"]},"ManagedLutBatchResponse":{"type":"array","items":{"$ref":"#/components/schemas/ManagedLutResponse"}},"LutProductType":{"type":"string","enum":["swap_pair","vault","strategy","market","meta_vault"],"description":"The type of product associated with a managed lookup table","example":"vault"},"ManagedLutByTypeResponse":{"type":"array","items":{"type":"object","properties":{"productIdentifierAddress":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"productType":{"$ref":"#/components/schemas/LutProductType"},"lutAddresses":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]}}},"required":["productIdentifierAddress","productType","lutAddresses"]}},"NewVaultResponse":{"type":"object","properties":{"productId":{"type":"number","description":"The created/existing product ID","example":1},"vaultAddress":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Vault account address","example":"6KhEbVjFg8bNkpTSyEfGJhMGtv2bRQiAKKbKZLPvrBFm"}]},"lutAddress":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Lookup table address","example":"3Kz4sMiBCxg7JdCCjwRTHtFsQRqJCSKh5pVERhPfMzYF"}]},"lutEntryId":{"type":"number","description":"The created/existing LUT entry ID","example":1}},"required":["productId","vaultAddress","lutAddress","lutEntryId"]},"KvaultUserRewardMetric":{"type":"object","properties":{"avgBaseApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Average Base Annual Percentage Yield for the user","example":"0.2"}]},"avgBoostedApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Average Boosted Annual Percentage Yield for the user","example":"0.2"}]},"avgMaxApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Average Max Annual Percentage Yield for the user","example":"0.2"}]},"rewardMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Mint address of the reward token","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"lastCalculated":{"type":"string","format":"date","description":"Timestamp of the last calculation"},"tokensEarned":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total number of reward tokens earned by the user","example":"1234.56789"}]},"tokensPerSecond":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Number of reward tokens distributed per second to the user","example":"1234.56789"}]},"stakingBoost":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Staking boost percentage applied to the user","example":"1234.56789"}]},"effectiveStakingBoost":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Effective staking boost percentage for the user","example":"1234.56789"}]},"baseApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Base Annual Percentage Yield from rewards for the user","example":"0.2"}]},"boostedApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Boosted Annual Percentage Yield from rewards for the user","example":"0.2"}]},"maxApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Max Annual Percentage Yield from rewards for the user","example":"0.2"}]},"usdAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total USD amount of rewards earned by the user without boost","example":"1234.56789"}]},"usdAmountBoosted":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total USD amount of rewards earned by the user with boost applied","example":"1234.56789"}]}},"required":["avgBaseApy","avgBoostedApy","avgMaxApy","rewardMint","lastCalculated","tokensEarned","tokensPerSecond","stakingBoost","effectiveStakingBoost","baseApy","boostedApy","maxApy","usdAmount","usdAmountBoosted"]},"KvaultUserRewardMetrics":{"type":"array","items":{"$ref":"#/components/schemas/KvaultUserRewardMetric"},"description":"List of kvault user reward metrics"},"KvaultRewardMetric":{"type":"object","properties":{"kvault":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Address of the kvault","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"rewardToken":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Mint address of the reward token","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"lastCalculated":{"type":"string","format":"date","description":"Timestamp of the last calculation"},"apy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield from rewards in the kvault","example":"0.2"}]},"tokensPerSecond":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Number of reward tokens distributed per second","example":"1234.56789"}]}},"required":["kvault","rewardToken","lastCalculated","apy","tokensPerSecond"]},"KvaultRewardMetrics":{"type":"array","items":{"$ref":"#/components/schemas/KvaultRewardMetric"},"description":"List of kvault reward metrics"},"StakingBoost":{"type":"object","properties":{"boost":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Boost multiplier value for the staking position in decimal format (multiply by 100 to get percentage %)","example":"1234.56789"}]},"name":{"type":"string","description":"Staking boost source name","example":"staking_boost"},"farm":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Optional farm identifier associated with the boost","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]}},"required":["boost","name"]},"KlendUserRewardMetric":{"type":"object","properties":{"depositReserve":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"type":["string","null"],"description":"Deposit reserve public key, if applicable","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"borrowReserve":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"type":["string","null"],"description":"Borrow reserve public key, if applicable","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"market":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"rewardMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Mint address of the reward token","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"lastCalculated":{"type":"string","format":"date","description":"Timestamp of the last calculation"},"tokensEarned":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total number of reward tokens earned by the user","example":"1234.56789"}]},"tokensPerSecond":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Number of reward tokens distributed per second to the user","example":"1234.56789"}]},"stakingBoost":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Staking boost percentage applied to the user","example":"1234.56789"}]},"effectiveStakingBoost":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Effective staking boost percentage for the user","example":"1234.56789"}]},"baseApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Base Annual Percentage Yield from rewards for the user","example":"0.2"}]},"boostedApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Boosted Annual Percentage Yield from rewards for the user","example":"0.2"}]},"maxApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Max Annual Percentage Yield from rewards for the user","example":"0.2"}]},"usdAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total USD amount of rewards earned by the user without boost","example":"1234.56789"}]},"usdAmountBoosted":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total USD amount of rewards earned by the user with boost applied","example":"1234.56789"}]}},"required":["depositReserve","borrowReserve","market","rewardMint","lastCalculated","tokensEarned","tokensPerSecond","stakingBoost","effectiveStakingBoost","baseApy","boostedApy","maxApy","usdAmount","usdAmountBoosted"]},"KlendUserRewardMetrics":{"type":"object","properties":{"avgBaseApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Weighted average Base Annual Percentage Yield for the user","example":"0.2"}]},"avgBoostedApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Weighted average Boosted Annual Percentage Yield for the user","example":"0.2"}]},"avgMaxApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Weighted average Max Annual Percentage Yield for the user","example":"0.2"}]},"rewards":{"type":"array","items":{"$ref":"#/components/schemas/KlendUserRewardMetric"},"description":"List of klend user reward metrics"}},"required":["avgBaseApy","avgBoostedApy","avgMaxApy","rewards"]},"KlendRewardMetric":{"type":"object","properties":{"depositReserve":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"type":["string","null"],"description":"Deposit reserve public key, if applicable","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"borrowReserve":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"type":["string","null"],"description":"Borrow reserve public key, if applicable","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"market":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"rewardToken":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Mint address of the reward token","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"lastCalculated":{"type":"string","format":"date-time","description":"Timestamp of the last calculation"},"apy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield from rewards","example":"0.2"}]},"tokensPerSecond":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Number of reward tokens distributed per second","example":"1234.56789"}]},"activePositionsUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total USD value of active positions receiving rewards","example":"1234.56789"}]}},"required":["depositReserve","borrowReserve","market","rewardToken","lastCalculated","apy","tokensPerSecond","activePositionsUsd"]},"KlendRewardMetrics":{"type":"array","items":{"$ref":"#/components/schemas/KlendRewardMetric"},"description":"List of klend reward metrics"},"KlendRewardHistoryRow":{"type":"object","properties":{"timestamp":{"type":"string","format":"date-time","description":"Timestamp of the data point"},"depositReserve":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"type":["string","null"],"description":"Deposit reserve public key, if applicable","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"borrowReserve":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"type":["string","null"],"description":"Borrow reserve public key, if applicable","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"rewardToken":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Mint address of the reward token","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"rewardApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield from rewards at this point in time","example":"0.2"}]}},"required":["timestamp","depositReserve","borrowReserve","rewardToken","rewardApy"]},"KlendRewardHistory":{"type":"array","items":{"$ref":"#/components/schemas/KlendRewardHistoryRow"},"description":"List of historical klend reward metrics"},"LoanDepositInfo":{"type":"object","properties":{"tokenMint":{"type":"string","description":"The token mint address","example":"So11111111111111111111111111111111111111112"},"tokenName":{"type":"string","description":"The token name/symbol from the reserve","example":"SOL"},"tokenAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Token amount in decimal format (not lamports)","example":"0.0100002082771212"}]},"tokenValue":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"USD value (tokenAmount × tokenPrice)","example":"1.80421579010444"}]},"maxLtv":{"type":"number","description":"Maximum loan-to-value ratio for this collateral reserve","example":0.74},"liquidationLtv":{"type":"number","description":"Liquidation threshold LTV for this collateral reserve","example":0.75},"maxWithdrawableAmount":{"type":"number","description":"Maximum token amount (decimals) that can be withdrawn while currentLtv <= maxLtv","example":51225.5590659256},"maxWithdrawableValue":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Maximum USD value that can be withdrawn while currentLtv <= maxLtv","example":"9242003.76257327"}]},"tokenPrice":{"type":"number","description":"Latest price from the oracle","example":180.41782132}},"required":["tokenMint","tokenName","tokenAmount","tokenValue","maxLtv","liquidationLtv","maxWithdrawableAmount","maxWithdrawableValue","tokenPrice"]},"LoanBorrowInfo":{"type":"object","properties":{"tokenMint":{"type":"string","description":"The token mint address","example":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"},"tokenName":{"type":"string","description":"The token name/symbol","example":"USDC"},"tokenAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Token amount in decimal format","example":"0.100002775657846"}]},"tokenValue":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"USD value (tokenAmount × tokenPrice)","example":"0.0999921413626825"}]},"maxBorrowableAmount":{"type":"number","description":"Maximum amount that can be borrowed while currentLtv <= maxLtv","example":1.30084031718889},"maxBorrowableValue":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Maximum USD value that can be borrowed while currentLtv <= maxLtv","example":"1.30070198582957"}]},"tokenPrice":{"type":"number","description":"Latest price from the oracle","example":0.99989366},"borrowFactor":{"type":"number","description":"Extra weight given to debt token in LTV calculation (debt value is multiplied by this factor))","example":1}},"required":["tokenMint","tokenName","tokenAmount","tokenValue","maxBorrowableAmount","maxBorrowableValue","tokenPrice","borrowFactor"]},"LoanInfo":{"type":"object","properties":{"loanId":{"type":"string","description":"The loan (obligation) public key","example":"wGzt1J5Nr182HHqAc1zsfD9SLoe1MJb25VWih5NRY"},"marketId":{"type":"string","description":"The market public key","example":"6HT16972HHiY4RM33GfUc22pHZ3VLDPpXFWhQ7XJzA"},"user":{"type":"string","description":"The loan owner public key","example":"7yexZcPbepXgWw3Cxc7YB2eLaxwyuyshRbAF8XHDi2g"},"timestamp":{"type":"number","description":"UTC timestamp when this report was produced","example":1760707165421},"solanaSlot":{"type":"number","description":"Solana slot when this report was produced","example":373973788},"elevationGroup":{"type":"number","description":"The elevation group assigned to this obligation for isolation of risks","example":0},"leverage":{"type":"number","description":"Current leverage ratio of the position","example":"0.5"},"loanInfo":{"type":"object","properties":{"collateral":{"type":"object","properties":{"deposits":{"type":"array","items":{"$ref":"#/components/schemas/LoanDepositInfo"},"description":"Array of collateral deposits"}},"required":["deposits"]},"debt":{"type":"object","properties":{"borrows":{"type":"array","items":{"$ref":"#/components/schemas/LoanBorrowInfo"},"description":"Array of debt borrows"}},"required":["borrows"]},"currentLtv":{"type":"number","description":"Current loan-to-value ratio (debt value × borrow factor / collateral value); liquidate when >= liquidationLtv","example":0.0554213869045533},"maxLtv":{"type":"number","description":"weighted average max LTV from all the collateral reserves (risks actions borrows or withdrawals are blocked when userLtv >= maxLtv)","example":0.74},"liquidationLtv":{"type":"number","description":"LTV threshold when liquidation occurs","example":0.75},"closeFactor":{"type":"number","description":"Maximum percentage of total debt that can be repaid in a single liquidation","example":0.1}},"required":["collateral","debt","currentLtv","maxLtv","liquidationLtv","closeFactor"]}},"required":["loanId","marketId","user","timestamp","solanaSlot","elevationGroup","leverage","loanInfo"]},"PrivateCreditAggregateMetrics":{"type":"object","properties":{"activeLoans":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]},"totalBorrowedUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]},"totalDepositedUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]},"weightedAvgLtv":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]},"avgLtv":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]},"maxLtv":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]},"updatedOn":{"allOf":[{"$ref":"#/components/schemas/SnapshotDateTime"},{"description":"Timestamp when the snapshot was created (ISO 8601 format)","example":"2025-03-01T12:00:00.000Z"}]}},"required":["activeLoans","totalBorrowedUsd","totalDepositedUsd","weightedAvgLtv","avgLtv","maxLtv","updatedOn"]},"PrivateCreditLoan":{"type":"object","properties":{"totalBorrowedUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]},"totalDepositedUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]},"ltv":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]},"createdOn":{"allOf":[{"$ref":"#/components/schemas/SnapshotDateTime"},{"description":"Timestamp when the snapshot was created (ISO 8601 format)","example":"2025-03-01T12:00:00.000Z"}]},"collateralAsset":{"type":"string"},"maxLtv":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]},"liquidationStatus":{"type":"string"}},"required":["totalBorrowedUsd","totalDepositedUsd","ltv","createdOn","collateralAsset","maxLtv","liquidationStatus"]},"PrivateCreditMetricsResponse":{"type":"object","properties":{"metrics":{"$ref":"#/components/schemas/PrivateCreditAggregateMetrics"},"loans":{"type":"array","items":{"$ref":"#/components/schemas/PrivateCreditLoan"}}},"required":["metrics","loans"]},"PrivateCreditStatusDistribution":{"type":"object","properties":{"status":{"type":"string"},"share":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]}},"required":["status","share"]},"PrivateCreditHistoryPoint":{"type":"object","properties":{"createdOn":{"allOf":[{"$ref":"#/components/schemas/SnapshotDateTime"},{"description":"Timestamp when the snapshot was created (ISO 8601 format)","example":"2025-03-01T12:00:00.000Z"}]},"weightedAvgLtv":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]},"maxLtv":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Decimal value represented as string","example":"1234.56789"}]},"statusDistribution":{"type":"array","items":{"$ref":"#/components/schemas/PrivateCreditStatusDistribution"}}},"required":["createdOn","weightedAvgLtv","maxLtv","statusDistribution"]},"PrivateCreditHistoryResponse":{"type":"array","items":{"$ref":"#/components/schemas/PrivateCreditHistoryPoint"}},"SeasonUserReward":{"type":"object","properties":{"wallet":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Wallet address of the user","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"totalRewards":{"type":"object","properties":{"amount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total reward amount","example":"1234.56789"}]},"tokenMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Token mint address of the reward","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]}},"required":["amount","tokenMint"],"description":"Total combined season rewards from both KLend and KVault"}},"required":["wallet","totalRewards"]},"SeasonFinalVestingPoolAllocation":{"type":"object","properties":{"totalForfeitedRewards":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total amount of forfeited rewards from all users who claimed early","example":"1234.56789"}]}},"required":["totalForfeitedRewards"]},"UnixTimestamp":{"type":"string","description":"Epoch Unix timestamp in seconds","example":"1763568282"},"OraclePrice":{"type":"object","properties":{"price":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Price value of the asset","example":"1234.56789"}]},"mint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address of the token mint","example":"So11111111111111111111111111111111111111112","examples":["So11111111111111111111111111111111111111112","EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"]}]},"maxAgeInSeconds":{"allOf":[{"$ref":"#/components/schemas/Integer"},{"description":"Maximum allowed age of the price feed in seconds","example":"120"}]},"timestamp":{"$ref":"#/components/schemas/UnixTimestamp"},"name":{"type":"string","description":"Name of the token","example":"SOL"}},"required":["price","mint","maxAgeInSeconds","timestamp","name"]},"FarmsInstruction":{"type":"object","properties":{"createdOn":{"type":"string","format":"date","description":"Date when the instruction was created"},"transactionSignature":{"type":"string","description":"Transaction signature","example":"2XWcSQVtR4NoHBhzYpDkYkmYtEFkFXC5ZwrKiPok1kvA86GvnN15qP7RNP6eTeNWgJqgnR1GA2M3QPp1hucW7e1v"},"instruction":{"type":"string","description":"Instruction display name","example":"claim"},"tokenAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount of tokens involved","example":"1234.56789"}]},"usdAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"USD value of the transaction","example":"1234.56789"}]},"farm":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Farm public key","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"token":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Token mint public key","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]}},"required":["createdOn","transactionSignature","instruction","tokenAmount","usdAmount","farm","token"]},"FarmTransaction":{"type":"object","properties":{"createdOn":{"type":"string","format":"date","description":"Date when the instruction was created"},"transactionSignature":{"type":"string","description":"Transaction signature","example":"2XWcSQVtR4NoHBhzYpDkYkmYtEFkFXC5ZwrKiPok1kvA86GvnN15qP7RNP6eTeNWgJqgnR1GA2M3QPp1hucW7e1v"},"instruction":{"type":"string","description":"Instruction display name","example":"deposit"},"tokenAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount of tokens involved","example":"1234.56789"}]},"usdAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"USD value of the transaction","example":"1234.56789"}]}},"required":["createdOn","transactionSignature","instruction","tokenAmount","usdAmount"]},"BenchmarkRate":{"type":"object","properties":{"index":{"type":"integer","description":"Index of the data point"},"hour":{"type":"string","description":"Timestamp of the data point"},"tracked_supply":{"type":"number","description":"Total tracked USD supply"},"avg_rate":{"type":"number","description":"Average lending rate"},"elements":{"type":"integer","description":"Number of data elements"},"included_protocols":{"type":"integer","description":"Number of protocols included"}},"required":["index","hour","tracked_supply","avg_rate","elements","included_protocols"]},"BenchmarkRatesResponse":{"type":"array","items":{"$ref":"#/components/schemas/BenchmarkRate"}}},"parameters":{}},"paths":{"/slots/duration":{"get":{"summary":"Get median Solana slot duration","description":"Fetches the median duration of a recent Solana slot (in milliseconds) from the last 3 epochs","tags":["Other"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlotDuration"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/kamino-market/{pubkey}/metrics/history":{"get":{"summary":"Get KLend Market metrics history","description":"Get historical metrics (TVL and number of obligations) for a Kamino Lending market over a specified time range.","tags":["Kamino Lend Markets"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"example":"7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF"}]},"required":true,"description":"Market public key","name":"pubkey","in":"path"},{"schema":{"type":"string","enum":["mainnet-beta","devnet","localnet"],"default":"mainnet-beta","description":"Solana cluster environment","example":"mainnet-beta"},"required":false,"description":"Solana cluster environment","name":"env","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"default":"1970-01-01T00:00:00.000Z","description":"Date input (ISO 8601 string or epoch in ms)","examples":["2024-01-01T00:00:00.000Z",1704067200000],"example":"2020-01-01T00:00Z"},"required":false,"description":"Date input (ISO 8601 string or epoch in ms)","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Date input (ISO 8601 string or epoch in ms)","examples":["2024-01-01T00:00:00.000Z",1704067200000],"example":"2020-02-01T00:00Z"},"required":false,"description":"Date input (ISO 8601 string or epoch in ms)","name":"end","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MarketMetricsResponse"}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/kamino-market/{marketPubkey}/reserves/{reservePubkey}/metrics/history":{"get":{"summary":"Get KLend reserve history","description":"Get historical metrics for a specific reserve in a Kamino Lending market over a specified time range with configurable frequency (minute, hour, or day).","tags":["Kamino Lend Markets"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Kamino Lend market public key","example":"7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF"}]},"required":true,"description":"Kamino Lend market public key","name":"marketPubkey","in":"path"},{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Kamino Lend reserve public key","example":"FBSyPnxtHKLBZ4UeeUyAnbtFuAmTHLtso9YtsqRDRWpM"}]},"required":true,"description":"Kamino Lend reserve public key","name":"reservePubkey","in":"path"},{"schema":{"type":"string","enum":["mainnet-beta","devnet","localnet"],"default":"mainnet-beta","description":"Solana cluster environment","example":"mainnet-beta"},"required":false,"description":"Solana cluster environment","name":"env","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"default":"1970-01-01T00:00:00.000Z","description":"Date input (ISO 8601 string or epoch in ms)","examples":["2024-01-01T00:00:00.000Z",1704067200000],"example":"2020-01-01T00:00Z"},"required":false,"description":"Date input (ISO 8601 string or epoch in ms)","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Date input (ISO 8601 string or epoch in ms)","examples":["2024-01-01T00:00:00.000Z",1704067200000],"example":"2020-02-01T00:00Z"},"required":false,"description":"Date input (ISO 8601 string or epoch in ms)","name":"end","in":"query"},{"schema":{"type":"string","enum":["hour","day"],"default":"hour","description":"Frequency of the snapshots","example":"hour"},"required":false,"description":"Frequency of the snapshots","name":"frequency","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/kamino-market/{marketPubkey}/reserves/{reservePubkey}/borrow-and-staking-apys/history":{"get":{"summary":"Get KLend reserve borrow APY and staking APY history","description":"Get historical borrow interest APY and staking APY data for reserves that contain LST tokens with staking yield. Used for Multiply underlying APY calculations.","tags":["Kamino Lend Yield"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Kamino Lend market public key","example":"7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF"}]},"required":true,"description":"Kamino Lend market public key","name":"marketPubkey","in":"path"},{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Kamino Lend reserve public key","example":"FBSyPnxtHKLBZ4UeeUyAnbtFuAmTHLtso9YtsqRDRWpM"}]},"required":true,"description":"Kamino Lend reserve public key","name":"reservePubkey","in":"path"},{"schema":{"type":"string","enum":["mainnet-beta","devnet","localnet"],"default":"mainnet-beta","description":"Solana cluster environment","example":"mainnet-beta"},"required":false,"description":"Solana cluster environment","name":"env","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"default":"1970-01-01T00:00:00.000Z","description":"Date input (ISO 8601 string or epoch in ms)","examples":["2024-01-01T00:00:00.000Z",1704067200000],"example":"2020-01-01T00:00Z"},"required":false,"description":"Date input (ISO 8601 string or epoch in ms)","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Date input (ISO 8601 string or epoch in ms)","examples":["2024-01-01T00:00:00.000Z",1704067200000],"example":"2020-02-01T00:00Z"},"required":false,"description":"Date input (ISO 8601 string or epoch in ms)","name":"end","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BorrowAndStakingApyResponse"}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/kamino-market/{marketPubkey}/reserves/{reservePubkey}/borrow-and-staking-apys/history/median":{"get":{"summary":"Get KLend reserve borrow APY and median staking APY history","description":"Get historical borrow interest APY and median staking APY data for reserves that contain LST tokens with staking yield. Uses median staking APY values for more stable calculations.","tags":["Kamino Lend Yield"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Kamino Lend market public key","example":"7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF"}]},"required":true,"description":"Kamino Lend market public key","name":"marketPubkey","in":"path"},{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Kamino Lend reserve public key","example":"FBSyPnxtHKLBZ4UeeUyAnbtFuAmTHLtso9YtsqRDRWpM"}]},"required":true,"description":"Kamino Lend reserve public key","name":"reservePubkey","in":"path"},{"schema":{"type":"string","enum":["mainnet-beta","devnet","localnet"],"default":"mainnet-beta","description":"Solana cluster environment","example":"mainnet-beta"},"required":false,"description":"Solana cluster environment","name":"env","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"default":"1970-01-01T00:00:00.000Z","description":"Date input (ISO 8601 string or epoch in ms)","examples":["2024-01-01T00:00:00.000Z",1704067200000],"example":"2020-01-01T00:00Z"},"required":false,"description":"Date input (ISO 8601 string or epoch in ms)","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Date input (ISO 8601 string or epoch in ms)","examples":["2024-01-01T00:00:00.000Z",1704067200000],"example":"2020-02-01T00:00Z"},"required":false,"description":"Date input (ISO 8601 string or epoch in ms)","name":"end","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BorrowAndStakingApyResponse"}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/kamino-market/{pubkey}/reserves/metrics":{"get":{"summary":"Get metrics for market reserves","description":"Get current metrics for all reserves in a Kamino Lending market, including APY, TVL, borrow/supply amounts, and LTV ratios.","tags":["Kamino Lend Markets"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"example":"7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF"}]},"required":true,"description":"Market public key","name":"pubkey","in":"path"},{"schema":{"type":"string","enum":["mainnet-beta","devnet","localnet"],"default":"mainnet-beta","description":"Solana cluster environment","example":"mainnet-beta"},"required":false,"description":"Solana cluster environment","name":"env","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ReserveMetricsResponse"}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/kamino-market/{pubkey}/leverage/metrics":{"get":{"summary":"Get metrics for leverage/multiply vaults","description":"Get aggregated metrics for all leverage and multiply positions in a Kamino Lending market, including average leverage, total borrowed, total deposited, and number of obligations.","tags":["Kamino Lend Markets"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"example":"7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF"}]},"required":true,"description":"Market public key","name":"pubkey","in":"path"},{"schema":{"type":"string","enum":["mainnet-beta","devnet","localnet"],"default":"mainnet-beta","description":"Solana cluster environment","example":"mainnet-beta"},"required":false,"description":"Solana cluster environment","name":"env","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LeverageMetricsResponse"}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/kamino-market/{marketPubkey}/users/{userPubkey}/obligations":{"get":{"summary":"Get all user obligations","description":"Get all obligations (loans) for a specific user wallet in a Kamino Lending market.","tags":["Kamino Lend User Loans"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Kamino Lend market public key","example":"7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF"}]},"required":true,"description":"Kamino Lend market public key","name":"marketPubkey","in":"path"},{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"User wallet public key","example":"AcNSmd5CxwLs21TYUmhWt7CW2v159TdYRkvQxb1iBYRj"}]},"required":true,"description":"User wallet public key","name":"userPubkey","in":"path"},{"schema":{"type":"string","enum":["mainnet-beta","devnet","localnet"],"default":"mainnet-beta","description":"Solana cluster environment","example":"mainnet-beta"},"required":false,"description":"Solana cluster environment","name":"env","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/kamino-market/reserves/account-data":{"get":{"summary":"Get KLend market reserves account data","description":"Fetch reserve account data for given Klend markets. Returns base64-encoded account data for all reserves in the specified markets.","tags":["Kamino Lend Markets"],"parameters":[{"schema":{"type":"string","default":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},"required":false,"name":"programId","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"required":true,"name":"markets","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ReserveAccountDataResponse"}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v2/kamino-market/{marketPubkey}/obligations/{obligationPubkey}/transactions":{"get":{"summary":"Get obligation transactions","description":"Get all Kamino Lend transactions for a given obligation.","tags":["Kamino Lend Transactions"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Kamino Lend market public key","example":"7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF"}]},"required":true,"description":"Kamino Lend market public key","name":"marketPubkey","in":"path"},{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Kamino Lend obligation public key","example":"63QrAB1okxCc4FpsgcKYHjYTp1ua8ch6mLReyKRdc22o"}]},"required":true,"description":"Kamino Lend obligation public key","name":"obligationPubkey","in":"path"},{"schema":{"type":"string","enum":["mainnet-beta","devnet","localnet"],"default":"mainnet-beta","description":"Solana cluster environment","example":"mainnet-beta"},"required":false,"description":"Solana cluster environment","name":"env","in":"query"},{"schema":{"type":"string","enum":["true","false"],"default":"false","description":"Use log prices for transaction values","example":"false"},"required":false,"description":"Use log prices for transaction values","name":"useLogPrices","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc","description":"Sort order (asc for oldest first, desc for newest first)","example":"desc"},"required":false,"description":"Sort order (asc for oldest first, desc for newest first)","name":"sort","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KlendTransactionsResponseV2"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v2/kamino-market/users/{userPubkey}/transactions":{"get":{"summary":"Get user transactions across all markets","description":"Get all Kamino Lend transactions for a given user across all markets.","tags":["Kamino Lend Transactions"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"User wallet public key","example":"AcNSmd5CxwLs21TYUmhWt7CW2v159TdYRkvQxb1iBYRj"}]},"required":true,"description":"User wallet public key","name":"userPubkey","in":"path"},{"schema":{"type":"string","enum":["mainnet-beta","devnet","localnet"],"default":"mainnet-beta","description":"Solana cluster environment","example":"mainnet-beta"},"required":false,"description":"Solana cluster environment","name":"env","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc","description":"Sort order (asc for oldest first, desc for newest first)","example":"desc"},"required":false,"description":"Sort order (asc for oldest first, desc for newest first)","name":"sort","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KlendAllMarketsUserTransactionsResponseV2"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v2/kamino-market/{marketPubkey}/users/{userPubkey}/transactions":{"get":{"summary":"Get user transactions","description":"Get all Kamino Lend transactions for a given user.","tags":["Kamino Lend Transactions"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Kamino Lend market public key","example":"7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF"}]},"required":true,"description":"Kamino Lend market public key","name":"marketPubkey","in":"path"},{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"User wallet public key","example":"AcNSmd5CxwLs21TYUmhWt7CW2v159TdYRkvQxb1iBYRj"}]},"required":true,"description":"User wallet public key","name":"userPubkey","in":"path"},{"schema":{"type":"string","enum":["mainnet-beta","devnet","localnet"],"default":"mainnet-beta","description":"Solana cluster environment","example":"mainnet-beta"},"required":false,"description":"Solana cluster environment","name":"env","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc","description":"Sort order (asc for oldest first, desc for newest first)","example":"desc"},"required":false,"description":"Sort order (asc for oldest first, desc for newest first)","name":"sort","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KlendUserTransactionsResponseV2"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v2/kamino-market/{pubkey}/transactions":{"post":{"summary":"Get bulk market transactions","description":"Get bulk Kamino Lend transactions for a given market, filtered by instruction name and date range. Private (authorized) API access only, please add a basic auth header to your request.","tags":["Kamino Lend Transactions"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"example":"7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF"}]},"required":true,"description":"Market public key","name":"pubkey","in":"path"},{"schema":{"type":"string","default":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD","description":"KLend program ID","example":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},"required":false,"description":"KLend program ID","name":"programId","in":"query"},{"schema":{"type":"string","default":false},"required":false,"name":"includeRawJson","in":"query"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KlendBulkTxBody"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KlendBulkTxResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message describing why it was not authorized","example":"Not authorized for this request. Please include the basic auth headers."}},"required":["error"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v2/kamino-market":{"get":{"summary":"Get all Kamino Markets config","description":"Get all Kamino Lending markets configuration for a specific program ID. This is the V2 endpoint that allows filtering by program ID instead of cluster.","tags":["Kamino Lend Markets"],"parameters":[{"schema":{"type":"string","default":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD","description":"KLend program ID","example":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},"required":false,"description":"KLend program ID","name":"programId","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MarketConfigResponseV2"}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v2/kamino-market/{pubkey}":{"get":{"summary":"Get Kamino Market config","description":"Get configuration for a specific Kamino Lending market by market address. Optionally filter by program ID.","tags":["Kamino Lend Markets"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"example":"7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF"}]},"required":true,"description":"Market public key","name":"pubkey","in":"path"},{"schema":{"type":"string","default":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD","description":"KLend program ID","example":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},"required":false,"description":"KLend program ID","name":"programId","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketConfigResponseV2"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v2/kamino-market/{marketPubkey}/obligations/{obligationPubkey}/pnl":{"get":{"summary":"Get profit and loss for an obligation","description":"Get profit and loss (PnL) for a specific obligation. For xSOL pairs, `useStakeRate` can be set to true to calculate the PnL using the stake rate.","tags":["Kamino Lend User Loans"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Kamino Lend market public key","example":"7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF"}]},"required":true,"description":"Kamino Lend market public key","name":"marketPubkey","in":"path"},{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Kamino Lend obligation public key","example":"63QrAB1okxCc4FpsgcKYHjYTp1ua8ch6mLReyKRdc22o"}]},"required":true,"description":"Kamino Lend obligation public key","name":"obligationPubkey","in":"path"},{"schema":{"type":"string","enum":["mainnet-beta","devnet","localnet"],"default":"mainnet-beta","description":"Solana cluster environment","example":"mainnet-beta"},"required":false,"description":"Solana cluster environment","name":"env","in":"query"},{"schema":{"type":"string","default":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD","description":"KLend program ID","example":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},"required":false,"description":"KLend program ID","name":"programId","in":"query"},{"schema":{"type":"string","enum":["true","false"],"default":"false","description":"For xSOL pairs, calculate the PnL using the stake rate","example":"true"},"required":false,"description":"For xSOL pairs, calculate the PnL using the stake rate","name":"useStakeRate","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PnlResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v2/kamino-market/{marketPubkey}/obligations/{obligationPubkey}/interest-fees":{"get":{"summary":"Get interest fees earned per obligation","description":"Get historical interest fees earned for a specific obligation. Returns total fees earned and historical fee breakdown by token.","tags":["Kamino Lend Yield"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Kamino Lend market public key","example":"7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF"}]},"required":true,"description":"Kamino Lend market public key","name":"marketPubkey","in":"path"},{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Kamino Lend obligation public key","example":"63QrAB1okxCc4FpsgcKYHjYTp1ua8ch6mLReyKRdc22o"}]},"required":true,"description":"Kamino Lend obligation public key","name":"obligationPubkey","in":"path"},{"schema":{"type":"string","enum":["mainnet-beta","devnet","localnet"],"default":"mainnet-beta","description":"Solana cluster environment","example":"mainnet-beta"},"required":false,"description":"Solana cluster environment","name":"env","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"default":"1970-01-01T00:00:00.000Z","description":"Date input (ISO 8601 string or epoch in ms)","examples":["2024-01-01T00:00:00.000Z",1704067200000],"example":"2020-01-01T00:00Z"},"required":false,"description":"Date input (ISO 8601 string or epoch in ms)","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Date input (ISO 8601 string or epoch in ms)","examples":["2024-01-01T00:00:00.000Z",1704067200000],"example":"2020-02-01T00:00Z"},"required":false,"description":"Date input (ISO 8601 string or epoch in ms)","name":"end","in":"query"},{"schema":{"type":"string","default":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD","description":"KLend program ID","example":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},"required":false,"description":"KLend program ID","name":"programId","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterestRateEarnedResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"metadata":{"type":"string","description":"Error message describing why it was not found","example":"Account could not be found"}},"required":["metadata"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v2/kamino-market/{marketPubkey}/obligations/{obligationPubkey}/interest-paid":{"get":{"summary":"Get interest fees paid per obligation","description":"Get historical interest fees paid for a specific obligation. Returns total fees paid and historical fee breakdown by token.","tags":["Kamino Lend Yield"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Kamino Lend market public key","example":"7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF"}]},"required":true,"description":"Kamino Lend market public key","name":"marketPubkey","in":"path"},{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Kamino Lend obligation public key","example":"63QrAB1okxCc4FpsgcKYHjYTp1ua8ch6mLReyKRdc22o"}]},"required":true,"description":"Kamino Lend obligation public key","name":"obligationPubkey","in":"path"},{"schema":{"type":"string","enum":["mainnet-beta","devnet","localnet"],"default":"mainnet-beta","description":"Solana cluster environment","example":"mainnet-beta"},"required":false,"description":"Solana cluster environment","name":"env","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"default":"1970-01-01T00:00:00.000Z","description":"Date input (ISO 8601 string or epoch in ms)","examples":["2024-01-01T00:00:00.000Z",1704067200000],"example":"2020-01-01T00:00Z"},"required":false,"description":"Date input (ISO 8601 string or epoch in ms)","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Date input (ISO 8601 string or epoch in ms)","examples":["2024-01-01T00:00:00.000Z",1704067200000],"example":"2020-02-01T00:00Z"},"required":false,"description":"Date input (ISO 8601 string or epoch in ms)","name":"end","in":"query"},{"schema":{"type":"string","default":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD","description":"KLend program ID","example":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},"required":false,"description":"KLend program ID","name":"programId","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterestRatePaidResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"metadata":{"type":"string","description":"Error message describing why it was not found","example":"Account could not be found"}},"required":["metadata"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v2/kamino-market/{marketPubkey}/obligations/{obligationPubkey}/metrics/history":{"get":{"summary":"Get KLend obligation history","description":"Get historical metrics for a specific obligation in a Kamino Lending market. This V2 endpoint supports using stake rate for obligation value calculation when `useStakeRateForObligation` is true.","tags":["Kamino Lend User Loans"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Kamino Lend market public key","example":"7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF"}]},"required":true,"description":"Kamino Lend market public key","name":"marketPubkey","in":"path"},{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Kamino Lend obligation public key","example":"63QrAB1okxCc4FpsgcKYHjYTp1ua8ch6mLReyKRdc22o"}]},"required":true,"description":"Kamino Lend obligation public key","name":"obligationPubkey","in":"path"},{"schema":{"type":"string","enum":["mainnet-beta","devnet","localnet"],"default":"mainnet-beta","description":"Solana cluster environment","example":"mainnet-beta"},"required":false,"description":"Solana cluster environment","name":"env","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"default":"1970-01-01T00:00:00.000Z","description":"Date input (ISO 8601 string or epoch in ms)","examples":["2024-01-01T00:00:00.000Z",1704067200000],"example":"2020-01-01T00:00Z"},"required":false,"description":"Date input (ISO 8601 string or epoch in ms)","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Date input (ISO 8601 string or epoch in ms)","examples":["2024-01-01T00:00:00.000Z",1704067200000],"example":"2020-02-01T00:00Z"},"required":false,"description":"Date input (ISO 8601 string or epoch in ms)","name":"end","in":"query"},{"schema":{"type":"string","enum":["true","false"],"default":"false","description":"Use stake rate to calculate net SOL value","example":"true"},"required":false,"description":"Use stake rate to calculate net SOL value","name":"useStakeRateForObligation","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ObligationMetricsHistoryResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v2/kamino-market/obligations/{pubkey}/borrow-order-fills":{"get":{"summary":"Get borrow order fills for an obligation","description":"Returns the fill history for the active borrow order of an obligation, in chronological order.","tags":["Kamino Lend Borrow Orders"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"required":true,"description":"Valid base58-encoded address","name":"pubkey","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BorrowOrderFillsResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v2/kamino-market/{pubkey}/obligations-with-open-borrow-orders":{"get":{"summary":"Get all obligations with open borrow orders in a market","description":"Returns all obligations in the given market that have an active (unfilled or partially filled) borrow order.","tags":["Kamino Lend Borrow Orders"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"example":"7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF"}]},"required":true,"description":"Market public key","name":"pubkey","in":"path"},{"schema":{"type":"string","enum":["mainnet-beta","devnet","localnet"],"default":"mainnet-beta","description":"Solana cluster environment","example":"mainnet-beta"},"required":false,"description":"Solana cluster environment","name":"env","in":"query"},{"schema":{"type":"string","default":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD","description":"KLend program ID","example":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},"required":false,"description":"KLend program ID","name":"programId","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ObligationsWithOpenBorrowOrdersResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/yields/{yieldSource}/history":{"get":{"summary":"Get yield history","description":"Get historical yield data for a given source, between an optional range of dates (max 366 days). For extra farm yields specify the source as farmAddress-rewardMint.","tags":["Yields"],"parameters":[{"schema":{"type":"string","description":"Yield source identifier. For regular yields use the token mint address. For extra farm yields use the format: farmAddress-rewardMint","example":"AvZZF1YaZDziPY2RCK4oJrRVrbN3mTD9NL24hPeaZeUj","examples":["AvZZF1YaZDziPY2RCK4oJrRVrbN3mTD9NL24hPeaZeUj","FciPo1fpNgStdnVvKT7abcFfyqn2sJijLrNLCkKtbsye-2u1tszSeqZ3qBWF3uNGPFc8TzMk2tdiwknnRMWGWjGWH"]},"required":true,"description":"Yield source identifier. For regular yields use the token mint address. For extra farm yields use the format: farmAddress-rewardMint","name":"yieldSource","in":"path"},{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Date input (ISO 8601 string or epoch in ms)","examples":["2024-01-01T00:00:00.000Z",1704067200000],"example":"2020-01-01T00:00Z"},"required":false,"description":"Date input (ISO 8601 string or epoch in ms)","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Date input (ISO 8601 string or epoch in ms)","examples":["2024-01-01T00:00:00.000Z",1704067200000],"example":"2020-02-01T00:00Z"},"required":false,"description":"Date input (ISO 8601 string or epoch in ms)","name":"end","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/YieldHistoryResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/yields/principal-tokens":{"get":{"summary":"Get principal token yields","description":"Get current APY yields for principal tokens from various sources","tags":["Yields"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PtYieldsResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v2/airdrop/users/{pubkey}/allocations":{"get":{"summary":"Get user airdrop allocations","description":"Fetches airdrop allocation data for a specific user and source (Seasons...)","tags":["Airdrop"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address of the user wallet","example":"AxqtG9SHDkZTLSWg81Sp7VqAzQpRqXtR9ziJ3VQAS8As"}]},"required":true,"description":"Valid base58-encoded address of the user wallet","name":"pubkey","in":"path"},{"schema":{"type":"string","description":"Points source identifier","example":"Season1","examples":["Season1","Season2","Season3","Season4"]},"required":false,"description":"Points source identifier","name":"source","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AirdropAllocation"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v2/airdrop/metrics":{"get":{"summary":"Get airdrop metrics","description":"Fetches aggregated airdrop metrics and metadata for a specific points source.","tags":["Airdrop"],"parameters":[{"schema":{"type":"string","description":"Points source identifier","example":"Season1","examples":["Season1","Season2","Season3","Season4"]},"required":false,"description":"Points source identifier","name":"source","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AirdropMetrics"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"metadata":{"type":"string","description":"Error message describing why it was not found","example":"Account could not be found"}},"required":["metadata"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v2/staking-yields":{"get":{"summary":"Get staking yields","description":"Fetches the latest staking yields for all LSTs","tags":["Staking Yields"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/StakingYield"}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v2/staking-yields/median":{"get":{"summary":"Get median staking yields","description":"Fetches staking yields and calculates median APY over the last 10 epochs","tags":["Staking Yields"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/StakingYield"}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v2/staking-yields/mean":{"get":{"summary":"Get mean staking yields","description":"Fetches staking yields and calculates mean (average) APY over the last 10 epochs","tags":["Staking Yields"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/StakingYield"}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/epochs":{"get":{"summary":"Get Solana epochs metadata","description":"Fetches all epoch start and end times, first/last slot numbers, and epoch identifiers","tags":["Other"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Epoch"}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/kvaults/users/{pubkey}/transactions":{"get":{"summary":"Get user KVault transactions","description":"Get all Kamino Earn Vault transactions for a given user","tags":["Kamino Earn User"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address of the user wallet","example":"AxqtG9SHDkZTLSWg81Sp7VqAzQpRqXtR9ziJ3VQAS8As"}]},"required":true,"description":"Valid base58-encoded address of the user wallet","name":"pubkey","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/KVaultInstruction"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/kvaults/transactions":{"post":{"summary":"Bulk get KVault transactions","description":"Bulk get all Kamino Earn Vault transactions with paginated access (max 1000 transactions returned in each response). Private (authorized) API access only, please add a basic auth header to your request.","tags":["Kamino Earn Vaults"],"parameters":[{"schema":{"type":"string","default":"KvauGMspG5k6rtzrqqn7WNn3oZdyKqLKwK2XWQ8FLjd","description":"Fetch transactions from this program id"},"required":false,"description":"Fetch transactions from this program id","name":"programId","in":"query"},{"schema":{"type":"string","default":false},"required":false,"name":"includeRawJson","in":"query"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Date input (ISO 8601 string or epoch in ms)","examples":["2024-01-01T00:00:00.000Z",1704067200000],"example":"2020-01-01T00:00Z"},"end":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Date input (ISO 8601 string or epoch in ms)","examples":["2024-01-01T00:00:00.000Z",1704067200000],"example":"2020-02-01T00:00Z"},"instruction":{"type":"string","example":"buy","examples":["buy","sell","deposit","withdraw","invest","withdrawAvailable"],"description":"Kvault instruction name"},"paginationToken":{"type":"string","example":"eyJsYXN0SWQiOjgxfQ==","description":"Optional pagination token"}},"required":["instruction"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"array","items":{"$ref":"#/components/schemas/KvaultBulkTransaction"}},"paginationToken":{"type":"string","example":"eyJsYXN0SWQiOjgxfQ==","description":"Optional pagination token - if not present you have reached the end"}},"required":["result"]}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message describing why it was not authorized","example":"Not authorized for this request. Please include the basic auth headers."}},"required":["error"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/kvaults/vaults/{pubkey}/transactions":{"post":{"summary":"Get KVault transactions by vault","description":"Get all Kamino Earn Vault transactions for a given vault address","tags":["Kamino Earn Vaults"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"required":true,"description":"Valid base58-encoded address","name":"pubkey","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Date input (ISO 8601 string or epoch in ms)","examples":["2024-01-01T00:00:00.000Z",1704067200000],"example":"2020-01-01T00:00Z"},"end":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Date input (ISO 8601 string or epoch in ms)","examples":["2024-01-01T00:00:00.000Z",1704067200000],"example":"2020-02-01T00:00Z"},"instruction":{"type":"string","example":"withdraw","description":"Filter by instruction name"},"direction":{"type":"string","enum":["asc","desc"],"default":"desc","description":"Sort order (asc for oldest first, desc for newest first)","example":"desc"},"paginationToken":{"type":"string","example":"eyJsYXN0SWQiOjgxfQ==","description":"Optional pagination token"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KvaultVaultTransactionsResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/kvaults/vaults":{"get":{"summary":"Get all kvaults","description":"Get all Kamino Earn Vaults","tags":["Kamino Earn Vaults"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VaultStateArray"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/kvaults/vaults/{pubkey}":{"get":{"summary":"Get KVault by address","description":"Get a single Kamino Earn Vault by the KVault account address","tags":["Kamino Earn Vaults"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"required":true,"description":"Valid base58-encoded address","name":"pubkey","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"address":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the vault","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"state":{"$ref":"#/components/schemas/The vault state object"},"programId":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the kvault program which owns the vault","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]}},"required":["address","state","programId"]}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"metadata":{"type":"string","description":"Error message describing why it was not found","example":"Account could not be found"}},"required":["metadata"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/kvaults/vaults/{pubkey}/metrics/history":{"get":{"summary":"Get historical KVault metrics","description":"Get historical Kamino Earn Vault metrics for a given vault, between an optional range of dates","tags":["Kamino Earn Vaults"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"required":true,"description":"Valid base58-encoded address","name":"pubkey","in":"path"},{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"default":"1970-01-01T00:00:00.000Z","description":"Start date of the range (defaults to Unix epoch). Accepts ISO string or epoch in ms.","examples":["1970-01-01T00:00:00.000Z",0]},"required":false,"description":"Start date of the range (defaults to Unix epoch). Accepts ISO string or epoch in ms.","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"End date of the range (defaults to current time). Accepts ISO string or epoch in ms.","examples":["2025-01-01T00:00:00.000Z",1735689600000]},"required":false,"description":"End date of the range (defaults to current time). Accepts ISO string or epoch in ms.","name":"end","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"number","description":"Unix timestamp in milliseconds"},"tvl":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total Value Locked in token denomination","example":"1234.56789"}]},"solTvl":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total Value Locked in SOL","example":"1234.56789"}]},"apy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield","example":"0.2"}]},"apyTheoretical":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Theoretical Annual Percentage Yield","example":"0.2"}]},"apyActual":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Actual Annual Percentage Yield","example":"0.2"}]},"apyFarmRewards":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield from Farm Rewards","example":"0.2"}]},"apyReservesIncentives":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield from Reserves Incentives","example":"0.2"}]},"apyIncentives":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield from Incentives","example":"0.2"}]},"sharePrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Share Price of the vault","example":"1234.56789"}]},"interest":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Interest earned in token denomination","example":"1234.56789"}]},"interestUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Interest earned in USD","example":"1234.56789"}]},"interestSol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Interest earned in SOL","example":"1234.56789"}]},"reserves":{"type":"array","items":{"type":"object","properties":{"pubkey":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the reserve","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"supplyApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Supply Annual Percentage Yield","example":"0.2"}]},"rewardsApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Rewards Annual Percentage Yield","example":"0.2"}]},"allocationRatio":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Allocation Ratio","example":"1234.56789"}]},"rewardTokens":{"type":"array","items":{"type":"object","properties":{"tokenMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Token mint address","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"apy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield for the reward token","example":"0.2"}]}},"required":["tokenMint","apy"]},"description":"List of reward tokens for the reserve"}},"required":["pubkey","supplyApy","rewardsApy","allocationRatio","rewardTokens"]},"description":"List of reserves with rewards"},"vaultRewards":{"type":"array","items":{"type":"object","properties":{"tokenMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Token mint address","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"apy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield for the vault reward token","example":"0.2"}]}},"required":["tokenMint","apy"]},"description":"List of vault reward tokens"}},"required":["timestamp","tvl","solTvl","apy","apyTheoretical","apyActual","apyFarmRewards","apyReservesIncentives","apyIncentives","sharePrice","interest","interestUsd","interestSol","reserves","vaultRewards"]}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/kvaults/vaults/{pubkey}/metrics":{"get":{"summary":"Get current KVault metrics","description":"Get current Kamino Earn Vault metrics for a given vault","tags":["Kamino Earn Vaults"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"required":true,"description":"Valid base58-encoded address","name":"pubkey","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KvaultMetrics"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/kvaults/vaults/{pubkey}/allocation-volume/history":{"get":{"summary":"Get historical KVault allocation volume","description":"Get historical Kamino Earn Vault allocation volume for a given vault and date range (max 1 year)","tags":["Kamino Earn Vaults"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"required":true,"description":"Valid base58-encoded address","name":"pubkey","in":"path"},{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Date input (ISO 8601 string or epoch in ms)","examples":["2024-01-01T00:00:00.000Z",1704067200000],"example":"2020-01-01T00:00Z"},"required":false,"description":"Date input (ISO 8601 string or epoch in ms)","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Date input (ISO 8601 string or epoch in ms)","examples":["2024-01-01T00:00:00.000Z",1704067200000],"example":"2020-02-01T00:00Z"},"required":false,"description":"Date input (ISO 8601 string or epoch in ms)","name":"end","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"string","format":"date","description":"Timestamp of the investment volume data point"},"volumeUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Investment volume in USD","example":"1234.56789"}]}},"required":["timestamp","volumeUsd"]},"description":"Array of investment volume data points"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/kvaults/users/{pubkey}/positions":{"get":{"summary":"Get all user KVault positions","description":"Get a list of user positions for each Kamino Earn Vault the user has currently deposited into. Returns staked and unstaked shares.","tags":["Kamino Earn User"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address of the user wallet","example":"AxqtG9SHDkZTLSWg81Sp7VqAzQpRqXtR9ziJ3VQAS8As"}]},"required":true,"description":"Valid base58-encoded address of the user wallet","name":"pubkey","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/VaultStateArray"},{"items":{"type":"object","properties":{"vaultAddress":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Address of the Kamino Earn Vault","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"stakedShares":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"The number of Kamino Earn Vault shares staked in a farm","example":"1234.56789"}]},"unstakedShares":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"The number of Kamino Earn Vault shares held in the user wallet","example":"1234.56789"}]},"totalShares":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"The total number of Kamino Earn Vault shares both held and staked by the user","example":"1234.56789"}]}},"required":["vaultAddress","stakedShares","unstakedShares","totalShares"]}}]}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/kvaults/users/{userPubkey}/positions/{vaultPubkey}":{"get":{"summary":"Get user position for a specific KVault","description":"Get a single user position for a Kamino Earn Vault the user currently has currently deposited into. Returns staked and unstaked shares.","tags":["Kamino Earn User"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address of the vault","example":"HDsayqAsDWy3QvANGqh2yNraqcD8Fnjgh73Mhb3WRS5E"}]},"required":true,"description":"Valid base58-encoded address of the vault","name":"vaultPubkey","in":"path"},{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address of the user wallet","example":"AxqtG9SHDkZTLSWg81Sp7VqAzQpRqXtR9ziJ3VQAS8As"}]},"required":true,"description":"Valid base58-encoded address of the user wallet","name":"userPubkey","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"vaultAddress":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Address of the Kamino Earn Vault","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"stakedShares":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"The number of Kamino Earn Vault shares staked in a farm","example":"1234.56789"}]},"unstakedShares":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"The number of Kamino Earn Vault shares held in the user wallet","example":"1234.56789"}]},"totalShares":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"The total number of Kamino Earn Vault shares both held and staked by the user","example":"1234.56789"}]}},"required":["vaultAddress","stakedShares","unstakedShares","totalShares"]}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"metadata":{"type":"string","description":"Error message describing why it was not found","example":"Account could not be found"}},"required":["metadata"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/kvaults/users/{pubkey}/metrics/history":{"get":{"summary":"Get historical user metrics for all KVault positions","description":"Get historical timeseries of total usd/sol/interest/apy for all user Kamino Earn Vault positions","tags":["Kamino Earn User"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address of the user wallet","example":"AxqtG9SHDkZTLSWg81Sp7VqAzQpRqXtR9ziJ3VQAS8As"}]},"required":true,"description":"Valid base58-encoded address of the user wallet","name":"pubkey","in":"path"},{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"default":"1970-01-01T00:00:00.000Z","description":"Start date of the range (defaults to Unix epoch). Accepts ISO string or epoch in ms.","examples":["1970-01-01T00:00:00.000Z",0]},"required":false,"description":"Start date of the range (defaults to Unix epoch). Accepts ISO string or epoch in ms.","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"End date of the range (defaults to current time). Accepts ISO string or epoch in ms.","examples":["2025-01-01T00:00:00.000Z",1735689600000]},"required":false,"description":"End date of the range (defaults to current time). Accepts ISO string or epoch in ms.","name":"end","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UserKVaultTotal"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/kvaults/users/{userPubkey}/vaults/{vaultPubkey}/metrics/history":{"get":{"summary":"Get historical user metrics for a single KVault","description":"Get historical timeseries of total usd/sol/interest/apy for a single user Kamino Earn Vault position","tags":["Kamino Earn User"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address of the vault","example":"HDsayqAsDWy3QvANGqh2yNraqcD8Fnjgh73Mhb3WRS5E"}]},"required":true,"description":"Valid base58-encoded address of the vault","name":"vaultPubkey","in":"path"},{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address of the user wallet","example":"AxqtG9SHDkZTLSWg81Sp7VqAzQpRqXtR9ziJ3VQAS8As"}]},"required":true,"description":"Valid base58-encoded address of the user wallet","name":"userPubkey","in":"path"},{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"default":"1970-01-01T00:00:00.000Z","description":"Start date of the range (defaults to Unix epoch). Accepts ISO string or epoch in ms.","examples":["1970-01-01T00:00:00.000Z",0]},"required":false,"description":"Start date of the range (defaults to Unix epoch). Accepts ISO string or epoch in ms.","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"End date of the range (defaults to current time). Accepts ISO string or epoch in ms.","examples":["2025-01-01T00:00:00.000Z",1735689600000]},"required":false,"description":"End date of the range (defaults to current time). Accepts ISO string or epoch in ms.","name":"end","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UserKvaultMetrics"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/kvaults/users/{userPubkey}/vaults/{vaultPubkey}/pnl":{"get":{"summary":"Get user KVault PnL","description":"Get current PnL and cost basis of user vault position","tags":["Kamino Earn User"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address of the vault","example":"HDsayqAsDWy3QvANGqh2yNraqcD8Fnjgh73Mhb3WRS5E"}]},"required":true,"description":"Valid base58-encoded address of the vault","name":"vaultPubkey","in":"path"},{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address of the user wallet","example":"AxqtG9SHDkZTLSWg81Sp7VqAzQpRqXtR9ziJ3VQAS8As"}]},"required":true,"description":"Valid base58-encoded address of the user wallet","name":"userPubkey","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KvaultPnl"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/kvaults/users/{userPubkey}/vaults/{vaultPubkey}/pnl/history":{"get":{"summary":"Get user KVault PnL history","description":"Get PnL and cost basis history of user vault position","tags":["Kamino Earn User"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address of the vault","example":"HDsayqAsDWy3QvANGqh2yNraqcD8Fnjgh73Mhb3WRS5E"}]},"required":true,"description":"Valid base58-encoded address of the vault","name":"vaultPubkey","in":"path"},{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address of the user wallet","example":"AxqtG9SHDkZTLSWg81Sp7VqAzQpRqXtR9ziJ3VQAS8As"}]},"required":true,"description":"Valid base58-encoded address of the user wallet","name":"userPubkey","in":"path"},{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Date input (ISO 8601 string or epoch in ms)","examples":["2024-01-01T00:00:00.000Z",1704067200000]},"required":false,"description":"Date input (ISO 8601 string or epoch in ms)","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Date input (ISO 8601 string or epoch in ms)","examples":["2024-01-01T00:00:00.000Z",1704067200000]},"required":false,"description":"Date input (ISO 8601 string or epoch in ms)","name":"end","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"history":{"type":"array","items":{"$ref":"#/components/schemas/KvaultPnlTimeseriesValue"}},"totalPnl":{"$ref":"#/components/schemas/KvaultMultiValue"},"totalCostBasis":{"$ref":"#/components/schemas/KvaultMultiValue"}},"required":["history","totalPnl","totalCostBasis"]}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/kvaults/mints/{pubkey}/metadata":{"get":{"summary":"Get metadata for KVault token","description":"Get metadata for a given Kamino Earn Vault receipt token mint","tags":["Kamino Earn Vault Metadata"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"required":true,"description":"Valid base58-encoded address","name":"pubkey","in":"path"},{"schema":{"type":"string","enum":["mainnet-beta","devnet","localnet"],"default":"mainnet-beta","description":"Solana cluster environment","example":"mainnet-beta"},"required":false,"description":"Solana cluster environment","name":"env","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the token"},"symbol":{"type":"string","description":"The symbol of the token"},"description":{"type":"string","description":"A description of the token"},"image":{"type":"string","format":"uri","description":"A URL pointing to an image of the token"}},"required":["name","symbol","description","image"]}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"metadata":{"type":"string","description":"Error message describing why it was not found","example":"Account could not be found"}},"required":["metadata"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/kvaults/mints/{pubkey}/metadata/image.svg":{"get":{"summary":"Get icon for KVault token","description":"Get the SVG icon for a given Kamino Earn Vault receipt token mint","tags":["Kamino Earn Vault Metadata"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"required":true,"description":"Valid base58-encoded address","name":"pubkey","in":"path"},{"schema":{"type":"string","enum":["mainnet-beta","devnet","localnet"],"default":"mainnet-beta","description":"Solana cluster environment","example":"mainnet-beta"},"required":false,"description":"Solana cluster environment","name":"env","in":"query"}],"responses":{"200":{"description":"OK","content":{"image/svg+xml":{"schema":{"type":"string","description":"SVG markup string"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"metadata":{"type":"string","description":"Error message describing why it was not found","example":"Account could not be found"}},"required":["metadata"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/luts/find-minimal":{"post":{"summary":"Find Lookup Tables for addresses","description":"Finds the smallest set of Lookup Table (LUT) addresses that together cover all the provided Solana addresses. Optionally verifies active LUTs on-chain.","tags":["Lookup Tables"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindLutsForAddresses"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FoundLuts"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/luts/managed":{"get":{"summary":"Get managed LUTs for a product","description":"Returns active lookup table addresses associated with a given product identifier address.","tags":["Lookup Tables"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"The product identifier address to look up LUTs for","example":"6KhEbVjFg8bNkpTSyEfGJhMGtv2bRQiAKKbKZLPvrBFm"}]},"required":true,"description":"The product identifier address to look up LUTs for","name":"productIdentifierAddress","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagedLutResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/luts/managed/batch":{"get":{"summary":"Get managed LUTs for multiple products","description":"Returns active lookup table addresses for multiple product identifier addresses in a single request.","tags":["Lookup Tables"],"parameters":[{"schema":{"anyOf":[{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"minItems":1,"maxItems":50}],"description":"One or more product identifier addresses","example":"6KhEbVjFg8bNkpTSyEfGJhMGtv2bRQiAKKbKZLPvrBFm"},"required":true,"description":"One or more product identifier addresses","name":"productIdentifierAddress","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagedLutBatchResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/luts/managed/product-type/{productType}":{"get":{"summary":"Get managed LUTs by product type","description":"Returns all active lookup table addresses grouped by product for a given product type.","tags":["Lookup Tables"],"parameters":[{"schema":{"$ref":"#/components/schemas/LutProductType"},"required":true,"description":"The type of product associated with a managed lookup table","name":"productType","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagedLutByTypeResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/luts/managed/new-vault":{"post":{"summary":"Register a new vault with its on-chain LUT","description":"Verifies the vault and LUT exist on-chain, then registers the vault product and LUT entry. Private (authorized) API access only, please add a basic auth header to your request.","tags":["Lookup Tables"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"vaultAddress":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Vault account address","example":"6KhEbVjFg8bNkpTSyEfGJhMGtv2bRQiAKKbKZLPvrBFm"}]},"lutAddress":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Lookup table address","example":"3Kz4sMiBCxg7JdCCjwRTHtFsQRqJCSKh5pVERhPfMzYF"}]}},"required":["vaultAddress","lutAddress"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewVaultResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message describing why it was not authorized","example":"Not authorized for this request. Please include the basic auth headers."}},"required":["error"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"metadata":{"type":"string","description":"Error message describing why it was not found","example":"Account could not be found"}},"required":["metadata"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/kvaults/users/{pubkey}/rewards":{"get":{"summary":"Get season user rewards","description":"Get user season points rewards for each Kamino Earn Vault which the user has invested in","tags":["Kamino Earn User"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"required":true,"description":"Valid base58-encoded address","name":"pubkey","in":"path"},{"schema":{"type":"string","description":"Points source identifier","example":"Season1","examples":["Season1","Season2","Season3","Season4"]},"required":false,"description":"Points source identifier","name":"source","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KvaultUserRewardMetrics"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/kvaults/rewards":{"get":{"summary":"Get all KVault season rewards","description":"Get all active season points rewards for each Kamino Earn Vault","tags":["Season Rewards"],"parameters":[{"schema":{"type":"string","description":"Points source identifier","example":"Season1","examples":["Season1","Season2","Season3","Season4"]},"required":false,"description":"Points source identifier","name":"source","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KvaultRewardMetrics"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/users/{pubkey}/staking-boosts":{"get":{"summary":"Get user staking boosts","description":"Fetches staking boost multipliers for a specific user","tags":["Season Rewards"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"required":true,"description":"Valid base58-encoded address","name":"pubkey","in":"path"},{"schema":{"type":"string","description":"Points source identifier","example":"Season1","examples":["Season1","Season2","Season3","Season4"]},"required":false,"description":"Points source identifier","name":"source","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/StakingBoost"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/klend/users/{pubkey}/rewards":{"get":{"summary":"Get user KLend rewards","description":"Fetches KLend reward data for a specific user and points source","tags":["Kamino Lend Yield"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"required":true,"description":"Valid base58-encoded address","name":"pubkey","in":"path"},{"schema":{"type":"string","description":"Points source identifier","example":"Season1","examples":["Season1","Season2","Season3","Season4"]},"required":false,"description":"Points source identifier","name":"source","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KlendUserRewardMetrics"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/klend/rewards":{"get":{"summary":"Get KLend rewards","description":"Fetches all active KLend reward metrics for a specific points source","tags":["Kamino Lend Yield"],"parameters":[{"schema":{"type":"string","description":"Points source identifier","example":"Season1","examples":["Season1","Season2","Season3","Season4"]},"required":false,"description":"Points source identifier","name":"source","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KlendRewardMetrics"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/klend/{depositReservePubkey}/{borrowReservePubkey}/rewards/history":{"get":{"summary":"Get KLend reward history","description":"Fetches historical KLend reward metrics for a specific deposit and borrow reserve pair","tags":["Kamino Lend Yield"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Deposit reserve public key","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"required":true,"description":"Deposit reserve public key","name":"depositReservePubkey","in":"path"},{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Borrow reserve public key","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"required":true,"description":"Borrow reserve public key","name":"borrowReservePubkey","in":"path"},{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"default":"1970-01-01T00:00:00.000Z","description":"Date input (ISO 8601 string or epoch in ms)","examples":["2024-01-01T00:00:00.000Z",1704067200000],"example":"2020-01-01T00:00Z"},"required":false,"description":"Date input (ISO 8601 string or epoch in ms)","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Date input (ISO 8601 string or epoch in ms)","examples":["2024-01-01T00:00:00.000Z",1704067200000],"example":"2020-02-01T00:00Z"},"required":false,"description":"Date input (ISO 8601 string or epoch in ms)","name":"end","in":"query"},{"schema":{"type":"string","enum":["hour","day"],"description":"Frequency of historical data aggregation","example":"hour","examples":["hour","day"]},"required":false,"description":"Frequency of historical data aggregation","name":"frequency","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KlendRewardHistory"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/klend/loans/{pubkey}":{"get":{"summary":"Get information about a loan (obligation)","description":"Fetches information about a loan","tags":["Kamino Lend User Loans"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"required":true,"description":"Valid base58-encoded address","name":"pubkey","in":"path"},{"schema":{"type":"string","enum":["mainnet-beta","devnet","localnet"],"default":"mainnet-beta","description":"Solana cluster environment","example":"mainnet-beta"},"required":false,"description":"Solana cluster environment","name":"env","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoanInfo"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","properties":{"metadata":{"type":"string","description":"Error message describing why it was not found","example":"Account could not be found"}},"required":["metadata"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/kvaults/private-credit/metrics":{"get":{"summary":"Get private credit metrics","description":"Returns current aggregate metrics and active loans for private credit vaults","tags":["Private Credit"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrivateCreditMetricsResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/kvaults/private-credit/metrics/history":{"get":{"summary":"Get private credit metrics history","description":"Returns timeseries of private credit metrics. Frequency is automatically selected based on date range.","tags":["Private Credit"],"parameters":[{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"default":"1970-01-01T00:00:00.000Z","description":"Start date of the range (defaults to Unix epoch). Accepts ISO string or epoch in ms.","examples":["1970-01-01T00:00:00.000Z",0]},"required":false,"description":"Start date of the range (defaults to Unix epoch). Accepts ISO string or epoch in ms.","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"End date of the range (defaults to current time). Accepts ISO string or epoch in ms.","examples":["2025-01-01T00:00:00.000Z",1735689600000]},"required":false,"description":"End date of the range (defaults to current time). Accepts ISO string or epoch in ms.","name":"end","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrivateCreditHistoryResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/kvaults/summary":{"get":{"summary":"Get summary of the KVault program earnings","description":"Get an aggregated all-time summary of all Kamino Earn Vault rewards and interest earned, in SOL and USD","tags":["Season Rewards"],"parameters":[{"schema":{"type":"string","enum":["default","private-credit"],"default":"default","description":"Type of vaults queried","example":"default"},"required":false,"description":"Type of vaults queried","name":"type","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"earnings":{"type":"object","properties":{"interest":{"type":"object","properties":{"usd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount in USD denomination","example":"1234.56789"}]},"sol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount in SOL denomination","example":"1234.56789"}]}},"required":["usd","sol"],"description":"Earnings from interest"},"rewards":{"type":"object","properties":{"usd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount in USD denomination","example":"1234.56789"}]},"sol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount in SOL denomination","example":"1234.56789"}]}},"required":["usd","sol"],"description":"Earnings from vault farm rewards"},"reserveRewards":{"type":"object","properties":{"usd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount in USD denomination","example":"1234.56789"}]},"sol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount in SOL denomination","example":"1234.56789"}]}},"required":["usd","sol"],"description":"Earnings from reserve rewards"},"total":{"type":"object","properties":{"usd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount in USD denomination","example":"1234.56789"}]},"sol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount in SOL denomination","example":"1234.56789"}]}},"required":["usd","sol"],"description":"Total earnings"}},"required":["interest","rewards","reserveRewards","total"],"description":"Earnings summary"}},"required":["earnings"],"description":"KVault Summary Data"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/season-rewards/users/{pubkey}":{"get":{"summary":"Get user season rewards","description":"Fetches combined season reward data from both KLend and KVault for a specific user","tags":["Season Rewards"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"required":true,"description":"Valid base58-encoded address","name":"pubkey","in":"path"},{"schema":{"type":"string","description":"Points source identifier","example":"Season1","examples":["Season1","Season2","Season3","Season4"]},"required":false,"description":"Points source identifier","name":"source","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeasonUserReward"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/season-rewards/final-vesting-pool":{"get":{"summary":"Get final vesting pool allocation","description":"Calculates total forfeited rewards from all users who claimed early before full vesting","tags":["Season Rewards"],"parameters":[{"schema":{"type":"string","description":"Points source identifier","example":"Season1","examples":["Season1","Season2","Season3","Season4"]},"required":false,"description":"Points source identifier","name":"source","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeasonFinalVestingPoolAllocation"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/oracles/prices":{"get":{"summary":"Get Kamino oracle prices","description":"Fetches all oracle prices for all public Klend Market assets","tags":["Other"],"parameters":[{"schema":{"type":"string","enum":["main","all"],"default":"main","description":"Controls which market set to query. 'main': select oracle prices from main market assets, 'all': select oracle prices from all public klend market assets.","example":"main"},"required":false,"description":"Controls which market set to query. 'main': select oracle prices from main market assets, 'all': select oracle prices from all public klend market assets.","name":"markets","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OraclePrice"}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/farms/users/{pubkey}/transactions":{"get":{"summary":"Get user farms transactions","description":"Get all farms program transactions for a given user (with pagination).","tags":["Farms"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address of the user wallet","example":"AxqtG9SHDkZTLSWg81Sp7VqAzQpRqXtR9ziJ3VQAS8As"}]},"required":true,"description":"Valid base58-encoded address of the user wallet","name":"pubkey","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":1000,"default":100,"example":100,"description":"Maximum number of results to return (1-1000)"},"required":false,"description":"Maximum number of results to return (1-1000)","name":"limit","in":"query"},{"schema":{"type":"string","example":"eyJsYXN0SWQiOiIxMjM0In0=","description":"Token for fetching the next page of results"},"required":false,"description":"Token for fetching the next page of results","name":"paginationToken","in":"query"},{"schema":{"type":"string","example":false,"description":"When true, returns all transactions without pagination"},"required":false,"description":"When true, returns all transactions without pagination","name":"noPagination","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc","description":"Sort order (asc for oldest first, desc for newest first)","example":"desc"},"required":false,"description":"Sort order (asc for oldest first, desc for newest first)","name":"sort","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"array","items":{"$ref":"#/components/schemas/FarmsInstruction"}},"paginationToken":{"type":"string","description":"Token for fetching the next page. Absent when no more results."}},"required":["result"]}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/farms/{farmPubkey}/transactions":{"get":{"summary":"Get farm transactions","description":"Get transactions for a specific farm (with pagination).","tags":["Farms"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Farm public key","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"}]},"required":true,"description":"Farm public key","name":"farmPubkey","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":1000,"default":100,"example":100,"description":"Maximum number of results to return (1-1000)"},"required":false,"description":"Maximum number of results to return (1-1000)","name":"limit","in":"query"},{"schema":{"type":"string","example":"eyJsYXN0SWQiOiIxMjM0In0=","description":"Token for fetching the next page of results"},"required":false,"description":"Token for fetching the next page of results","name":"paginationToken","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"desc","description":"Sort order (asc for oldest first, desc for newest first)","example":"desc"},"required":false,"description":"Sort order (asc for oldest first, desc for newest first)","name":"sort","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"result":{"type":"array","items":{"$ref":"#/components/schemas/FarmTransaction"}},"paginationToken":{"type":"string","description":"Token for fetching the next page. Absent when no more results."}},"required":["result"]}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"High-level error message describing the failure","example":"Invalid query params"},"details":{"type":"array","items":{"type":"object","properties":{}},"description":"Detailed validation issues (present only for validation errors)"}},"required":["error"],"description":"Bad request response (400)","example":{"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"}]}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/benchmark-rates/usd":{"get":{"summary":"Get USD benchmark lending rates","description":"Returns USD benchmark lending rates aggregated across multiple protocols. Data is sourced from Allez and cached. Supports filtering by date range and downsampling by frequency.","tags":["Other"],"parameters":[{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"default":"1970-01-01T00:00:00.000Z","description":"Date input (ISO 8601 string or epoch in ms)","examples":["2024-01-01T00:00:00.000Z",1704067200000],"example":"2020-01-01T00:00Z"},"required":false,"description":"Date input (ISO 8601 string or epoch in ms)","name":"start","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"number"}],"description":"Date input (ISO 8601 string or epoch in ms)","examples":["2024-01-01T00:00:00.000Z",1704067200000],"example":"2020-02-01T00:00Z"},"required":false,"description":"Date input (ISO 8601 string or epoch in ms)","name":"end","in":"query"},{"schema":{"type":"string","enum":["hour","day"],"default":"hour","description":"Data frequency/granularity. Defaults to hour.","example":"hour"},"required":false,"description":"Data frequency/granularity. Defaults to hour.","name":"frequency","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BenchmarkRatesResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"webhooks":{}}