{"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":{"AddressBase58":{"type":"string","description":"Valid base58-encoded address","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"},"Decimal":{"type":"string","description":"Decimal value represented as string","example":"1234.56789"},"SnapshotDateTime":{"type":"string","format":"date-time","description":"Timestamp when the snapshot was created (ISO 8601 format)","example":"2025-03-01T12:00:00.000Z"},"TransactionDateTime":{"type":"string","format":"date-time","description":"Timestamp when the transaction was executed (ISO 8601 format)","example":"2025-03-01T12:00:00.000Z"},"Apy":{"type":"string","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","examples":["0.123","0","1","1.23","-0.5","999999.999999"]},"MarketMetricsResponse":{"type":"object","properties":{"market":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Market public key","example":"9pMFoVgsG2cNiUCSBEE69iWFN7c1bz9gu9TtPeXkAMTs"}]},"timestamp":{"allOf":[{"$ref":"#/components/schemas/SnapshotDateTime"},{"description":"Timestamp of the metrics snapshot","example":"2023-06-29T15:15:26.464Z"}]},"metrics":{"type":"object","properties":{"borrowTVL":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total borrowed value in USD","example":"1.000099969999999979181237244607594483571"}]},"depositTVL":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total deposited value in USD","example":"8.357187000999999979181237244607594483571"}]},"obligations":{"type":"integer","description":"Number of obligations","example":38}},"required":["borrowTVL","depositTVL","obligations"],"description":"Market metrics"}},"required":["market","timestamp","metrics"]},"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"}},"BorrowAndStakingApyResponse":{"type":"object","properties":{"createdOn":{"allOf":[{"$ref":"#/components/schemas/SnapshotDateTime"},{"description":"Timestamp of the snapshot","example":"2023-10-17T15:00:06.009Z"}]},"borrowInterestApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Borrow interest APY","example":"0.027610992938039702"}]},"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"}]},"liquidityToken":{"type":"string","description":"Liquidity token symbol","example":"SOL"},"liquidityTokenMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Liquidity token mint address"}]},"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"}]},"totalBorrow":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total borrow amount"}]},"totalBorrowUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total borrow in USD"}]},"totalSupplyUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total supply in USD"}]}},"required":["reserve","liquidityToken","liquidityTokenMint","maxLtv","borrowApy","supplyApy","totalSupply","totalBorrow","totalBorrowUsd","totalSupplyUsd"]},"LeverageMetricsResponse":{"type":"object","properties":{"avgLeverage":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Average leverage"}]},"totalBorrowed":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total borrowed amount"}]},"totalDeposited":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total deposited amount"}]},"totalBorrowedUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total borrowed in USD"}]},"totalObligations":{"type":"string","description":"Total number of obligations"},"totalDepositedUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total deposited in USD"}]},"tvl":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total Value Locked"}]},"updatedOn":{"type":"string","format":"date-time","description":"Last update timestamp"},"depositReserve":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Deposit reserve public key"}]},"borrowReserve":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Borrow reserve public key"}]},"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"},{"description":"Market public key"}]},"reserves":{"type":"array","items":{"type":"object","properties":{"pubkey":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Reserve public key"}]},"data":{"type":"string","description":"Base64 encoded reserve account data"}},"required":["pubkey","data"]}}},"required":["market","reserves"]},"MarketsCollateralReservesResponse":{"type":"object","properties":{"collateralReserves":{"type":"array","items":{"$ref":"#/components/schemas/CollateralReserve"}}},"required":["collateralReserves"]},"CollateralReserve":{"type":"object","properties":{"lendingMarket":{"$ref":"#/components/schemas/AddressBase58"},"lendingMarketName":{"type":"string"},"name":{"type":"string"},"description":{"type":["string","null"]},"collateralReserve":{"$ref":"#/components/schemas/AddressBase58"},"collateralMint":{"$ref":"#/components/schemas/AddressBase58"},"borrowReserves":{"type":"array","items":{"$ref":"#/components/schemas/AddressBase58"}},"borrowReserveTerms":{"type":"array","items":{"$ref":"#/components/schemas/BorrowReserveTerms"},"description":"Elevation group terms per entry of borrowReserves, same order. Caps live on /reserves/batch/stats borrowCaps.debtAgainstCollateral. Absent on rows cached before the field existed."},"debtCategory":{"type":"string","description":"Readable debt asset category label","example":"Stablecoin assets"},"debtTag":{"type":"string","description":"Stable debt grouping, tab, and URL key","example":"stables"},"collateralCategory":{"type":["string","null"],"description":"Readable collateral asset category label, or null when uncategorized","example":"Crypto assets"},"collateralTag":{"type":["string","null"],"description":"Stable collateral tab key, or null when uncategorized","example":"crypto"},"collateralBackingDebtUsd":{"anyOf":[{"$ref":"#/components/schemas/Decimal"},{"type":"null"}],"description":"USD value of this collateral attributed pro rata to the debt represented by borrowReserves, or null when portfolio market data is unavailable"},"debtAgainstCollateralUsd":{"anyOf":[{"$ref":"#/components/schemas/Decimal"},{"type":"null"}],"description":"USD value of the debt represented by borrowReserves attributed pro rata against this collateral, or null when portfolio market data is unavailable"},"sizeUsd":{"anyOf":[{"$ref":"#/components/schemas/Decimal"},{"type":"null"}],"description":"Sum of collateralBackingDebtUsd and debtAgainstCollateralUsd, or null when either value is unavailable"},"slugs":{"type":"array","items":{"type":"string"}}},"required":["lendingMarket","lendingMarketName","name","description","collateralReserve","collateralMint","borrowReserves","debtCategory","debtTag","collateralCategory","collateralTag","collateralBackingDebtUsd","debtAgainstCollateralUsd","sizeUsd","slugs"]},"BorrowReserveTerms":{"type":"object","properties":{"reserve":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Debt reserve these terms apply to, matching an entry of borrowReserves","example":"d4A2prbA2whesmvHaL88BH6Ewn5N4bTSU2Ze8P6Bc4Q"}]},"elevationGroup":{"type":"integer","description":"Elevation group a borrow of this debt against this collateral would auto-select, being the usable common group with the highest ltvPct. 0 when the pair has no usable group, in which case the terms below are the reserves own configuration.","example":2},"maxLtv":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Maximum loan to value ratio for this collateral under elevationGroup","example":"0.87"}]},"liquidationLtv":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Liquidation loan to value ratio for this collateral under elevationGroup","example":"0.92"}]},"borrowFactor":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Borrow factor applied to this debt reserve under elevationGroup","example":"1"}]}},"required":["reserve","elevationGroup","maxLtv","liquidationLtv","borrowFactor"]},"MarketsBatchMetadataResponse":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/MarketMetadata"},"description":"Market metadata keyed by market public key. Unknown markets are omitted.","example":{"7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF":{"reserves":["d4A2prbA2whesmvHaL88BH6Ewn5N4bTSU2Ze8P6Bc4Q"],"name":"SOL/BTC Market","description":"Primary market on mainnet","isCurated":false}}},"MarketMetadata":{"type":"object","properties":{"reserves":{"type":"array","items":{"$ref":"#/components/schemas/AddressBase58"},"description":"Public keys of all reserves in the market","example":["d4A2prbA2whesmvHaL88BH6Ewn5N4bTSU2Ze8P6Bc4Q"]},"name":{"type":"string","description":"Market name","example":"SOL/BTC Market"},"description":{"type":"string","description":"Market description","example":"Primary market on mainnet"},"isCurated":{"type":"boolean","description":"Whether this market is curated","example":false}},"required":["reserves","name","description","isCurated"]},"MarketChartsResponse":{"type":"object","properties":{"history":{"type":"array","items":{"$ref":"#/components/schemas/MarketChartsHistoryPoint"}}},"required":["history"]},"MarketChartsHistoryPoint":{"type":"object","properties":{"timestamp":{"$ref":"#/components/schemas/SnapshotDateTime"},"totalBorrowed":{"anyOf":[{"$ref":"#/components/schemas/Decimal"},{"type":"null"}]},"totalSupplied":{"anyOf":[{"$ref":"#/components/schemas/Decimal"},{"type":"null"}]},"obligations":{"type":["integer","null"]}},"required":["timestamp","totalBorrowed","totalSupplied","obligations"]},"ReserveChartsResponse":{"type":"object","properties":{"borrowCurve":{"type":"array","items":{"$ref":"#/components/schemas/BorrowRateCurvePoint"}},"history":{"type":"array","items":{"$ref":"#/components/schemas/ReserveChartsHistoryPoint"}}},"required":["borrowCurve","history"]},"BorrowRateCurvePoint":{"type":"object","properties":{"utilizationRateBps":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Utilization rate in basis points","example":"8000"}]},"borrowRateBps":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Nominal annual borrow rate in basis points, before the interest-rate-basis adjustment and fixed host interest. See /reserves/{reservePubkey}/stats for those inputs and the formula.","example":"500"}]}},"required":["utilizationRateBps","borrowRateBps"]},"ReserveChartsHistoryPoint":{"type":"object","properties":{"timestamp":{"$ref":"#/components/schemas/SnapshotDateTime"},"supplyApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Base supply APY at this point in time","example":"0.0412"}]},"borrowApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Base borrow APY at this point in time","example":"0.0621"}]},"totalSupply":{"anyOf":[{"$ref":"#/components/schemas/Decimal"},{"type":"null"}],"description":"Total reserve supply in UI token units, or null when unavailable","example":"125000.5"},"totalSupplyUsd":{"anyOf":[{"$ref":"#/components/schemas/Decimal"},{"type":"null"}],"description":"Total reserve supply in USD, or null when unavailable","example":"250001"},"totalBorrow":{"anyOf":[{"$ref":"#/components/schemas/Decimal"},{"type":"null"}],"description":"Total reserve borrow in UI token units, or null when unavailable","example":"50000.2"},"totalBorrowUsd":{"anyOf":[{"$ref":"#/components/schemas/Decimal"},{"type":"null"}],"description":"Total reserve borrow in USD, or null when unavailable","example":"100000.4"},"utilization":{"anyOf":[{"$ref":"#/components/schemas/Decimal"},{"type":"null"}],"description":"Reserve utilization ratio from 0 to 1, calculated as totalBorrowUsd / totalSupplyUsd, or null when unavailable","example":"0.4"}},"required":["timestamp","supplyApy","borrowApy","totalSupply","totalSupplyUsd","totalBorrow","totalBorrowUsd","utilization"]},"ReservesBatchStatsResponse":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/ReserveStats"},"description":"Reserve stats keyed by reserve public key. Unknown reserves are omitted."},"ReserveStats":{"type":"object","properties":{"token":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Reserve liquidity token mint address"}]},"collateralMintAddress":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Reserve collateral token mint address"}]},"rateType":{"type":"string","enum":["variable","fixed","maturity"],"description":"Reserve borrow rate type","example":"variable"},"fixedTerm":{"type":["object","null"],"properties":{"termSeconds":{"type":"integer","description":"Fixed debt term duration in seconds","example":2592000},"apy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Current fixed-rate borrow APY","example":"0.0616"}]}},"required":["termSeconds","apy"],"description":"Fixed-term borrow details, or null for variable and maturity reserves"},"debtMaturityTimestamp":{"type":["string","null"],"format":"date-time","description":"Debt maturity timestamp, or null when the reserve has no configured maturity","example":"2026-08-28T00:00:00.000Z"},"status":{"type":"string","enum":["Active","Obsolete","Hidden"],"description":"On-chain reserve visibility status","example":"Active"},"interestRateBasis":{"type":"string","enum":["legacy","trueApr"],"description":"How the reserve interprets its rate config (borrow rate curve, hostFixedInterestRateBps, reward emissions). `legacy`: nominal slot-year rates accrued per slot over 63,072,000 slots, so the realized annual rate is the configured rate times 500 / recentSlotDurationInMs (see /slots/duration). `trueApr`: wall-clock rates accrued per second over 31,536,000 seconds, no slot adjustment. To plot the curve from /reserves/{reservePubkey}/charts borrowCurve: factor = basis === `trueApr` ? 1 : 500 / recentSlotDurationInMs; borrowApr(u) = (curveRate(u) + hostFixedInterestRateBps / 10000) * factor; supplyApr(u) = u * curveRate(u) * factor * (1 - protocolTakeRatePct / 100). Static per reserve config; reserves in one market can differ.","example":"trueApr"},"hostFixedInterestRateBps":{"type":"integer","description":"Fixed host interest added on top of the curve or fixed borrow rate, in basis points of the nominal annual rate in the reserve interestRateBasis. Paid entirely to the host: included in borrow APR, excluded from supply APR. 0 when not configured.","example":50},"protocolTakeRatePct":{"type":"integer","description":"Share of borrow interest taken by the protocol as an integer percentage from the reserve config. Depositors keep (100 - protocolTakeRatePct) / 100 of the curve interest; this is the raw config value, not the depositor keep-ratio.","example":10},"supplyApy":{"type":"object","properties":{"current":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Current base APY","example":"0.0412"}]},"avg7d":{"anyOf":[{"$ref":"#/components/schemas/Apy"},{"type":"null"}],"description":"Average base APY over the last 7 days, or null when no history is available","example":"0.0398"},"avg14d":{"anyOf":[{"$ref":"#/components/schemas/Apy"},{"type":"null"}],"description":"Average base APY over the last 14 days, or null when no history is available","example":"0.0395"},"avg30d":{"anyOf":[{"$ref":"#/components/schemas/Apy"},{"type":"null"}],"description":"Average base APY over the last 30 days, or null when no history is available","example":"0.039"},"avg60d":{"anyOf":[{"$ref":"#/components/schemas/Apy"},{"type":"null"}],"description":"Average base APY over the last 60 days, or null when no history is available","example":"0.0387"},"avg90d":{"anyOf":[{"$ref":"#/components/schemas/Apy"},{"type":"null"}],"description":"Average base APY over the last 90 days, or null when no history is available","example":"0.0384"},"avg180d":{"anyOf":[{"$ref":"#/components/schemas/Apy"},{"type":"null"}],"description":"Average base APY over the last 180 days, or null when no history is available","example":"0.0381"}},"required":["current","avg7d","avg14d","avg30d","avg60d","avg90d","avg180d"]},"borrowApy":{"type":"object","properties":{"current":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Current base APY","example":"0.0412"}]},"avg7d":{"anyOf":[{"$ref":"#/components/schemas/Apy"},{"type":"null"}],"description":"Average base APY over the last 7 days, or null when no history is available","example":"0.0398"},"avg14d":{"anyOf":[{"$ref":"#/components/schemas/Apy"},{"type":"null"}],"description":"Average base APY over the last 14 days, or null when no history is available","example":"0.0395"},"avg30d":{"anyOf":[{"$ref":"#/components/schemas/Apy"},{"type":"null"}],"description":"Average base APY over the last 30 days, or null when no history is available","example":"0.039"},"avg60d":{"anyOf":[{"$ref":"#/components/schemas/Apy"},{"type":"null"}],"description":"Average base APY over the last 60 days, or null when no history is available","example":"0.0387"},"avg90d":{"anyOf":[{"$ref":"#/components/schemas/Apy"},{"type":"null"}],"description":"Average base APY over the last 90 days, or null when no history is available","example":"0.0384"},"avg180d":{"anyOf":[{"$ref":"#/components/schemas/Apy"},{"type":"null"}],"description":"Average base APY over the last 180 days, or null when no history is available","example":"0.0381"}},"required":["current","avg7d","avg14d","avg30d","avg60d","avg90d","avg180d"]},"underlyingApy":{"type":["object","null"],"properties":{"current":{"$ref":"#/components/schemas/Apy"},"sourceType":{"type":"string","enum":["lst","lst-combined","yield-feed"],"description":"`lst`: median staking yield over the last 10 epochs. `lst-combined`: restaked LST, own 10-epoch mean plus the median of each configured underlying LST. `yield-feed`: latest hourly snapshot from the token's yield provider (principal tokens, RWAs, JLP, USDe/sUSDe)."},"sourceMint":{"anyOf":[{"$ref":"#/components/schemas/AddressBase58"},{"type":"null"}],"description":"Mint whose yield series produced this value. Differs from `token` when the reserve token inherits another token's yield (sUSDe reports the USDe mint). Null for `lst-combined`. For history use `/v2/underlying-yields/{token}/history`, not this field."},"observedAt":{"type":"string","format":"date-time","description":"Observation time of the source value. LST values are epoch-based and lag one to two days; yield-feed values are hourly snapshots no older than 48 hours."}},"required":["current","sourceType","sourceMint","observedAt"],"description":"Native yield of the reserve liquidity token itself: LST staking yield, principal-token implied yield, or the yield of an RWA / yield-bearing token. Excludes lending interest, farm incentives, season rewards and pair-specific rewards. Null when the token is not yield-bearing or no fresh source is available; a missing source is never reported as 0. Already included in supplyApyBreakdown.total."},"supplyApyBreakdown":{"type":"object","properties":{"lending":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Base lending APY, equals supplyApy.current"}]},"incentives":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Sum of supplyRewardApys[].apy"}]},"seasonRewards":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Anonymous season campaign APY. Currently always 0: season campaigns are over. Kept so the total formula stays stable if campaigns return."}]},"underlying":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"underlyingApy.current, or 0 when unavailable"}]},"total":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Sum of the four components"}]}},"required":["lending","incentives","seasonRewards","underlying","total"],"description":"Components of the supply APY shown in the Kamino UI for an anonymous viewer, all in decimal APY units. total = lending + incentives + seasonRewards + underlying. underlying is 0 when underlyingApy is null."},"borrowApyBreakdown":{"type":"object","properties":{"borrow":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"equals borrowApy.current (the fixed-rate APY for fixed-term reserves)"}]},"incentives":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Sum of borrowRewardApys[].apy"}]},"seasonRewards":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Anonymous season campaign APY. Currently always 0: season campaigns are over. Kept so the total formula stays stable if campaigns return."}]},"total":{"$ref":"#/components/schemas/Apy"}},"required":["borrow","incentives","seasonRewards","total"],"description":"Components of the borrow APY shown in the Kamino UI for an anonymous viewer, decimal units. total = borrow - incentives - seasonRewards."},"utilization":{"type":"object","properties":{"current":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Current utilization as a ratio of total borrow to total supply","example":"0.825"}]},"avg30d":{"anyOf":[{"$ref":"#/components/schemas/Decimal"},{"type":"null"}],"description":"Average utilization over the last 30 days, or null when no history is available","example":"0.81"},"avg90d":{"anyOf":[{"$ref":"#/components/schemas/Decimal"},{"type":"null"}],"description":"Average utilization over the last 90 days, or null when no history is available","example":"0.79"},"avg180d":{"anyOf":[{"$ref":"#/components/schemas/Decimal"},{"type":"null"}],"description":"Average utilization over the last 180 days, or null when no history is available","example":"0.77"},"avg365d":{"anyOf":[{"$ref":"#/components/schemas/Decimal"},{"type":"null"}],"description":"Average utilization over the last 365 days, or null when no history is available","example":"0.74"}},"required":["current","avg30d","avg90d","avg180d","avg365d"],"description":"Current reserve utilization and historical averages"},"autoDeleverage":{"type":"object","properties":{"reserve":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether this reserve is subject to auto-deleveraging after its deposit or borrow limit is crossed. Effective only when the market flag is also enabled."},"marginCallPeriodSecs":{"type":"integer","description":"Time in seconds that must pass before deleveraging liquidations start after the limit is crossed. Only relevant when auto-deleveraging is enabled.","example":259200},"thresholdDecreaseBpsPerDay":{"type":"integer","description":"Rate at which the deleveraging LTV threshold decreases, in bps per day. Only relevant when auto-deleveraging is enabled.","example":100},"bonusIncreaseBpsPerDay":{"type":"integer","description":"Rate at which the deleveraging liquidation bonus increases, in bps per day. Only relevant when auto-deleveraging is enabled.","example":50},"minBonusBps":{"type":"integer","description":"Starting bonus for deleveraging liquidations, in bps","example":10}},"required":["enabled","marginCallPeriodSecs","thresholdDecreaseBpsPerDay","bonusIncreaseBpsPerDay","minBonusBps"]},"market":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Market-wide auto-deleveraging gate. Reserve-level auto-deleveraging only applies when this is enabled."},"individualMarginCallPeriodSecs":{"type":"integer","description":"Time in seconds that must pass before deleveraging liquidations start for obligations individually marked for auto-deleveraging","example":86400}},"required":["enabled","individualMarginCallPeriodSecs"]}},"required":["reserve","market"],"description":"On-chain auto-deleveraging configuration of the reserve and its lending market"},"supplyRewardApys":{"type":"array","items":{"type":"object","properties":{"rewardToken":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Reward token mint address"}]},"apy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Current reward APY component","example":"0.011"}]},"tokensPerSecond":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Reward token emission rate in UI token units per second","example":"0.00165"}]}},"required":["rewardToken","apy","tokensPerSecond"]},"description":"Current supply-side farm reward APY components"},"borrowRewardApys":{"type":"array","items":{"type":"object","properties":{"rewardToken":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Reward token mint address"}]},"apy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Current reward APY component","example":"0.011"}]},"tokensPerSecond":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Reward token emission rate in UI token units per second","example":"0.00165"}]}},"required":["rewardToken","apy","tokensPerSecond"]},"description":"Current borrow-side farm reward APY components"},"pairIncentives":{"type":"array","items":{"type":"object","properties":{"side":{"type":"string","enum":["supply","borrow"],"description":"This reserve's role in the incentivized collateral/debt pair"},"collateralReserve":{"$ref":"#/components/schemas/AddressBase58"},"collateralToken":{"$ref":"#/components/schemas/AddressBase58"},"debtReserve":{"$ref":"#/components/schemas/AddressBase58"},"debtToken":{"$ref":"#/components/schemas/AddressBase58"},"farm":{"$ref":"#/components/schemas/AddressBase58"},"rewardToken":{"$ref":"#/components/schemas/AddressBase58"},"apy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Current pair-specific reward APY on eligible pair debt, as a decimal fraction"}]},"tokensPerSecond":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Reward token emission rate in UI token units per second"}]},"stakedUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total eligible pair debt in USD used as the APY denominator"}]},"readMoreUrl":{"type":["string","null"],"format":"uri","description":"HTTPS link with more information about the incentive, or null when none is configured"}},"required":["side","collateralReserve","collateralToken","debtReserve","debtToken","farm","rewardToken","apy","tokensPerSecond","stakedUsd","readMoreUrl"]},"description":"Live pair-specific incentives whose eligibility depends on the counterparty asset. Rows are present only while the configured farm is active, funded, emitting and staked. These APYs are not included in supplyApyBreakdown.total or borrowApyBreakdown.total. Derive collateral \"Up to\" APY as max(apy) over supply rows and estimated net borrow APY as borrowApy.current - apy."},"pointsPrograms":{"type":"array","items":{"type":"object","properties":{"side":{"type":"string","enum":["supply","borrow"],"description":"Reserve action that earns points"},"key":{"type":"string","description":"Stable partner identifier, for example solstice"},"name":{"type":"string","description":"Display name of the points program"},"description":{"type":"string","description":"Display copy explaining how this reserve action earns points"},"iconUrl":{"type":"string","format":"uri","description":"HTTPS URL of the points program icon"},"learnMoreUrl":{"type":"string","format":"uri","description":"HTTPS URL with more information about the points program"}},"required":["side","key","name","description","iconUrl","learnMoreUrl"]},"description":"Partner points programs for this reserve and side. These programs have no numeric APY and are not included in supplyApyBreakdown.total or borrowApyBreakdown.total."},"liquidityAvailable":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Available reserve liquidity in UI token units"}]},"liquidityAvailableUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Available reserve liquidity in USD"}]},"actualAvailableLiquidity":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Maximum cap-aware reserve liquidity available for borrowing across cross mode and configured elevation groups, in UI token units. This does not include obligation-specific collateral or LTV constraints."}]},"actualAvailableLiquidityUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Maximum cap-aware reserve liquidity available for borrowing across cross mode and configured elevation groups, in USD. This does not include obligation-specific collateral or LTV constraints."}]},"utilizationLimitBlockBorrowingAbovePct":{"type":"integer","description":"Utilization percentage above which new borrowing is blocked. A value of 0 disables the limit.","example":95},"borrowCaps":{"type":"object","properties":{"utilization":{"type":"object","properties":{"limitPct":{"type":"integer","description":"Utilization percentage above which new borrowing is blocked. A value of 0 disables the limit.","example":95},"currentPct":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Current reserve utilization as a percentage","example":"82.5"}]}},"required":["limitPct","currentPct"]},"netWithdrawal":{"type":["object","null"],"properties":{"capacity":{"$ref":"#/components/schemas/Decimal"},"currentTotal":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount used in the current interval in UI token units. Read as 0 once the interval has elapsed."}]},"intervalLengthSeconds":{"type":"integer"},"lastIntervalStartTimestamp":{"type":"string","format":"date-time"}},"required":["capacity","currentTotal","intervalLengthSeconds","lastIntervalStartTimestamp"],"description":"Net withdrawal cap for reserve debt, or null when the cap is not configured"},"globalDebt":{"type":"object","properties":{"capacity":{"anyOf":[{"$ref":"#/components/schemas/Decimal"},{"type":"null"}],"description":"Configured cap in UI token units, or null when uncapped"},"currentTotal":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount currently counted against the cap in UI token units"}]}},"required":["capacity","currentTotal"],"description":"Global reserve debt cap and current total borrow"},"debtOutsideElevationGroup":{"type":"object","properties":{"capacity":{"anyOf":[{"$ref":"#/components/schemas/Decimal"},{"type":"null"}],"description":"Configured cap in UI token units, or null when uncapped"},"currentTotal":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount currently counted against the cap in UI token units"}]}},"required":["capacity","currentTotal"],"description":"Debt cap and current debt outside elevation groups"},"debtAgainstCollateral":{"type":"array","items":{"type":"object","properties":{"capacity":{"anyOf":[{"$ref":"#/components/schemas/Decimal"},{"type":"null"}],"description":"Configured cap in UI token units, or null when uncapped"},"currentTotal":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount currently counted against the cap in UI token units"}]},"collateralReserve":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Collateral reserve whose elevation-group debt cap is represented"}]},"elevationGroup":{"type":"integer","exclusiveMinimum":0}},"required":["capacity","currentTotal","collateralReserve","elevationGroup"]}}},"required":["utilization","netWithdrawal","globalDebt","debtOutsideElevationGroup","debtAgainstCollateral"],"description":"Configured reserve borrowing caps and their current on-chain counters"},"totalSupply":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total reserve supply in UI token units"}]},"totalSupplyUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total reserve supply in USD"}]},"totalBorrow":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total reserve borrow in UI token units"}]},"totalBorrowUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total reserve borrow in USD"}]},"liqLTV":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Liquidation loan-to-value ratio","example":"0.8"}]},"maxLTV":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Maximum loan-to-value ratio","example":"0.75"}]},"borrowFactor":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Borrow factor as a ratio","example":"1"}]},"depositLimit":{"anyOf":[{"$ref":"#/components/schemas/Decimal"},{"type":"null"}],"description":"Reserve deposit limit in UI token units, or null when uncapped","example":"200000"},"borrowLimit":{"anyOf":[{"$ref":"#/components/schemas/Decimal"},{"type":"null"}],"description":"Reserve borrow limit in UI token units, or null when uncapped","example":"150000"},"minLiquidationBonus":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Minimum liquidation bonus as a ratio","example":"0.02"}]},"liquidationMaxDebtCloseFactorPct":{"type":"integer","description":"Market maximum debt close factor as an integer percentage","example":10},"limits":{"type":"object","properties":{"depositWithdrawalCap":{"type":["object","null"],"properties":{"capacity":{"$ref":"#/components/schemas/Decimal"},"currentTotal":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount used in the current interval in UI token units. Read as 0 once the interval has elapsed."}]},"intervalLengthSeconds":{"type":"integer"},"lastIntervalStartTimestamp":{"type":"string","format":"date-time"}},"required":["capacity","currentTotal","intervalLengthSeconds","lastIntervalStartTimestamp"],"description":"Deposit withdrawal cap, or null when the cap is not configured"},"debtWithdrawalCap":{"type":["object","null"],"properties":{"capacity":{"$ref":"#/components/schemas/Decimal"},"currentTotal":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount used in the current interval in UI token units. Read as 0 once the interval has elapsed."}]},"intervalLengthSeconds":{"type":"integer"},"lastIntervalStartTimestamp":{"type":"string","format":"date-time"}},"required":["capacity","currentTotal","intervalLengthSeconds","lastIntervalStartTimestamp"],"description":"Debt withdrawal cap, or null when the cap is not configured"}},"required":["depositWithdrawalCap","debtWithdrawalCap"]},"proofOfReserves":{"type":"object","properties":{"verified":{"type":"boolean"},"address":{"$ref":"#/components/schemas/AddressBase58"}},"required":["verified","address"]}},"required":["token","collateralMintAddress","rateType","fixedTerm","debtMaturityTimestamp","status","interestRateBasis","hostFixedInterestRateBps","protocolTakeRatePct","supplyApy","borrowApy","underlyingApy","supplyApyBreakdown","borrowApyBreakdown","utilization","autoDeleverage","supplyRewardApys","borrowRewardApys","pairIncentives","pointsPrograms","liquidityAvailable","liquidityAvailableUsd","actualAvailableLiquidity","actualAvailableLiquidityUsd","utilizationLimitBlockBorrowingAbovePct","borrowCaps","totalSupply","totalSupplyUsd","totalBorrow","totalBorrowUsd","liqLTV","maxLTV","borrowFactor","depositLimit","borrowLimit","minLiquidationBonus","liquidationMaxDebtCloseFactorPct","limits","proofOfReserves"]},"KaminoLiquidityTransactionsV2Response":{"type":"object","properties":{"transactions":{"type":"array","items":{"$ref":"#/components/schemas/KaminoLiquidityTransactionV2"}}},"required":["transactions"]},"KaminoLiquidityTransactionV2":{"type":"object","properties":{"createdOn":{"type":"string","format":"date-time","description":"Timestamp when the instruction was executed (ISO 8601 format)","example":"2025-03-01T12:00:00.000Z"},"timestamp":{"type":"integer","description":"Unix timestamp of the instruction in milliseconds","example":1740830400000},"transactionSignature":{"type":"string","description":"Transaction signature","example":"2XWcSQVtR4NoHBhzYpDkYkmYtEFkFXC5ZwrKiPok1kvA86GvnN15qP7RNP6eTeNWgJqgnR1GA2M3QPp1hucW7e1v"},"transactionName":{"type":"string","description":"Instruction display name","example":"Deposit"},"strategy":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Strategy address"}]},"tokenA":{"type":"string","description":"Token A symbol","example":"SOL"},"tokenAMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Token A mint"}]},"tokenAAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Token A amount"}]},"tokenAPrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Token A price in USD"}]},"tokenB":{"type":"string","description":"Token B symbol","example":"USDC"},"tokenBMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Token B mint"}]},"tokenBAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Token B amount"}]},"tokenBPrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Token B price in USD"}]},"usdValue":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Instruction value in USD"}]},"numberOfShares":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Number of strategy shares"}]},"sharePrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Share price in USD"}]},"solPrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"SOL price in USD"}]},"fullWithdraw":{"type":"boolean","description":"Whether the withdrawal closed the position, absent when unknown"},"latestPosition":{"type":"boolean","description":"Whether the instruction belongs to the current position in the strategy"}},"required":["createdOn","timestamp","transactionSignature","transactionName","strategy","tokenA","tokenAMint","tokenAAmount","tokenAPrice","tokenB","tokenBMint","tokenBAmount","tokenBPrice","usdValue","numberOfShares","sharePrice","solPrice","latestPosition"]},"KlendTransactionsResponseV2":{"type":"object","properties":{"transactions":{"type":"array","items":{"$ref":"#/components/schemas/KlendTransactionResponseV2"}}},"required":["transactions"]},"KlendTransactionResponseV2":{"type":"object","properties":{"createdOn":{"type":"string","format":"date-time"},"timestamp":{"type":"number"},"transactionSignature":{"type":"string"},"transactionName":{"type":"string"},"liquidityToken":{"type":"string"},"liquidityTokenMint":{"$ref":"#/components/schemas/AddressBase58"},"liquidityTokenAmount":{"$ref":"#/components/schemas/Decimal"},"liquidityTokenPrice":{"$ref":"#/components/schemas/Decimal"},"solPrice":{"$ref":"#/components/schemas/Decimal"},"liquidityUsdValue":{"$ref":"#/components/schemas/Decimal"},"isLiquidationWithdrawal":{"type":"boolean"},"obligation":{"$ref":"#/components/schemas/AddressBase58"},"obligationType":{"type":"string"},"transactionDisplayName":{"type":"string"},"isSecondPartOfCompositeIx":{"type":"boolean"}},"required":["createdOn","timestamp","transactionSignature","transactionName","liquidityToken","liquidityTokenMint","liquidityTokenAmount","isLiquidationWithdrawal","obligation","obligationType","transactionDisplayName"]},"KlendAllMarketsUserTransactionsResponseV2":{"type":"array","items":{"$ref":"#/components/schemas/KlendAllMarketsUserTransactionsItem"}},"KlendAllMarketsUserTransactionsItem":{"type":"object","properties":{"market":{"$ref":"#/components/schemas/AddressBase58"},"obligations":{"type":"object","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/KlendTransactionUserResponseV2"}}}},"required":["market","obligations"]},"KlendTransactionUserResponseV2":{"type":"object","properties":{"createdOn":{"type":"string","format":"date-time"},"timestamp":{"type":"number"},"transactionSignature":{"type":"string"},"transactionName":{"type":"string"},"liquidityToken":{"type":"string"},"liquidityTokenMint":{"$ref":"#/components/schemas/AddressBase58"},"liquidityTokenAmount":{"$ref":"#/components/schemas/Decimal"},"liquidityTokenPrice":{"$ref":"#/components/schemas/Decimal"},"solPrice":{"$ref":"#/components/schemas/Decimal"},"liquidityUsdValue":{"$ref":"#/components/schemas/Decimal"},"isLiquidationWithdrawal":{"type":"boolean"},"obligationType":{"type":"string"},"transactionDisplayName":{"type":"string"},"isSecondPartOfCompositeIx":{"type":"boolean"}},"required":["createdOn","timestamp","transactionSignature","transactionName","liquidityToken","liquidityTokenMint","liquidityTokenAmount","isLiquidationWithdrawal","obligationType","transactionDisplayName"]},"KlendUserTransactionsResponseV2":{"type":"object","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/KlendTransactionUserResponseV2"}}},"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"]},"KlendBulkTxResultItem":{"type":"object","properties":{"ixs":{"type":"array","items":{}},"timestamp":{"type":"string","format":"date-time"},"signature":{"type":"string"},"obligation":{"type":"string"},"wallet":{"type":"string"},"rawJson":{"type":"string"}},"required":["ixs","timestamp","signature","obligation","wallet"]},"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":"SOL/BTC 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":{"$ref":"#/components/schemas/Decimal"},"sol":{"$ref":"#/components/schemas/Decimal"}},"required":["usd","sol"],"description":"Invested amounts"},"truncatedHistory":{"type":"boolean","description":"Set when the obligation transaction history exceeded the computation cap and older transactions were dropped from the PnL calculation"}},"required":["usd","sol"]},"InterestRateEarnedResponse":{"type":"object","properties":{"totalFeesEarnedObligation":{"$ref":"#/components/schemas/TotalFeesObligation"},"historicalFeesObligation":{"$ref":"#/components/schemas/HistoricalFeesObligation"}},"required":["totalFeesEarnedObligation","historicalFeesObligation"]},"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"}}},"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"]},"HistoricalFeesObligation":{"type":"object","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/TokenInterestFees"}},"description":"Historical breakdown of interest fees earned over time"},"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"}}},"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"]},"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"]},"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"]},"ObligationMetrics":{"type":"object","properties":{"timestamp":{"allOf":[{"$ref":"#/components/schemas/SnapshotDateTime"},{"description":"Timestamp of the metrics snapshot","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":6,"description":"Obligation type tag (0 = Vanilla, 1 = Multiply, 2 = Lending, 3 = Leverage, 4 = MultiplyFixedRate, 5 = LendingFixedRate, 6 = LeverageFixedRate)","example":0},"obligationSolValues":{"$ref":"#/components/schemas/ObligationSolValues"}},"required":["timestamp","refreshedStats","deposits","borrows","tag","obligationSolValues"]},"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"}]},"reserve":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Address of the reserve backing the position. Absent on snapshots taken before reserve tracking was added to the indexer (2026-01-16).","example":"D6q6wuQSrifJKZYpR1M8R4YawnLDtDsMmWM1NbBmgJ59"}]}},"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"},"KlendAllMarketsUserTransactionsResponseV3":{"type":"array","items":{"$ref":"#/components/schemas/KlendAllMarketsUserTransactionsItemV3"}},"KlendAllMarketsUserTransactionsItemV3":{"type":"object","properties":{"market":{"$ref":"#/components/schemas/AddressBase58"},"obligations":{"$ref":"#/components/schemas/KlendUserObligationsMapV3"},"withdrawQueueTransactions":{"type":"array","items":{"$ref":"#/components/schemas/KlendWithdrawQueueTransactionV3"}}},"required":["market","obligations","withdrawQueueTransactions"]},"KlendUserObligationsMapV3":{"type":"object","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/KlendTransactionUserResponseV3"}}},"KlendTransactionUserResponseV3":{"type":"object","properties":{"createdOn":{"type":"string","format":"date-time"},"transactionSignature":{"type":"string"},"transactionName":{"type":"string"},"liquidityToken":{"type":"string"},"liquidityTokenMint":{"$ref":"#/components/schemas/AddressBase58"},"liquidityTokenAmount":{"$ref":"#/components/schemas/Decimal"},"liquidityTokenPrice":{"$ref":"#/components/schemas/Decimal"},"solPrice":{"$ref":"#/components/schemas/Decimal"},"liquidityUsdValue":{"$ref":"#/components/schemas/Decimal"},"isLiquidationWithdrawal":{"type":"boolean"},"obligationType":{"type":"string"},"transactionDisplayName":{"type":"string"},"isSecondPartOfCompositeIx":{"type":"boolean"},"timestamp":{"type":"string","pattern":"^\\d+$","description":"Unix timestamp in milliseconds"}},"required":["createdOn","transactionSignature","transactionName","liquidityToken","liquidityTokenMint","liquidityTokenAmount","isLiquidationWithdrawal","obligationType","transactionDisplayName","timestamp"]},"KlendWithdrawQueueTransactionV3":{"type":"object","properties":{"createdOn":{"type":"string","format":"date-time"},"timestamp":{"type":"number"},"transactionSignature":{"type":"string"},"transactionName":{"type":"string"},"transactionDisplayName":{"type":"string"},"reserve":{"$ref":"#/components/schemas/AddressBase58"},"withdrawTicket":{"$ref":"#/components/schemas/AddressBase58"},"solPrice":{"$ref":"#/components/schemas/Decimal"},"liquidityToken":{"type":"string"},"liquidityTokenMint":{"$ref":"#/components/schemas/AddressBase58"},"liquidityTokenAmount":{"$ref":"#/components/schemas/Decimal"},"liquidityTokenPrice":{"$ref":"#/components/schemas/Decimal"},"liquidityUsdValue":{"$ref":"#/components/schemas/Decimal"}},"required":["createdOn","timestamp","transactionSignature","transactionName","transactionDisplayName","reserve","withdrawTicket","solPrice","liquidityToken","liquidityTokenMint","liquidityTokenAmount","liquidityTokenPrice","liquidityUsdValue"]},"KlendUserTransactionsResponseV3":{"type":"object","properties":{"obligations":{"$ref":"#/components/schemas/KlendUserObligationsMapV3"},"withdrawQueueTransactions":{"type":"array","items":{"$ref":"#/components/schemas/KlendWithdrawQueueTransactionV3"}}},"required":["obligations","withdrawQueueTransactions"]},"KlendBulkTxResponseV3":{"type":"object","properties":{"obligationTransactions":{"type":"array","items":{"$ref":"#/components/schemas/KlendBulkTxObligationResultItemV3"}},"withdrawQueueTransactions":{"type":"array","items":{"$ref":"#/components/schemas/KlendBulkTxWithdrawQueueResultItemV3"}},"paginationToken":{"type":"string","description":"Token for next page. Absent when no more results."}},"required":["obligationTransactions","withdrawQueueTransactions"]},"KlendBulkTxObligationResultItemV3":{"type":"object","properties":{"ixs":{"type":"array","items":{}},"timestamp":{"type":"string","format":"date-time"},"signature":{"type":"string"},"obligation":{"type":"string"},"wallet":{"type":"string"},"rawJson":{"type":"string"}},"required":["ixs","timestamp","signature","obligation","wallet"]},"KlendBulkTxWithdrawQueueResultItemV3":{"type":"object","properties":{"ixs":{"type":"array","items":{}},"timestamp":{"type":"string","format":"date-time"},"signature":{"type":"string"},"wallet":{"type":"string"},"reserve":{"$ref":"#/components/schemas/AddressBase58"},"withdrawTicket":{"$ref":"#/components/schemas/AddressBase58"},"rawJson":{"type":"string"}},"required":["ixs","timestamp","signature","wallet","reserve","withdrawTicket"]},"KlendBulkTxBodyV3":{"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"]},"KlendDepositPositionHistoryResponse":{"type":"array","items":{"$ref":"#/components/schemas/KlendDepositPositionHistoryItem"}},"KlendDepositPositionHistoryItem":{"type":"object","properties":{"createdOn":{"type":"string","format":"date-time","description":"Snapshot timestamp"},"tokenAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Deposited liquidity token amount"}]},"usdAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"USD value of the deposit"}]},"apy":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Supply APY at the snapshot"}]},"cumulativeInterestEarned":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Lifetime interest earned in liquidity tokens"}]},"cumulativeInterestEarnedUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Lifetime interest earned in USD"}]},"cumulativeInterestEarnedSol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Lifetime interest earned in SOL"}]}},"required":["createdOn","tokenAmount","usdAmount","apy","cumulativeInterestEarned","cumulativeInterestEarnedUsd","cumulativeInterestEarnedSol"]},"BorrowOrderFillsResponse":{"type":"object","properties":{"fills":{"type":"array","items":{"$ref":"#/components/schemas/BorrowOrderFill"}}},"required":["fills"]},"BorrowOrderFill":{"type":"object","properties":{"eventType":{"type":"string","enum":["partial_fill","full_fill"],"description":"Type of fill event","example":"partial_fill"},"eventTimestamp":{"type":"string","format":"date-time","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"}]},"filledAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount filled in this event (difference of remaining debt before and after)"}]}},"required":["eventType","eventTimestamp","transactionSignature","debtLiquidityMint","filledAmount"]},"ObligationsWithOpenBorrowOrdersResponse":{"type":"object","properties":{"obligations":{"type":"array","items":{"$ref":"#/components/schemas/OpenBorrowOrder"}}},"required":["obligations"]},"OpenBorrowOrder":{"type":"object","properties":{"obligationPubkey":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Obligation public key"}]},"owner":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Obligation owner wallet"}]},"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"}]},"remainingDebtAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Remaining debt amount to be filled, in lamports"}]},"requestedDebtAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Originally requested debt amount, in lamports"}]},"filledDebtDestination":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Token account where filled funds are sent"}]},"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"}]},"fillableUntilTimestamp":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Unix timestamp until which the order can be filled"}]},"placedAtTimestamp":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Unix timestamp when the order was placed"}]},"lastUpdatedAtTimestamp":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Unix timestamp when the order was last updated"}]}},"required":["obligationPubkey","owner","deposits","debtLiquidityMint","remainingDebtAmount","requestedDebtAmount","filledDebtDestination","maxBorrowRateBps","minDebtTermSeconds","fillableUntilTimestamp","placedAtTimestamp","lastUpdatedAtTimestamp"]},"ObligationDeposit":{"type":"object","properties":{"depositReserve":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Reserve address the collateral is deposited to"}]},"depositedAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount of collateral deposited"}]}},"required":["depositReserve","depositedAmount"]},"YieldHistoryResponse":{"type":"array","items":{"$ref":"#/components/schemas/YieldHistoryItem"}},"YieldHistoryItem":{"type":"object","properties":{"createdOn":{"$ref":"#/components/schemas/SnapshotDateTime"},"apr":{"$ref":"#/components/schemas/Apr"},"apy":{"$ref":"#/components/schemas/Apy"}},"required":["createdOn","apr","apy"]},"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"]},"PtYieldsResponse":{"type":"array","items":{"$ref":"#/components/schemas/PtYieldItem"}},"PtYieldItem":{"type":"object","properties":{"apy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Fresh stored PT APY in decimal units for an active Kamino reserve. Matches reserve stats `underlyingApy.current` for the same stored snapshot."}]},"tokenMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Valid base58-encoded address of the token mint","example":"So11111111111111111111111111111111111111112","examples":["So11111111111111111111111111111111111111112","EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"]}]}},"required":["apy","tokenMint"]},"AirdropAllocation":{"type":"object","properties":{"quantity":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Quantity of tokens allocated to the user for the airdrop"}]},"name":{"type":"string","description":"Name of the airdrop allocation source","example":"main"}},"required":["quantity","name"]},"AirdropMetrics":{"type":"object","properties":{"totalAllocation":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total allocated amount across all users for this airdrop"}]},"totalUsers":{"$ref":"#/components/schemas/Integer"},"claimDate":{"allOf":[{"$ref":"#/components/schemas/SnapshotDateTime"},{"description":"Date when the airdrop claim becomes available or was executed"}]}},"required":["totalAllocation","totalUsers","claimDate"]},"Integer":{"type":"string","description":"Total number of unique users participating in the airdrop","example":"1","examples":["0","1","100","-1"]},"StakingYield":{"type":"object","properties":{"apy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Staking APY in decimal format for the token"}]},"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"}]},"endBlockTime":{"allOf":[{"$ref":"#/components/schemas/SnapshotDateTime"},{"description":"UTC timestamp when the epoch ended"}]}},"required":["epoch","firstSlot","lastSlot","startBlockTime","endBlockTime"]},"KVaultInstruction":{"type":"object","properties":{"createdOn":{"type":"string","format":"date-time","description":"Date when the instruction was created"},"instruction":{"type":"string","description":"Type of instruction"},"tokenMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Token mint address"}]},"tokenAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount of tokens involved"}]},"tokenPrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Price of the token at the time of instruction"}]},"solPrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Price of SOL at the time of instruction"}]},"sharePrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Price per share at the time of instruction"}]},"numberOfShares":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Number of shares involved"}]},"usdValue":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"USD value of the transaction"}]},"transaction":{"type":"string","description":"Transaction signature"},"kvault":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"KVault identifier"}]},"latestPosition":{"type":"boolean","description":"Indicates if this is the latest position"}},"required":["createdOn","instruction","tokenMint","tokenAmount","tokenPrice","solPrice","sharePrice","numberOfShares","usdValue","transaction","kvault","latestPosition"]},"KvaultAllocationTransactionsResponse":{"type":"object","properties":{"result":{"type":"array","items":{"$ref":"#/components/schemas/KvaultAllocationTransaction"}},"paginationToken":{"type":"string","example":"eyJsYXN0SWQiOjgxfQ==","description":"Optional pagination token"}},"required":["result"]},"KvaultAllocationTransaction":{"type":"object","properties":{"createdOn":{"allOf":[{"$ref":"#/components/schemas/TransactionDateTime"},{"description":"Timestamp when the allocation changed"}]},"tx":{"type":"string","description":"Transaction signature","example":"2XWcSQVtR4NoHBhzYpDkYkmYtEFkFXC5ZwrKiPok1kvA86GvnN15qP7RNP6eTeNWgJqgnR1GA2M3QPp1hucW7e1v"},"market":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the lending market"}]},"reserve":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the allocation reserve"}]},"solPrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"SOL price when the allocation changed"}]},"tokenPrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Vault token price when the allocation changed"}]},"tokenAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Signed vault token amount: positive when supplied to the reserve and negative when withdrawn from it"}]}},"required":["createdOn","tx","market","reserve","solPrice","tokenPrice","tokenAmount"]},"KvaultBulkTransaction":{"type":"object","properties":{"ix":{"$ref":"#/components/schemas/KvaultEnrichedInstruction"},"timestamp":{"$ref":"#/components/schemas/TransactionDateTime"},"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"]},"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":{"$ref":"#/components/schemas/Decimal"},"sharePrice":{"$ref":"#/components/schemas/Decimal"},"tokenPrice":{"$ref":"#/components/schemas/Decimal"},"tokenAmount":{"$ref":"#/components/schemas/Decimal"},"numberOfShares":{"$ref":"#/components/schemas/Decimal"}},"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"}},"KvaultVaultTransactionsResponse":{"type":"object","properties":{"result":{"type":"array","items":{"$ref":"#/components/schemas/KvaultVaultTransaction"}},"paginationToken":{"type":"string","example":"eyJsYXN0SWQiOjgxfQ==","description":"Optional pagination token"}},"required":["result"]},"KvaultVaultTransaction":{"type":"object","properties":{"ix":{"$ref":"#/components/schemas/KvaultVaultEnrichedInstruction"},"timestamp":{"$ref":"#/components/schemas/TransactionDateTime"},"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"]},"KvaultVaultEnrichedInstruction":{"type":"object","properties":{"market":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"KLend market public key"}]},"reserve":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"KLend reserve public key"}]},"solPrice":{"$ref":"#/components/schemas/Decimal"},"sharePrice":{"$ref":"#/components/schemas/Decimal"},"tokenPrice":{"$ref":"#/components/schemas/Decimal"},"tokenAmount":{"$ref":"#/components/schemas/Decimal"},"numberOfShares":{"$ref":"#/components/schemas/Decimal"}},"required":["solPrice","sharePrice","tokenPrice","tokenAmount","numberOfShares"]},"EnqueuedWithdrawTransactionsResponse":{"type":"array","items":{"$ref":"#/components/schemas/KlendWithdrawQueueTransactionV3"}},"VaultStateArray":{"type":"array","items":{"type":"object","properties":{"address":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the vault"}]},"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"}]}},"required":["address","state","programId"]}},"The vault state object":{"type":"object","properties":{"vaultAdminAuthority":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the vault admin authority"}]},"baseVaultAuthority":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the base vault authority"}]},"baseVaultAuthorityBump":{"type":"number","description":"Bump seed for the base vault authority"},"tokenMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the token mint"}]},"tokenMintDecimals":{"type":"number","description":"Decimals of the token mint"},"tokenVault":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the token vault"}]},"tokenProgram":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the token program"}]},"sharesMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the shares mint"}]},"sharesMintDecimals":{"type":"number","description":"Decimals of the shares mint"},"tokenAvailable":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount of tokens available in the vault"}]},"sharesIssued":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total shares issued by the vault"}]},"availableCrankFunds":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"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"}]},"pendingFees":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Pending fees scaled factor"}]},"vaultAllocationStrategy":{"type":"array","items":{"type":"object","properties":{"reserve":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the reserve"}]},"ctokenVault":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the cToken vault"}]},"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"}]}},"required":["reserve","ctokenVault","targetAllocationWeight","tokenAllocationCap","ctokenVaultBump","ctokenAllocation","lastInvestSlot","tokenTargetAllocation"],"description":"Vault allocation strategy entry"},"description":"List of vault allocation strategies"},"minDepositAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Minimum deposit amount in lamports"}]},"minWithdrawAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Minimum withdraw amount in lamports"}]},"minInvestAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Minimum invest amount in lamports"}]},"minInvestDelaySlots":{"type":"number","description":"Minimum invest delay in slots"},"crankFundFeePerReserve":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Crank fund fee per reserve"}]},"pendingAdmin":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the pending admin"}]},"cumulativeEarnedInterest":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Cumulative earned interest in decimal format"}]},"cumulativeMgmtFees":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Cumulative management fees in decimal format"}]},"cumulativePerfFees":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Cumulative performance fees in decimal format"}]},"name":{"type":"string","description":"Name of the vault"},"vaultLookupTable":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the vault lookup table"}]},"vaultFarm":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the vault farm"}]},"creationTimestamp":{"type":"number","description":"Timestamp of vault creation"},"allocationAdmin":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the allocation admin"}]}},"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"]},"KvaultAllocationsResponse":{"type":"object","properties":{"asOf":{"allOf":[{"$ref":"#/components/schemas/SnapshotDateTime"},{"description":"Timestamp when the allocation snapshot was computed"}]},"capitalDeployedUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total USD value deployed across allocation reserves"}]},"utilizationRatio":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Borrowed share of total vault assets, including unallocated funds, in decimal format"}]},"allocations":{"type":"array","items":{"$ref":"#/components/schemas/KvaultAllocation"}},"unallocated":{"type":"object","properties":{"tokenAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Liquidity token amount not deployed to a reserve"}]},"usd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"USD value not deployed to a reserve"}]},"pct":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Share of vault assets not deployed to a reserve as a percentage"}]}},"required":["tokenAmount","usd","pct"]}},"required":["asOf","capitalDeployedUsd","utilizationRatio","allocations","unallocated"]},"KvaultAllocation":{"type":"object","properties":{"reserve":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the allocation reserve"}]},"market":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the reserve lending market"}]},"marketName":{"type":"string","description":"Name of the reserve lending market"},"tokenMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Liquidity token mint of the allocation reserve"}]},"symbol":{"type":"string","description":"Allocation token symbol"},"targetWeightPct":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Configured allocation weight as a percentage"}]},"actualPct":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Current share of vault assets in the reserve as a percentage"}]},"suppliedTokenAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Liquidity token amount currently supplied to the reserve"}]},"suppliedUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"USD value currently supplied to the reserve"}]},"capTokenAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Maximum liquidity token amount that may be allocated to the reserve"}]},"utilizationRatio":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Current reserve utilization ratio in decimal format"}]},"supplyApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Current base supply APY in decimal format"}]},"rewardsApy":{"anyOf":[{"$ref":"#/components/schemas/Apy"},{"type":"null"}],"description":"Current reserve rewards APY in decimal format, or null when unavailable"},"collateral":{"type":"array","items":{"$ref":"#/components/schemas/KvaultAllocationCollateral"},"description":"Other active reserves accepted as collateral in the market"}},"required":["reserve","market","marketName","tokenMint","symbol","targetWeightPct","actualPct","suppliedTokenAmount","suppliedUsd","capTokenAmount","utilizationRatio","supplyApy","rewardsApy","collateral"]},"KvaultAllocationCollateral":{"type":"object","properties":{"mint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Liquidity token mint of the collateral reserve"}]},"symbol":{"type":"string","description":"Collateral token symbol"},"totalSupplyUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total supplied liquidity in the collateral reserve, in USD"}]},"liqLtvPct":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Liquidation loan-to-value threshold as a percentage"}]}},"required":["mint","symbol","totalSupplyUsd","liqLtvPct"]},"KvaultBatchMetricsResponse":{"type":"object","properties":{"result":{"type":"array","items":{"$ref":"#/components/schemas/KvaultBatchMetric"}},"paginationToken":{"type":"string","example":"eyJsYXN0SWQiOjgxfQ==","description":"Optional pagination token"}},"required":["result"]},"KvaultBatchMetric":{"allOf":[{"$ref":"#/components/schemas/KvaultMetrics"},{"type":"object","properties":{"kvault":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"KVault public key"}]}},"required":["kvault"]}]},"KvaultMetrics":{"type":"object","properties":{"apy7d":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"7-day Annual Percentage Yield of the kvault"}]},"apy24h":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"24-hour Annual Percentage Yield of the kvault"}]},"apy30d":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"30-day Annual Percentage Yield of the kvault"}]},"apy90d":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"90-day Annual Percentage Yield of the kvault"}]},"apy180d":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"180-day Annual Percentage Yield of the kvault"}]},"apy365d":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"365-day Annual Percentage Yield of the kvault"}]},"tvlUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total value locked in USD"}]},"tvlSol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total value locked in SOL"}]},"deposit_cap":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Maximum deposits accepted by the kvault"}]},"vaultType":{"type":"string","description":"KVault type"},"tokenPrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Price of the kvault token"}]},"solPrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Price of SOL"}]},"tokensAvailable":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Number of tokens available in the kvault"}]},"tokensAvailableUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"USD value of tokens available in the kvault"}]},"tokensInvested":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Number of tokens invested in the kvault"}]},"tokensInvestedUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"USD value of tokens invested in the kvault"}]},"sharePrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Price per share of the kvault"}]},"tokensPerShare":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Number of tokens per share in the kvault"}]},"apy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield of the kvault"}]},"apyTheoretical":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Theoretical Annual Percentage Yield of the kvault"}]},"apyActual":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Actual Annual Percentage Yield of the kvault"}]},"apyFarmRewards":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield from farm rewards in the kvault"}]},"apyIncentives":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield from incentives in the kvault"}]},"apyReservesIncentives":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield from reserves incentives in the kvault"}]},"numberOfHolders":{"type":"number","description":"Number of holders of the kvault"},"sharesIssued":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total shares issued by the kvault"}]},"cumulativeInterestEarned":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Cumulative interest earned in the kvault token amount"}]},"cumulativeInterestEarnedUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Cumulative interest earned in USD for the kvault"}]},"cumulativeInterestEarnedSol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Cumulative interest earned in SOL for the kvault"}]},"interestEarnedPerSecond":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Interest earned per second in the kvault token amount"}]},"interestEarnedPerSecondUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Interest earned per second in USD for the kvault"}]},"interestEarnedPerSecondSol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Interest earned per second in SOL for the kvault"}]},"cumulativePerformanceFees":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Cumulative performance fees in the kvault token amount"}]},"cumulativePerformanceFeesUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Cumulative performance fees in USD for the kvault"}]},"cumulativePerformanceFeesSol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Cumulative performance fees in SOL for the kvault"}]},"cumulativeManagementFees":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Cumulative management fees in the kvault token amount"}]},"cumulativeManagementFeesUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Cumulative management fees in USD for the kvault"}]},"cumulativeManagementFeesSol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Cumulative management fees in SOL for the kvault"}]}},"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"]},"KvaultAccountDataResponse":{"type":"object","properties":{"slot":{"type":"string","description":"Slot at which the response was assembled"},"blockTime":{"type":"string","description":"Block time for the response slot, as Unix seconds"},"recentSlotDurationMs":{"type":"number","description":"Recent average slot duration in milliseconds"},"vaults":{"type":"array","items":{"type":"object","properties":{"pubkey":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Account public key"}]},"data":{"type":"string","description":"Base64 encoded account data"}},"required":["pubkey","data"]},"description":"VaultState accounts of the requested vaults"},"markets":{"type":"array","items":{"type":"object","properties":{"pubkey":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Account public key"}]},"data":{"type":"string","description":"Base64 encoded account data"}},"required":["pubkey","data"]},"description":"LendingMarket accounts of every market the requested vaults allocate into"},"reserves":{"type":"array","items":{"type":"object","properties":{"market":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Market public key"}]},"reserves":{"type":"array","items":{"type":"object","properties":{"pubkey":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Account public key"}]},"data":{"type":"string","description":"Base64 encoded account data"}},"required":["pubkey","data"]}}},"required":["market","reserves"]},"description":"Reserve accounts of every market the requested vaults allocate into, grouped by market"},"farms":{"type":"array","items":{"type":"object","properties":{"pubkey":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Account public key"}]},"data":{"type":"string","description":"Base64 encoded account data"}},"required":["pubkey","data"]},"description":"FarmState accounts of the vault farms, first-loss-capital farms, delegated farms and allocation reserve farms"}},"required":["slot","blockTime","recentSlotDurationMs","vaults","markets","reserves","farms"]},"KvaultBatchStatsResponse":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/KvaultStats"},"description":"Vault stats keyed by vault public key. Unknown vaults are omitted."},"KvaultStats":{"type":"object","properties":{"token":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Vault token mint"}]},"tokenPrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"USD price of the vault token"}]},"apy":{"type":"object","properties":{"total":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Total supply APY: net base APY plus farm and reserve incentives"}]},"base":{"type":"object","properties":{"gross":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Gross lending APY earned by the current allocations, before vault fees"}]},"net":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Net lending APY earned by the current allocations, after vault fees"}]}},"required":["gross","net"]},"farmIncentives":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"APY from the vault farm incentives, sum of farmRewards[].apy"}]},"reservesIncentives":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"APY from the allocation reserve farm incentives, weighted by target allocation"}]},"autoCompounding":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"APY from the native vault reward stream"}]}},"required":["total","base","farmIncentives","reservesIncentives","autoCompounding"]},"farmRewards":{"type":"array","items":{"type":"object","properties":{"rewardToken":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Reward token mint address"}]},"apy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Current reward APY component from the vault farm, as a decimal fraction"}]},"tokensPerSecond":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Reward token emission rate in UI token units per second"}]}},"required":["rewardToken","apy","tokensPerSecond"]},"description":"Per-token rewards of the vault farm (shares staked in the vault farm). apy.farmIncentives is the sum of apy over these rows. Empty when the vault has no farm or nothing is emitting."},"holdings":{"type":"object","properties":{"available":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Token amount sitting uninvested in the vault"}]},"availableUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"USD value sitting uninvested in the vault"}]},"invested":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Token amount invested in reserves"}]},"investedUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"USD value invested in reserves"}]},"totalAumIncludingFees":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total token AUM of the vault, including pending fees"}]},"totalAumIncludingFeesUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total USD AUM of the vault, including pending fees"}]},"pendingFees":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Pending fees in token amount"}]},"pendingFeesUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Pending fees in USD"}]}},"required":["available","availableUsd","invested","investedUsd","totalAumIncludingFees","totalAumIncludingFeesUsd","pendingFees","pendingFeesUsd"]},"sharesIssued":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total shares issued by the vault"}]},"tokensPerShare":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Token amount one share is worth"}]},"sharePrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"USD price of one share"}]},"utilizationRatio":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Share of the vault total AUM that is borrowed out of the reserves"}]},"capitalDeployed":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Token amount deployed into reserves"}]},"capitalDeployedUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"USD value deployed into reserves"}]},"allocations":{"type":"array","items":{"type":"object","properties":{"reserve":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Reserve public key the vault allocates into"}]},"market":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Lending market public key of the reserve"}]},"targetPct":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Target allocation weight of the reserve as a percentage of all target weights"}]},"actualPct":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Share of the vault total AUM currently supplied to the reserve, in percent"}]},"suppliedTokenAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Token amount currently supplied to the reserve"}]},"suppliedUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"USD value currently supplied to the reserve"}]},"supplyApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Current supply APY of the reserve"}]}},"required":["reserve","market","targetPct","actualPct","suppliedTokenAmount","suppliedUsd","supplyApy"]},"description":"Per-reserve allocation breakdown"}},"required":["token","tokenPrice","apy","farmRewards","holdings","sharesIssued","tokensPerShare","sharePrice","utilizationRatio","capitalDeployed","capitalDeployedUsd","allocations"]},"KvaultBatchTimeSeriesResponse":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"timestamp":{"$ref":"#/components/schemas/SnapshotDateTime"},"tvl":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total Value Locked in token denomination"}]},"solTvl":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total Value Locked in SOL"}]},"apy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield"}]},"apyTheoretical":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Theoretical Annual Percentage Yield"}]},"apyActual":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Actual Annual Percentage Yield"}]},"apyFarmRewards":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield from Farm Rewards"}]},"apyReservesIncentives":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield from Reserves Incentives"}]},"apyIncentives":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield from Incentives"}]},"sharePrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Share Price of the vault"}]},"interest":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Interest earned in token denomination"}]},"interestUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Interest earned in USD"}]},"interestSol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Interest earned in SOL"}]},"reserves":{"type":"array","items":{"type":"object","properties":{"pubkey":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the reserve"}]},"supplyApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Supply Annual Percentage Yield"}]},"rewardsApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Rewards Annual Percentage Yield"}]},"allocationRatio":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Allocation Ratio"}]},"rewardTokens":{"type":"array","items":{"type":"object","properties":{"tokenMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Token mint address"}]},"apy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield for the reward token"}]}},"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"}]},"apy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield for the vault reward token"}]}},"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"]}},"description":"Vault metrics time series keyed by vault public key. Unknown vaults are omitted."},"KvaultHoldersResponse":{"type":"object","properties":{"snapshotTakenAt":{"allOf":[{"$ref":"#/components/schemas/SnapshotDateTime"},{"description":"Timestamp of the vault state snapshot the holders are read from"}]},"totalSharesIssued":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total shares issued by the vault in the same snapshot"}]},"holderCount":{"type":"number","description":"Number of holders recorded in the same snapshot"},"result":{"type":"array","items":{"$ref":"#/components/schemas/KvaultHolder"},"description":"Holders ordered by total shares, largest first"},"paginationToken":{"type":"string","example":"eyJsYXN0SWQiOjgxfQ==","description":"Optional pagination token"}},"required":["snapshotTakenAt","totalSharesIssued","holderCount","result"]},"KvaultHolder":{"type":"object","properties":{"wallet":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Wallet holding the Kamino Earn Vault shares"}]},"sharesHeld":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Shares held in the wallet, not staked in a farm"}]},"sharesInFarm":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Shares staked in the vault farm"}]},"totalShares":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Shares held plus shares staked in the farm"}]},"pctOfSharesIssued":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"The wallet's totalShares as a fraction of totalSharesIssued (0-1)"}]},"usdAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"USD value of the position at the snapshot token price"}]}},"required":["wallet","sharesHeld","sharesInFarm","totalShares","pctOfSharesIssued","usdAmount"]},"KvaultReturnsComparisonResponse":{"type":"object","properties":{"asOf":{"type":"string","format":"date-time","description":"Timestamp of the vault's latest snapshot"},"inceptionDate":{"type":"string","format":"date-time","description":"Timestamp of the vault's first available snapshot"},"series":{"type":"array","items":{"$ref":"#/components/schemas/KvaultReturnsComparisonSeries"}}},"required":["asOf","inceptionDate","series"]},"KvaultReturnsComparisonSeries":{"type":"object","properties":{"name":{"type":"string","enum":["vault","sofr","defiBenchmark"]},"cumulative":{"$ref":"#/components/schemas/ReturnsWindowValues"},"averageMonthly":{"$ref":"#/components/schemas/ReturnsWindowValues"}},"required":["name","cumulative","averageMonthly"]},"ReturnsWindowValues":{"type":"object","properties":{"m1":{"type":["string","null"],"example":"1234.56789","description":"Return represented as a fraction, where 0.0123 means 1.23%"},"m3":{"type":["string","null"],"example":"1234.56789","description":"Return represented as a fraction, where 0.0123 means 1.23%"},"m6":{"type":["string","null"],"example":"1234.56789","description":"Return represented as a fraction, where 0.0123 means 1.23%"},"y1":{"type":["string","null"],"example":"1234.56789","description":"Return represented as a fraction, where 0.0123 means 1.23%"},"ytd":{"type":["string","null"],"example":"1234.56789","description":"Return represented as a fraction, where 0.0123 means 1.23%"},"sinceInception":{"type":["string","null"],"example":"1234.56789","description":"Return represented as a fraction, where 0.0123 means 1.23%"}},"required":["m1","m3","m6","y1","ytd","sinceInception"]},"KvaultUserPositions":{"type":"array","items":{"type":"object","properties":{"vaultAddress":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Address of the Kamino Earn Vault"}]},"stakedShares":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"The number of Kamino Earn Vault shares staked in a farm"}]},"unstakedShares":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"The number of Kamino Earn Vault shares held in the user wallet"}]},"totalShares":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"The total number of Kamino Earn Vault shares both held and staked by the user"}]}},"required":["vaultAddress","stakedShares","unstakedShares","totalShares"]}},"UserKVaultTotal":{"type":"object","properties":{"createdOn":{"$ref":"#/components/schemas/SnapshotDateTime"},"usdAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"User's total amount across all vaults in USD"}]},"solAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"User's total amount across all vaults in SOL"}]},"weightedApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Weighted average APY across all vaults in decimal format"}]},"cumulativeInterestEarnedUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total interest earned in USD across all vaults"}]},"cumulativeInterestEarnedSol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total interest earned in SOL across all vaults"}]},"interestEarnedPerSecondUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Interest earned per second at that specific moment in USD"}]},"interestEarnedPerSecondSol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Interest earned per second at that specific moment in SOL"}]}},"required":["createdOn","usdAmount","solAmount","weightedApy","cumulativeInterestEarnedUsd","cumulativeInterestEarnedSol","interestEarnedPerSecondUsd","interestEarnedPerSecondSol"]},"UserKvaultMetrics":{"type":"object","properties":{"createdOn":{"$ref":"#/components/schemas/SnapshotDateTime"},"sharesAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"User's total shares amount"}]},"usdAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"User's USD amount in kvault"}]},"solAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"User's SOL amount in kvault"}]},"apy":{"$ref":"#/components/schemas/Apy"},"cumulativeInterestEarned":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total interest earned in kvault token amount for kvault"}]},"cumulativeInterestEarnedUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total interest earned in USD for kvault"}]},"cumulativeInterestEarnedSol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total interest earned in SOL for kvault"}]},"interestEarnedPerSecond":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Interest earned per second at that specific moment in token"}]},"interestEarnedPerSecondUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Interest earned per second at that specific moment in USD"}]},"interestEarnedPerSecondSol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Interest earned per second at that specific moment in SOL"}]}},"required":["createdOn","sharesAmount","usdAmount","solAmount","apy","cumulativeInterestEarned","cumulativeInterestEarnedUsd","cumulativeInterestEarnedSol","interestEarnedPerSecond","interestEarnedPerSecondUsd","interestEarnedPerSecondSol"]},"KvaultPnl":{"type":"object","properties":{"totalPnl":{"$ref":"#/components/schemas/KvaultMultiValue"},"totalCostBasis":{"$ref":"#/components/schemas/KvaultMultiValue"}},"required":["totalPnl","totalCostBasis"]},"KvaultMultiValue":{"type":"object","properties":{"usd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Value in USD"}]},"sol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Value in SOL"}]},"token":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Value in token denomination"}]}},"required":["usd","sol","token"]},"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"}]},"quantity":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Quantity involved in transaction"}]},"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"]},"SlotDuration":{"type":"object","properties":{"recentSlotDurationInMs":{"type":"number","description":"Slot duration in milliseconds derived from recent RPC performance samples over approximately the last hour","example":400}},"required":["recentSlotDurationInMs"]},"OwnerNetValueHistoryResponse":{"type":"array","items":{"$ref":"#/components/schemas/OwnerNetValue"}},"OwnerNetValue":{"type":"object","properties":{"createdOn":{"$ref":"#/components/schemas/SnapshotDateTime"},"klendUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total USD value of positions in Kamino Lend"}]},"strategiesUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total USD value of Kamino Liquidity positions"}]},"kvaultsUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total USD value of Kamino Vault positions"}]},"stakingUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total USD value of KMNO staking position"}]},"depositsUsd":{"type":["string","null"],"example":"1234.56789","description":"Cumulative deposits since the first point of the response"},"withdrawalsUsd":{"type":["string","null"],"example":"1234.56789","description":"Cumulative withdrawals since the first point of the response"},"netRevenueUsd":{"type":["string","null"],"example":"1234.56789","description":"Cumulative net revenue since the first point of the response"},"modifiedDietzReturn":{"type":["string","null"],"example":"1234.56789","description":"Modified Dietz return ratio over the interval since the first point of the response; not a percent and not annualized"},"netRevenueStatus":{"type":"string","enum":["partial_snapshot","pending_flows","unpriced_flows","legacy_snapshot","ok"],"description":"Availability status for net revenue fields"}},"required":["createdOn","klendUsd","strategiesUsd","kvaultsUsd","stakingUsd","depositsUsd","withdrawalsUsd","netRevenueUsd","modifiedDietzReturn","netRevenueStatus"]},"SwapHistoryResponse":{"type":"array","items":{"$ref":"#/components/schemas/SwapHistoryRow"}},"SwapHistoryRow":{"type":"object","properties":{"createdOn":{"type":"string","format":"date-time","description":"Timestamp when the swap was executed (ISO 8601 format)","example":"2025-03-01T12:00:00.000Z"},"transactionSignature":{"type":"string","description":"Transaction signature","example":"2XWcSQVtR4NoHBhzYpDkYkmYtEFkFXC5ZwrKiPok1kvA86GvnN15qP7RNP6eTeNWgJqgnR1GA2M3QPp1hucW7e1v"},"inAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Input token amount"}]},"outAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Output token amount"}]},"volumeUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Swap volume in USD"}]},"inMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Input token mint"}]},"outMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Output token mint"}]}},"required":["createdOn","transactionSignature","inAmount","outAmount","volumeUsd","inMint","outMint"]},"FoundLuts":{"type":"object","properties":{"lutAddresses":{"type":"array","items":{"$ref":"#/components/schemas/AddressBase58"},"description":"List of Lookup Table addresses that together cover the requested addresses"}},"required":["lutAddresses"]},"FindLutsForAddresses":{"type":"object","properties":{"addresses":{"type":"array","items":{"$ref":"#/components/schemas/AddressBase58"},"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":{"$ref":"#/components/schemas/AddressBase58"},"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":{"$ref":"#/components/schemas/AddressBase58"},"description":"Active lookup table addresses","example":["3Kz4sMiBCxg7JdCCjwRTHtFsQRqJCSKh5pVERhPfMzYF"]}},"required":["productIdentifierAddress","lutAddresses"]},"ManagedLutBatchResponse":{"type":"array","items":{"$ref":"#/components/schemas/ManagedLutResponse"}},"ManagedLutByTypeResponse":{"type":"array","items":{"type":"object","properties":{"productIdentifierAddress":{"$ref":"#/components/schemas/AddressBase58"},"productType":{"$ref":"#/components/schemas/LutProductType"},"lutAddresses":{"type":"array","items":{"$ref":"#/components/schemas/AddressBase58"}}},"required":["productIdentifierAddress","productType","lutAddresses"]}},"LutProductType":{"type":"string","enum":["swap_pair","vault","strategy","market","meta_vault"],"description":"The type of product associated with a managed lookup table","example":"vault"},"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"]},"KvaultUserRewardMetrics":{"type":"object","properties":{"avgBaseApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Weighted average Base Annual Percentage Yield for the user"}]},"avgBoostedApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Weighted average Boosted Annual Percentage Yield for the user"}]},"avgMaxApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Weighted average Max Annual Percentage Yield for the user"}]},"rewards":{"type":"array","items":{"$ref":"#/components/schemas/KvaultUserRewardMetric"},"description":"List of kvault user reward metrics"}},"required":["avgBaseApy","avgBoostedApy","avgMaxApy","rewards"]},"KvaultUserRewardMetric":{"type":"object","properties":{"avgBaseApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Average Base Annual Percentage Yield for the user"}]},"avgBoostedApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Average Boosted Annual Percentage Yield for the user"}]},"avgMaxApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Average Max Annual Percentage Yield for the user"}]},"rewardMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Mint address of the reward token"}]},"lastCalculated":{"type":"string","format":"date-time","description":"Timestamp of the last calculation"},"tokensEarned":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total number of reward tokens earned by the user"}]},"tokensPerSecond":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Number of reward tokens distributed per second to the user"}]},"stakingBoost":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Staking boost percentage applied to the user"}]},"effectiveStakingBoost":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Effective staking boost percentage for the user"}]},"baseApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Base Annual Percentage Yield from rewards for the user"}]},"boostedApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Boosted Annual Percentage Yield from rewards for the user"}]},"maxApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Max Annual Percentage Yield from rewards for the user"}]},"usdAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total USD amount of rewards earned by the user without boost"}]},"usdAmountBoosted":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total USD amount of rewards earned by the user with boost applied"}]}},"required":["avgBaseApy","avgBoostedApy","avgMaxApy","rewardMint","lastCalculated","tokensEarned","tokensPerSecond","stakingBoost","effectiveStakingBoost","baseApy","boostedApy","maxApy","usdAmount","usdAmountBoosted"]},"KvaultRewardMetrics":{"type":"array","items":{"$ref":"#/components/schemas/KvaultRewardMetric"},"description":"List of kvault reward metrics"},"KvaultRewardMetric":{"type":"object","properties":{"kvault":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Address of the kvault"}]},"rewardToken":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Mint address of the reward token"}]},"lastCalculated":{"type":"string","format":"date-time","description":"Timestamp of the last calculation"},"apy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield from rewards in the kvault"}]},"tokensPerSecond":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Number of reward tokens distributed per second"}]}},"required":["kvault","rewardToken","lastCalculated","apy","tokensPerSecond"]},"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 %)"}]},"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"}]}},"required":["boost","name"]},"KlendUserRewardMetrics":{"type":"object","properties":{"avgBaseApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Weighted average Base Annual Percentage Yield for the user"}]},"avgBoostedApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Weighted average Boosted Annual Percentage Yield for the user"}]},"avgMaxApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Weighted average Max Annual Percentage Yield for the user"}]},"rewards":{"type":"array","items":{"$ref":"#/components/schemas/KlendUserRewardMetric"},"description":"List of klend user reward metrics"}},"required":["avgBaseApy","avgBoostedApy","avgMaxApy","rewards"]},"KlendUserRewardMetric":{"type":"object","properties":{"depositReserve":{"anyOf":[{"$ref":"#/components/schemas/AddressBase58"},{"type":"null"}],"description":"Deposit reserve public key, if applicable"},"borrowReserve":{"anyOf":[{"$ref":"#/components/schemas/AddressBase58"},{"type":"null"}],"description":"Borrow reserve public key, if applicable"},"market":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Market public key"}]},"rewardMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Mint address of the reward token"}]},"lastCalculated":{"type":"string","format":"date-time","description":"Timestamp of the last calculation"},"tokensEarned":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total number of reward tokens earned by the user"}]},"tokensPerSecond":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Number of reward tokens distributed per second to the user"}]},"stakingBoost":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Staking boost percentage applied to the user"}]},"effectiveStakingBoost":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Effective staking boost percentage for the user"}]},"baseApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Base Annual Percentage Yield from rewards for the user"}]},"boostedApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Boosted Annual Percentage Yield from rewards for the user"}]},"maxApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Max Annual Percentage Yield from rewards for the user"}]},"usdAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total USD amount of rewards earned by the user without boost"}]},"usdAmountBoosted":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total USD amount of rewards earned by the user with boost applied"}]}},"required":["depositReserve","borrowReserve","market","rewardMint","lastCalculated","tokensEarned","tokensPerSecond","stakingBoost","effectiveStakingBoost","baseApy","boostedApy","maxApy","usdAmount","usdAmountBoosted"]},"KlendRewardMetrics":{"type":"array","items":{"$ref":"#/components/schemas/KlendRewardMetric"},"description":"List of klend reward metrics"},"KlendRewardMetric":{"type":"object","properties":{"depositReserve":{"anyOf":[{"$ref":"#/components/schemas/AddressBase58"},{"type":"null"}],"description":"Deposit reserve public key, if applicable"},"borrowReserve":{"anyOf":[{"$ref":"#/components/schemas/AddressBase58"},{"type":"null"}],"description":"Borrow reserve public key, if applicable"},"market":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Market public key"}]},"rewardToken":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Mint address of the reward token"}]},"lastCalculated":{"type":"string","format":"date-time","description":"Timestamp of the last calculation"},"apy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield from rewards"}]},"tokensPerSecond":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Number of reward tokens distributed per second"}]},"activePositionsUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total USD value of active positions receiving rewards"}]}},"required":["depositReserve","borrowReserve","market","rewardToken","lastCalculated","apy","tokensPerSecond","activePositionsUsd"]},"KlendRewardHistory":{"type":"array","items":{"$ref":"#/components/schemas/KlendRewardHistoryRow"},"description":"List of historical klend reward metrics"},"KlendRewardHistoryRow":{"type":"object","properties":{"timestamp":{"type":"string","format":"date-time","description":"Timestamp of the data point"},"depositReserve":{"anyOf":[{"$ref":"#/components/schemas/AddressBase58"},{"type":"null"}],"description":"Deposit reserve public key, if applicable"},"borrowReserve":{"anyOf":[{"$ref":"#/components/schemas/AddressBase58"},{"type":"null"}],"description":"Borrow reserve public key, if applicable"},"rewardToken":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Mint address of the reward token"}]},"rewardApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield from rewards at this point in time"}]}},"required":["timestamp","depositReserve","borrowReserve","rewardToken","rewardApy"]},"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":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"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","null"],"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"]},"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":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"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":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"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"]},"PrivateCreditMetricsResponse":{"type":"object","properties":{"metrics":{"$ref":"#/components/schemas/PrivateCreditAggregateMetrics"},"loans":{"type":"array","items":{"$ref":"#/components/schemas/PrivateCreditLoan"}}},"required":["metrics","loans"]},"PrivateCreditAggregateMetrics":{"type":"object","properties":{"activeLoans":{"$ref":"#/components/schemas/Decimal"},"totalBorrowedUsd":{"$ref":"#/components/schemas/Decimal"},"totalDepositedUsd":{"$ref":"#/components/schemas/Decimal"},"weightedAvgLtv":{"$ref":"#/components/schemas/Decimal"},"avgLtv":{"$ref":"#/components/schemas/Decimal"},"maxLtv":{"$ref":"#/components/schemas/Decimal"},"updatedOn":{"$ref":"#/components/schemas/SnapshotDateTime"}},"required":["activeLoans","totalBorrowedUsd","totalDepositedUsd","weightedAvgLtv","avgLtv","maxLtv","updatedOn"]},"PrivateCreditLoan":{"type":"object","properties":{"totalBorrowedUsd":{"$ref":"#/components/schemas/Decimal"},"totalDepositedUsd":{"$ref":"#/components/schemas/Decimal"},"ltv":{"$ref":"#/components/schemas/Decimal"},"createdOn":{"$ref":"#/components/schemas/SnapshotDateTime"},"collateralAsset":{"type":"string"},"maxLtv":{"$ref":"#/components/schemas/Decimal"},"liquidationStatus":{"type":"string"}},"required":["totalBorrowedUsd","totalDepositedUsd","ltv","createdOn","collateralAsset","maxLtv","liquidationStatus"]},"PrivateCreditHistoryResponse":{"type":"array","items":{"$ref":"#/components/schemas/PrivateCreditHistoryPoint"}},"PrivateCreditHistoryPoint":{"type":"object","properties":{"createdOn":{"$ref":"#/components/schemas/SnapshotDateTime"},"weightedAvgLtv":{"$ref":"#/components/schemas/Decimal"},"maxLtv":{"$ref":"#/components/schemas/Decimal"},"statusDistribution":{"type":"array","items":{"$ref":"#/components/schemas/PrivateCreditStatusDistribution"}}},"required":["createdOn","weightedAvgLtv","maxLtv","statusDistribution"]},"PrivateCreditStatusDistribution":{"type":"object","properties":{"status":{"type":"string"},"share":{"$ref":"#/components/schemas/Decimal"}},"required":["status","share"]},"SeasonUserReward":{"type":"object","properties":{"wallet":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Wallet address of the user"}]},"totalRewards":{"type":"object","properties":{"amount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total reward amount"}]},"tokenMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Token mint address of the reward"}]}},"required":["amount","tokenMint"],"description":"Total combined season rewards from both KLend and KVault"}},"required":["wallet","totalRewards"]},"SeasonUserClaimStatus":{"type":"object","properties":{"hasUserClaimed":{"type":"boolean","description":"Whether the user harvested season rewards, matching the seasons page"},"amountClaimed":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Season reward tokens harvested by the user"}]},"amountForfeited":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Season reward tokens forfeited by a claim before vesting ended; otherwise zero"}]}},"required":["hasUserClaimed","amountClaimed","amountForfeited"]},"SeasonFinalVestingPoolAllocation":{"type":"object","properties":{"totalForfeitedRewards":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total amount of forfeited rewards from all users who claimed early"}]}},"required":["totalForfeitedRewards"]},"OraclePrices":{"type":"array","items":{"$ref":"#/components/schemas/OraclePriceItem"},"description":"List of oracle prices for assets in the market"},"OraclePriceItem":{"type":"object","properties":{"price":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Price value of the asset"}]},"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"]},"UnixTimestamp":{"type":"string","description":"Epoch Unix timestamp in seconds","example":"1763568282","examples":["0","1","100","-1"]},"OracleMarketPrices":{"allOf":[{"$ref":"#/components/schemas/MarketConfigResponseV2"},{"type":"object","properties":{"prices":{"type":"array","items":{"$ref":"#/components/schemas/OraclePriceItem"},"description":"Oracle prices for assets in this market"}},"required":["prices"]}]},"FarmsInstruction":{"type":"object","properties":{"createdOn":{"type":"string","format":"date-time","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"}]},"usdAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"USD value of the transaction"}]},"farm":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Farm public key"}]},"token":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Token mint public key"}]}},"required":["createdOn","transactionSignature","instruction","tokenAmount","usdAmount","farm","token"]},"FarmTransaction":{"type":"object","properties":{"createdOn":{"type":"string","format":"date-time","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"}]},"usdAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"USD value of the transaction"}]}},"required":["createdOn","transactionSignature","instruction","tokenAmount","usdAmount"]},"FarmManagementInstruction":{"type":"object","properties":{"createdOn":{"type":"string","format":"date-time"},"transactionSignature":{"type":"string","description":"Transaction signature","example":"2XWcSQVtR4NoHBhzYpDkYkmYtEFkFXC5ZwrKiPok1kvA86GvnN15qP7RNP6eTeNWgJqgnR1GA2M3QPp1hucW7e1v"},"instruction":{"type":"string"},"farm":{"$ref":"#/components/schemas/AddressBase58"},"signer":{"$ref":"#/components/schemas/AddressBase58"},"tokenAmount":{"anyOf":[{"$ref":"#/components/schemas/Decimal"},{"type":"null"}]},"usdAmount":{"anyOf":[{"$ref":"#/components/schemas/Decimal"},{"type":"null"}]},"token":{"anyOf":[{"$ref":"#/components/schemas/AddressBase58"},{"type":"null"}]},"rewardIndex":{"type":["number","null"]},"configMode":{"type":["string","null"]},"details":{"type":["object","null"],"additionalProperties":{}}},"required":["createdOn","transactionSignature","instruction","farm","signer","tokenAmount","usdAmount","token","rewardIndex","configMode","details"]},"BenchmarkRatesResponse":{"type":"array","items":{"$ref":"#/components/schemas/BenchmarkRate"}},"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"]},"SofrRateHistoryResponse":{"type":"array","items":{"$ref":"#/components/schemas/SofrRateHistoryItem"}},"SofrRateHistoryItem":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"Effective date of the rate (as published by the New York Fed)","example":"2024-01-10"},"rate":{"type":["string","null"],"example":"1234.56789","description":"Daily SOFR rate in percent, null when not yet published for the date"},"index":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"SOFR compounded index"}]},"avg30d":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"30-day compounded average SOFR in percent"}]},"avg90d":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"90-day compounded average SOFR in percent"}]},"avg180d":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"180-day compounded average SOFR in percent"}]}},"required":["date","rate","index","avg30d","avg90d","avg180d"]},"PortfolioResponse":{"type":"object","properties":{"timestamp":{"type":"string","format":"date-time","description":"Response timestamp as an ISO-8601 string"},"sections":{"$ref":"#/components/schemas/PortfolioSections"},"lending":{"type":"array","items":{"$ref":"#/components/schemas/PortfolioLendingPosition"}},"multiply":{"type":"array","items":{"$ref":"#/components/schemas/PortfolioMultiplyPosition"}},"leverage":{"type":"array","items":{"$ref":"#/components/schemas/PortfolioLeveragePosition"}},"liquidity":{"type":"array","items":{"$ref":"#/components/schemas/PortfolioLiquidityPosition"}},"earn":{"type":"array","items":{"$ref":"#/components/schemas/PortfolioEarnPosition"}},"privateCredit":{"type":"array","items":{"$ref":"#/components/schemas/PortfolioPrivateCreditPosition"}},"staking":{"type":"array","items":{"$ref":"#/components/schemas/PortfolioStakingPosition"}}},"required":["timestamp","sections","lending","multiply","leverage","liquidity","earn","privateCredit","staking"]},"PortfolioSections":{"type":"object","properties":{"lending":{"$ref":"#/components/schemas/PortfolioSectionState"},"multiply":{"$ref":"#/components/schemas/PortfolioSectionState"},"leverage":{"$ref":"#/components/schemas/PortfolioSectionState"},"liquidity":{"$ref":"#/components/schemas/PortfolioSectionState"},"earn":{"$ref":"#/components/schemas/PortfolioSectionState"},"privateCredit":{"$ref":"#/components/schemas/PortfolioSectionState"},"staking":{"$ref":"#/components/schemas/PortfolioSectionState"}},"required":["lending","multiply","leverage","liquidity","earn","privateCredit","staking"],"description":"Per-section indexing and freshness metadata."},"PortfolioSectionState":{"type":"object","properties":{"indexed":{"type":"boolean","description":"Whether this section has been indexed for the wallet."},"positionsRefreshedOn":{"type":["string","null"],"format":"date-time","description":"Position freshness for this section."},"pricesRefreshedOn":{"type":["string","null"],"format":"date-time","description":"Oldest required price freshness for this section."},"errors":{"type":"array","items":{"$ref":"#/components/schemas/PortfolioSectionError"},"default":[]}},"required":["indexed","positionsRefreshedOn","pricesRefreshedOn"]},"PortfolioSectionError":{"type":"object","properties":{"code":{"type":"string","description":"Stable subcomponent error code, including klend-slot-stale, klend-slot-unavailable, and klend-reserve-accrual-missing"}},"required":["code"]},"PortfolioLendingPosition":{"type":"object","properties":{"obligation":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Obligation address"}]},"market":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Lending market address"}]},"tag":{"type":"string","enum":["Vanilla","Lending","LendingFixedRate","Multiply","MultiplyFixedRate","Leverage","LeverageFixedRate"],"description":"Obligation type tag","example":"Lending"},"netValue":{"type":["string","null"],"example":"1234.56789","description":"Net account value in USD from refreshed obligation stats"},"totalDepositValue":{"type":["string","null"],"example":"1234.56789","description":"Total deposit value in USD from refreshed obligation stats"},"totalBorrowValue":{"type":["string","null"],"example":"1234.56789","description":"Total borrow value in USD from refreshed obligation stats"},"ltv":{"type":["string","null"],"example":"1234.56789","description":"Current loan-to-value ratio from refreshed obligation stats"},"maxLtv":{"type":["string","null"],"example":"1234.56789","description":"Maximum loan-to-value ratio for the whole obligation from refreshed stats"},"liquidationLtv":{"type":["string","null"],"example":"1234.56789","description":"Liquidation LTV threshold from refreshed obligation stats"},"leverage":{"type":["string","null"],"example":"1234.56789","description":"Current leverage from refreshed obligation stats"},"deposits":{"type":"array","items":{"$ref":"#/components/schemas/PortfolioLendingDeposit"}},"borrows":{"type":"array","items":{"$ref":"#/components/schemas/PortfolioLendingBorrow"}}},"required":["obligation","market","tag","netValue","totalDepositValue","totalBorrowValue","ltv","maxLtv","liquidationLtv","leverage","deposits","borrows"]},"PortfolioLendingDeposit":{"type":"object","properties":{"mint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Token mint address"}]},"symbol":{"type":"string","description":"Best-effort token symbol from known SQL-backed mint metadata, or UNKNOWN when unavailable","example":"SOL"},"amount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Token amount"}]},"value":{"type":["string","null"],"example":"1234.56789","description":"Current USD value for this token row"},"price":{"type":["string","null"],"example":"1234.56789","description":"Current token price in USD"},"reserve":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Resolved KLend reserve address backing this token row"}]},"maxLtv":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Maximum loan-to-value ratio for the reserve as a fraction, adjusted for the obligation's elevation group"}]},"liquidationLtv":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Liquidation loan-to-value threshold for the reserve as a fraction, adjusted for the obligation's elevation group"}]}},"required":["mint","symbol","amount","value","price","maxLtv","liquidationLtv"]},"PortfolioLendingBorrow":{"type":"object","properties":{"mint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Token mint address"}]},"symbol":{"type":"string","description":"Best-effort token symbol from known SQL-backed mint metadata, or UNKNOWN when unavailable","example":"SOL"},"amount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Token amount"}]},"value":{"type":["string","null"],"example":"1234.56789","description":"Current USD value for this token row"},"price":{"type":["string","null"],"example":"1234.56789","description":"Current token price in USD"},"reserve":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Resolved KLend reserve address backing this token row"}]},"borrowFactor":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Borrow factor for the reserve as a fraction (e.g. 1.25); 1 when an elevation group is active"}]}},"required":["mint","symbol","amount","value","price","borrowFactor"]},"PortfolioMultiplyPosition":{"type":"object","properties":{"obligation":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Obligation address"}]},"market":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Lending market address"}]},"tag":{"type":"string","enum":["Vanilla","Lending","LendingFixedRate","Multiply","MultiplyFixedRate","Leverage","LeverageFixedRate"],"description":"Obligation type tag","example":"Lending"},"netValue":{"type":["string","null"],"example":"1234.56789","description":"Net account value in USD from refreshed obligation stats"},"totalDepositValue":{"type":["string","null"],"example":"1234.56789","description":"Total deposit value in USD from refreshed obligation stats"},"totalBorrowValue":{"type":["string","null"],"example":"1234.56789","description":"Total borrow value in USD from refreshed obligation stats"},"ltv":{"type":["string","null"],"example":"1234.56789","description":"Current loan-to-value ratio from refreshed obligation stats"},"maxLtv":{"type":["string","null"],"example":"1234.56789","description":"Maximum loan-to-value ratio for the whole obligation from refreshed stats"},"liquidationLtv":{"type":["string","null"],"example":"1234.56789","description":"Liquidation LTV threshold from refreshed obligation stats"},"leverage":{"type":["string","null"],"example":"1234.56789","description":"Current leverage from refreshed obligation stats"},"deposits":{"type":"array","items":{"$ref":"#/components/schemas/PortfolioLendingDeposit"}},"borrows":{"type":"array","items":{"$ref":"#/components/schemas/PortfolioLendingBorrow"}},"depositMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Primary deposit token mint used for this multiply position"}]},"borrowMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Primary borrow token mint used for this multiply position"}]}},"required":["obligation","market","tag","netValue","totalDepositValue","totalBorrowValue","ltv","maxLtv","liquidationLtv","leverage","deposits","borrows"]},"PortfolioLeveragePosition":{"type":"object","properties":{"obligation":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Obligation address"}]},"market":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Lending market address"}]},"tag":{"type":"string","enum":["Vanilla","Lending","LendingFixedRate","Multiply","MultiplyFixedRate","Leverage","LeverageFixedRate"],"description":"Obligation type tag","example":"Lending"},"netValue":{"type":["string","null"],"example":"1234.56789","description":"Net account value in USD from refreshed obligation stats"},"totalDepositValue":{"type":["string","null"],"example":"1234.56789","description":"Total deposit value in USD from refreshed obligation stats"},"totalBorrowValue":{"type":["string","null"],"example":"1234.56789","description":"Total borrow value in USD from refreshed obligation stats"},"ltv":{"type":["string","null"],"example":"1234.56789","description":"Current loan-to-value ratio from refreshed obligation stats"},"maxLtv":{"type":["string","null"],"example":"1234.56789","description":"Maximum loan-to-value ratio for the whole obligation from refreshed stats"},"liquidationLtv":{"type":["string","null"],"example":"1234.56789","description":"Liquidation LTV threshold from refreshed obligation stats"},"leverage":{"type":["string","null"],"example":"1234.56789","description":"Current leverage from refreshed obligation stats"},"deposits":{"type":"array","items":{"$ref":"#/components/schemas/PortfolioLendingDeposit"}},"borrows":{"type":"array","items":{"$ref":"#/components/schemas/PortfolioLendingBorrow"}},"depositMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Primary deposit token mint used for this leverage position"}]},"borrowMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Primary borrow token mint used for this leverage position"}]}},"required":["obligation","market","tag","netValue","totalDepositValue","totalBorrowValue","ltv","maxLtv","liquidationLtv","leverage","deposits","borrows"]},"PortfolioLiquidityPosition":{"type":"object","properties":{"strategy":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Strategy address"}]},"shareMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Strategy share mint address"}]},"shares":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total strategy shares held directly or staked in farms"}]},"netValue":{"type":["string","null"],"example":"1234.56789","description":"Current net position value in USD"},"tokenA":{"$ref":"#/components/schemas/PortfolioPositionToken"},"tokenB":{"$ref":"#/components/schemas/PortfolioPositionToken"}},"required":["strategy","shareMint","shares","netValue","tokenA","tokenB"]},"PortfolioPositionToken":{"type":"object","properties":{"mint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Token mint address"}]},"symbol":{"type":"string","description":"Best-effort token symbol from known SQL-backed mint metadata, or UNKNOWN when unavailable","example":"SOL"},"amount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Token amount"}]},"value":{"type":["string","null"],"example":"1234.56789","description":"Current USD value for this token row"},"price":{"type":["string","null"],"example":"1234.56789","description":"Current token price in USD"},"reserve":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Resolved KLend reserve address backing this token row"}]}},"required":["mint","symbol","amount","value","price"]},"PortfolioEarnPosition":{"type":"object","properties":{"vault":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Vault address"}]},"tokenMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Vault underlying token mint"}]},"symbol":{"type":"string","description":"Vault underlying token symbol","example":"USDC"},"name":{"type":"string","description":"Vault display name from resources or decoded vault state","example":"JitoSOL"},"netValue":{"type":["string","null"],"example":"1234.56789","description":"Current position value in USD"},"shares":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Number of shares held"}]},"amount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Underlying token amount for the position"}]}},"required":["vault","tokenMint","symbol","name","netValue","shares","amount"]},"PortfolioPrivateCreditPosition":{"type":"object","properties":{"vault":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Vault address"}]},"tokenMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Vault underlying token mint"}]},"symbol":{"type":"string","description":"Vault underlying token symbol","example":"USDC"},"name":{"type":"string","description":"Vault name","example":"Maple USDC"},"netValue":{"type":["string","null"],"example":"1234.56789","description":"Current position value in USD"},"shares":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Number of shares held"}]},"amount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Underlying token amount for the position"}]}},"required":["vault","tokenMint","symbol","name","netValue","shares","amount"]},"PortfolioStakingPosition":{"type":"object","properties":{"mint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Staked token mint address"}]},"symbol":{"type":"string","description":"Staked token symbol","example":"KMNO"},"farm":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Farm address where the staking position is held"}]},"amount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount of KMNO staked"}]},"value":{"type":["string","null"],"example":"1234.56789","description":"Current USD value of staked KMNO"},"price":{"type":["string","null"],"example":"1234.56789","description":"Current staked token price in USD"}},"required":["mint","symbol","farm","amount","value","price"]},"PortfolioRewardsResponse":{"type":"object","properties":{"timestamp":{"type":"string","format":"date-time","description":"Response timestamp as an ISO-8601 string"},"farms":{"type":"array","items":{"$ref":"#/components/schemas/PortfolioFarmReward"}},"partialErrors":{"$ref":"#/components/schemas/PortfolioRewardsPartialErrors"}},"required":["timestamp","farms"]},"PortfolioFarmReward":{"type":"object","properties":{"farm":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Farm address"}]},"userState":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"User state address used for claiming"}]},"delegatee":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Delegatee recorded on the user farm state, used to build claim instructions"}]},"strategy":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Liquidity strategy associated with the farm, when applicable"}]},"vault":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"KVault associated with the farm, when applicable"}]},"positionType":{"type":"string","enum":["Liquidity","Lend","Borrow Markets","Multiply","Leverage"],"description":"Farm position type","example":"Lend"},"activeStakeAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Active stake amount in farm"}]},"tokenMints":{"type":"array","items":{"$ref":"#/components/schemas/AddressBase58"},"default":[],"description":"Token mints identifying the position (e.g. tokenA+tokenB for liquidity)"},"rewards":{"type":"array","items":{"$ref":"#/components/schemas/PortfolioRewardToken"}}},"required":["farm","userState","delegatee","positionType","activeStakeAmount","rewards"],"description":"Farm reward row; at most one of strategy or vault is present."},"PortfolioRewardToken":{"type":"object","properties":{"mint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Reward token mint"}]},"amount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Pending reward amount"}]},"index":{"type":"integer","description":"Reward info index on the farm state used for claim instructions","example":0},"type":{"type":"integer","description":"Farm reward type index used by farm rewards accounting","example":0},"tokenProgram":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Token program ID for the reward token"}]}},"required":["mint","amount","index","type","tokenProgram"]},"PortfolioRewardsPartialErrors":{"type":"object","properties":{"positionTokenMints":{"type":"array","items":{"type":"string"},"description":"Strategy or vault identifiers whose token mint enrichment could not be resolved"},"seasonFarms":{"type":"array","items":{"type":"string"},"description":"Season farm filter subcomponents that could not be loaded"},"rewardMetadata":{"type":"array","items":{"type":"string"},"description":"Farm reward rows whose SQL metadata was incomplete and could not be returned"}}},"UserHoldingsResponse":{"type":"object","properties":{"tokens":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/UserHolding"}}},"required":["tokens"],"description":"Raw wallet token holdings keyed by mint public key."},"UserHolding":{"type":"object","properties":{"amount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Raw token balance with mint decimals applied","example":"1.01"}]},"valueUsd":{"anyOf":[{"$ref":"#/components/schemas/Decimal"},{"type":"null"}],"description":"USD value from the cached Scope or kswap fallback spot price, or null when no price is known","example":"170.25"}},"required":["amount","valueUsd"]},"EarnUserActivityResponse":{"type":"object","properties":{"result":{"type":"array","items":{"$ref":"#/components/schemas/EarnUserActivityItem"}},"paginationToken":{"type":"string","example":"eyJsYXN0SWQiOjgxfQ==","description":"Optional pagination token"}},"required":["result"]},"EarnUserActivityItem":{"type":"object","properties":{"timestamp":{"$ref":"#/components/schemas/TransactionDateTime"},"type":{"type":"string","enum":["interest_accrued","deposit","withdraw","repaid_manually","auto_repay"],"description":"Activity type"},"source":{"type":"string","enum":["vault","lend"],"description":"Product family that produced the activity"},"tokenMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Activity token mint"}]},"symbol":{"type":["string","null"],"description":"Token symbol, or null when metadata is unavailable"},"amount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Positive token amount"}]},"usdValue":{"anyOf":[{"$ref":"#/components/schemas/Decimal"},{"type":"null"}],"description":"Positive USD value, or null when no price is available"},"vault":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Vault address for vault transactions or a vault-filtered interest row"}]},"market":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"KLend market address"}]},"reserve":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"KLend reserve address"}]},"obligation":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"KLend obligation address when applicable"}]},"transaction":{"type":"string","description":"Transaction signature; omitted for synthetic daily interest activity","example":"2XWcSQVtR4NoHBhzYpDkYkmYtEFkFXC5ZwrKiPok1kvA86GvnN15qP7RNP6eTeNWgJqgnR1GA2M3QPp1hucW7e1v"}},"required":["timestamp","type","source","tokenMint","symbol","amount","usdValue"]},"EarnUserSummaryResponse":{"type":"object","properties":{"totalUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Known earning and idle USD value across all tokens"}]},"earningUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Known USD value in earning positions"}]},"idleUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Known USD value held idle"}]},"blendedApy":{"anyOf":[{"$ref":"#/components/schemas/Apy"},{"type":"null"}],"description":"USD-weighted APY across all earning positions"},"earnedToDateUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Lifetime vault and lending interest earned in USD for the requested obligation types"}]},"interestEarnedPerSecondUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Current estimated interest earned per second in USD"}]},"tokens":{"type":"array","items":{"$ref":"#/components/schemas/EarnUserTokenSummary"}}},"required":["totalUsd","earningUsd","idleUsd","blendedApy","earnedToDateUsd","interestEarnedPerSecondUsd","tokens"]},"EarnUserTokenSummary":{"type":"object","properties":{"mint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Token mint address"}]},"symbol":{"type":"string","description":"Token symbol"},"decimals":{"type":"integer","minimum":0,"description":"Token mint decimals"},"totalUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Known earning and idle USD value"}]},"earningUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Known USD value held in earning positions"}]},"idleUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Known USD value held idle in the wallet"}]},"tokenAmounts":{"type":"object","properties":{"earning":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Underlying token amount in earning positions"}]},"idle":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Token amount held idle in the wallet"}]}},"required":["earning","idle"]},"blendedApy":{"anyOf":[{"$ref":"#/components/schemas/Apy"},{"type":"null"}],"description":"USD-weighted APY across earning positions"},"bestApy":{"anyOf":[{"$ref":"#/components/schemas/Apy"},{"type":"null"}],"description":"Best current live vault APY for this token"},"bestApyVault":{"anyOf":[{"$ref":"#/components/schemas/AddressBase58"},{"type":"null"}],"description":"Vault offering the best current APY"},"earnedToDateUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Lifetime vault and lending interest earned in USD for the requested obligation types"}]},"positions":{"type":"array","items":{"$ref":"#/components/schemas/EarnPosition"}}},"required":["mint","symbol","decimals","totalUsd","earningUsd","idleUsd","tokenAmounts","blendedApy","bestApy","bestApyVault","earnedToDateUsd","positions"]},"EarnPosition":{"oneOf":[{"$ref":"#/components/schemas/EarnVaultPosition"},{"$ref":"#/components/schemas/EarnReservePosition"}],"discriminator":{"propertyName":"type","mapping":{"vault":"#/components/schemas/EarnVaultPosition","reserve":"#/components/schemas/EarnReservePosition"}}},"EarnVaultPosition":{"type":"object","properties":{"tokenAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Current underlying token amount"}]},"usd":{"anyOf":[{"$ref":"#/components/schemas/Decimal"},{"type":"null"}],"description":"Current USD value, or null when no price is available"},"apy":{"anyOf":[{"$ref":"#/components/schemas/Apy"},{"type":"null"}],"description":"Current position APY, or null when stats are unavailable"},"earnedToDateUsd":{"anyOf":[{"$ref":"#/components/schemas/Decimal"},{"type":"null"}],"description":"Lifetime interest earned in USD, or null when no historian row is available"},"shareOfToken":{"anyOf":[{"$ref":"#/components/schemas/Decimal"},{"type":"null"}],"description":"Share of the token earning USD value, or null when this position has no USD value"},"type":{"type":"string","enum":["vault"]},"vault":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Vault address"}]},"name":{"type":"string","description":"Vault display name"}},"required":["tokenAmount","usd","apy","earnedToDateUsd","shareOfToken","type","vault","name"]},"EarnReservePosition":{"type":"object","properties":{"tokenAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Current underlying token amount"}]},"usd":{"anyOf":[{"$ref":"#/components/schemas/Decimal"},{"type":"null"}],"description":"Current USD value, or null when no price is available"},"apy":{"anyOf":[{"$ref":"#/components/schemas/Apy"},{"type":"null"}],"description":"Current position APY, or null when stats are unavailable"},"earnedToDateUsd":{"anyOf":[{"$ref":"#/components/schemas/Decimal"},{"type":"null"}],"description":"Lifetime interest earned in USD, or null when no historian row is available"},"shareOfToken":{"anyOf":[{"$ref":"#/components/schemas/Decimal"},{"type":"null"}],"description":"Share of the token earning USD value, or null when this position has no USD value"},"type":{"type":"string","enum":["reserve"]},"market":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"KLend market address"}]},"reserve":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"KLend reserve address"}]},"obligation":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"KLend obligation address"}]},"obligationTag":{"type":"string","enum":["Vanilla","Lending","LendingFixedRate","Multiply","MultiplyFixedRate","Leverage","LeverageFixedRate"],"description":"Portfolio obligation type tag","example":"Lending"}},"required":["tokenAmount","usd","apy","earnedToDateUsd","shareOfToken","type","market","reserve","obligation","obligationTag"]},"EarnUserTokenHistoryResponse":{"type":"array","items":{"$ref":"#/components/schemas/EarnUserTokenHistoryItem"}},"EarnUserTokenHistoryItem":{"type":"object","properties":{"createdOn":{"type":"string","format":"date-time","description":"Bucket timestamp"},"usdAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total position value in USD at this bucket"}]},"interestEarnedUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Interest earned in USD during this bucket"}]}},"required":["createdOn","usdAmount","interestEarnedUsd"]},"UnderlyingYieldHistoryResponse":{"type":"object","properties":{"mint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Reserve liquidity mint requested by the caller"}]},"sourceType":{"type":"string","enum":["lst","lst-combined","yield-feed"]},"sourceMint":{"anyOf":[{"$ref":"#/components/schemas/AddressBase58"},{"type":"null"}],"description":"Mint whose yield series produced the values, or null for a combined LST series"},"history":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"string","format":"date-time"},"apy":{"$ref":"#/components/schemas/Apy"}},"required":["timestamp","apy"]}}},"required":["mint","sourceType","sourceMint","history"]}},"parameters":{}},"paths":{"/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"},{"description":"Market public key","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"}}}}},"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"}}}}}}},"/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"}}}}},"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"}}}}}}},"/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"},{"description":"Market public key","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"}}}}},"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"}}}}}}},"/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"},{"description":"Market public key","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"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["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"}}}}}}},"/markets/collateral-reserves":{"get":{"summary":"Get collateral reserves with borrowable reserves","description":"Derive one Borrow market row per collateral reserve and debt category from each configured Kamino Lend market.","tags":["Kamino Lend Markets"],"parameters":[{"schema":{"type":"string","description":"Collateral reserve slug or alias","example":"jitosol-sol"},"required":false,"description":"Collateral reserve slug or alias","name":"slug","in":"query"},{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Lending market public key","example":"7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF"}]},"required":false,"description":"Lending market public key","name":"market","in":"query"},{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Collateral reserve public key","example":"FBSyPnxtHKLBZ4UeeUyAnbtFuAmTHLtso9YtsqRDRWpM"}]},"required":false,"description":"Collateral reserve public key","name":"collateralReserve","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/MarketsCollateralReservesResponse"}}}},"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","additionalProperties":{}},"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"}}}}}}},"/markets/batch/metadata":{"get":{"summary":"Get metadata for multiple markets","description":"Get metadata (name, description, curation status, and reserve public keys) for Kamino Lend markets. When market is omitted, all configured markets are returned. The response is keyed by market public key; unknown markets are omitted.","tags":["Kamino Lend Markets"],"parameters":[{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Market public keys, provided as comma-separated or repeated query parameters (max 100); defaults to all configured markets when omitted","example":"7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF"},"required":false,"description":"Market public keys, provided as comma-separated or repeated query parameters (max 100); defaults to all configured markets when omitted","name":"market","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/MarketsBatchMetadataResponse"}}}},"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","additionalProperties":{}},"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"}}}}}}},"/markets/{marketPubkey}/metadata":{"get":{"summary":"Get metadata for a market","description":"Get metadata (name, description, curation status, and reserve public keys) for a single Kamino Lend market.","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":{"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/MarketMetadata"}}}},"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","additionalProperties":{}},"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"}}}}}}},"/markets/{marketPubkey}/charts":{"get":{"summary":"Get charts for a market","description":"Get historical total borrowed, total supplied, and obligation counts for a market.","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":{"type":"string","default":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD","description":"KLend program ID","example":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},"required":false,"description":"KLend program ID","name":"programId","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"},{"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":{"$ref":"#/components/schemas/MarketChartsResponse"}}}},"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","additionalProperties":{}},"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"}}}}}}},"/reserves/{reservePubkey}/charts":{"get":{"summary":"Get charts for a reserve","description":"Get the current raw borrow rate curve and historical base supply and borrow APYs for a reserve.","tags":["Kamino Lend Reserves"],"parameters":[{"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","default":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD","description":"KLend program ID","example":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},"required":false,"description":"KLend program ID","name":"programId","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"},{"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":{"$ref":"#/components/schemas/ReserveChartsResponse"}}}},"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","additionalProperties":{}},"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"}}}}}}},"/reserves/batch/stats":{"get":{"summary":"Get stats for multiple reserves","description":"Get current raw and cap-aware reserve liquidity, borrowing caps and counters, base APYs with historical averages, underlying token yield and UI-matching APY breakdowns, utilization with historical averages, auto-deleveraging settings, reserve farm rewards, pair-specific incentives and partner points programs. Pair-specific incentives and points programs are not included in the APY breakdown totals. Select reserves directly with the reserve query parameter or expand all reserves from lending markets with the market query parameter. The response is keyed by reserve public key; unknown reserves and markets are omitted.","tags":["Kamino Lend Reserves"],"parameters":[{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Reserve public keys, provided as comma-separated or repeated query parameters (max 100)","example":"FBSyPnxtHKLBZ4UeeUyAnbtFuAmTHLtso9YtsqRDRWpM"},"required":false,"description":"Reserve public keys, provided as comma-separated or repeated query parameters (max 100)","name":"reserve","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Lending market public keys whose reserves should be included, provided as comma-separated or repeated query parameters (max 100)","example":"7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF"},"required":false,"description":"Lending market public keys whose reserves should be included, provided as comma-separated or repeated query parameters (max 100)","name":"market","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/ReservesBatchStatsResponse"}}}},"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","additionalProperties":{}},"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"}}}}}}},"/reserves/{reservePubkey}/stats":{"get":{"summary":"Get stats for a reserve","description":"Get current raw and cap-aware reserve liquidity, borrowing caps and counters, base APYs with historical averages, underlying token yield and UI-matching APY breakdowns, utilization with historical averages, auto-deleveraging settings, reserve farm rewards, pair-specific incentives and partner points programs for one reserve. Pair-specific incentives and points programs are not included in the APY breakdown totals.","tags":["Kamino Lend Reserves"],"parameters":[{"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","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/ReserveStats"}}}},"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","additionalProperties":{}},"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/shareholders/{pubkey}/transactions":{"get":{"operationId":"getLiquidityShareholderTransactions","summary":"Get Liquidity transactions by shareholder wallet address","description":"Get all Kamino Liquidity strategy transactions for a provided shareholder wallet address.","tags":["Kamino Liquidity"],"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","enum":["mainnet-beta","devnet"],"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/KaminoLiquidityTransactionsV2Response"}}}},"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","additionalProperties":{}},"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/{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"},{"description":"Market public key","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","description":"Whether to include raw JSON of the transaction","oneOf":[{"type":"string","enum":["1","true","yes","on","y","enabled"]},{"type":"string","enum":["0","false","no","off","n","disabled"]}]},"required":false,"description":"Whether to include raw JSON of the transaction","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","additionalProperties":{}},"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"},{"description":"Market public key","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"}}}},"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}/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"}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message describing why the request could not be processed","example":"The requested calculation is not supported for this asset"}},"required":["error"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}}}},"/v2/kamino-market/{marketPubkey}/obligations/{obligationPubkey}/interest-fees":{"get":{"deprecated":true,"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":{"deprecated":true,"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"}}}}}}},"/v3/kamino-market/users/{userPubkey}/transactions":{"get":{"summary":"Get user transactions across all markets (v3)","description":"Get all Kamino Lend transactions for a given user across all markets, including withdraw-queue transactions.","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/KlendAllMarketsUserTransactionsResponseV3"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v3/kamino-market/{marketPubkey}/users/{userPubkey}/transactions":{"get":{"summary":"Get user transactions (v3)","description":"Get all Kamino Lend transactions for a given user in a market, including withdraw-queue transactions.","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/KlendUserTransactionsResponseV3"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v3/kamino-market/{pubkey}/transactions":{"post":{"summary":"Get bulk market transactions (v3)","description":"Get bulk Kamino Lend transactions for a given market, filtered by instruction name and date range. Returns obligation transactions and withdraw-queue transactions as sibling arrays; exactly one is populated per request depending on the ix name. 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"},{"description":"Market public key","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","description":"Whether to include raw JSON of the transaction. Also accepts other truthy/falsy strings such as \"1\"/\"0\", \"yes\"/\"no\", \"on\"/\"off\".","enum":["true","false"],"default":"false"},"required":false,"description":"Whether to include raw JSON of the transaction. Also accepts other truthy/falsy strings such as \"1\"/\"0\", \"yes\"/\"no\", \"on\"/\"off\".","name":"includeRawJson","in":"query"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KlendBulkTxBodyV3"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KlendBulkTxResponseV3"}}}},"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","additionalProperties":{}},"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"}}}}}}},"/v3/kamino-market/{marketPubkey}/obligations/{obligationPubkey}/deposits/{reservePubkey}/metrics/history":{"get":{"summary":"Get a KLend deposit position history","description":"Get value, APY, and lifetime cumulative interest snapshots for one reserve deposit in an obligation.","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":{"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":{"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":{"$ref":"#/components/schemas/KlendDepositPositionHistoryResponse"}}}},"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","additionalProperties":{}},"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"}}}}}}},"/v3/kamino-market/{marketPubkey}/obligations/{obligationPubkey}/interest-fees":{"get":{"summary":"Get stored interest fees earned per obligation","description":"Get historical interest fees earned for a specific obligation from stored cumulative interest snapshots.","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"}}}}}}},"/v3/kamino-market/{marketPubkey}/obligations/{obligationPubkey}/interest-paid":{"get":{"summary":"Get stored interest fees paid per obligation","description":"Get historical interest fees paid for a specific obligation from stored cumulative interest snapshots.","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/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":{"$ref":"#/components/schemas/AddressBase58"},"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","additionalProperties":{}},"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"},{"description":"Market public key","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","additionalProperties":{}},"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","additionalProperties":{}},"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 fresh stored APYs for principal tokens with active Kamino reserves. Each value matches reserve stats `underlyingApy.current` for the same stored snapshot. Sources without a value from the last 48 hours are omitted; matured principal tokens with a fresh zero row report 0.","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","additionalProperties":{}},"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","additionalProperties":{}},"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","additionalProperties":{}},"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-transactions":{"get":{"summary":"Get KVault allocation transactions","description":"Get cursor-paginated Kamino Earn Vault allocation transactions. Positive token amounts are reserve deposits and negative amounts are reserve withdrawals.","tags":["Kamino Earn Vaults"],"parameters":[{"schema":{"$ref":"#/components/schemas/AddressBase58"},"required":true,"description":"Valid base58-encoded address","name":"pubkey","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":1000,"default":100,"example":100,"description":"Maximum number of allocation transactions to return (1-1000)"},"required":false,"description":"Maximum number of allocation transactions to return (1-1000)","name":"limit","in":"query"},{"schema":{"type":"string","example":"eyJsYXN0SWQiOjgxfQ==","description":"Optional pagination token"},"required":false,"description":"Optional pagination token","name":"paginationToken","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KvaultAllocationTransactionsResponse"}}}},"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","additionalProperties":{}},"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","description":"Whether to include raw JSON of the instruction. Also accepts other truthy/falsy strings such as \"1\"/\"0\", \"yes\"/\"no\", \"on\"/\"off\".","enum":["true","false"],"default":"false"},"required":false,"description":"Whether to include raw JSON of the instruction. Also accepts other truthy/falsy strings such as \"1\"/\"0\", \"yes\"/\"no\", \"on\"/\"off\".","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","additionalProperties":{}},"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":{"$ref":"#/components/schemas/AddressBase58"},"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","additionalProperties":{}},"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}/enqueued-withdraw-transactions":{"get":{"summary":"Get currently queued withdraw-ticket redemptions for a vault","description":"Returns `enqueueToWithdraw` klend transactions that were triggered by a kvault `redeemInKind` on this vault and whose underlying withdraw ticket is still queued on-chain (i.e. has not been fully redeemed or cancelled).","tags":["Kamino Earn Vaults"],"parameters":[{"schema":{"$ref":"#/components/schemas/AddressBase58"},"required":true,"description":"Valid base58-encoded address","name":"pubkey","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnqueuedWithdrawTransactionsResponse"}}}},"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","additionalProperties":{}},"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 Kamino Earn Vaults. Omit type for all on-chain vaults. Use live or privateCredit for CDN-listed vaults.","tags":["Kamino Earn Vaults"],"parameters":[{"schema":{"anyOf":[{"type":"string","enum":["live","privateCredit"]},{"type":"array","items":{"type":"string","enum":["live","privateCredit"]},"minItems":1}],"description":"Vault types. Multiple values return all vaults matching any of the specified types. Omit this parameter to return all on-chain vaults.","example":"live"},"required":false,"description":"Vault types. Multiple values return all vaults matching any of the specified types. Omit this parameter to return all on-chain vaults.","name":"type","in":"query"}],"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","additionalProperties":{}},"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}/allocations":{"get":{"summary":"Get current KVault allocations","description":"Get current reserve allocations, utilization, supply APYs, and market collateral for a Kamino Earn Vault","tags":["Kamino Earn Vaults"],"parameters":[{"schema":{"$ref":"#/components/schemas/AddressBase58"},"required":true,"description":"Valid base58-encoded address","name":"pubkey","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KvaultAllocationsResponse"}}}},"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","additionalProperties":{}},"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/metrics":{"get":{"summary":"Get current metrics for multiple KVaults","description":"Get current Kamino Earn Vault metrics with cursor pagination or an address filter","tags":["Kamino Earn Vaults"],"parameters":[{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"KVault public keys, provided as comma-separated or repeated query parameters (max 100)","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"},"required":false,"description":"KVault public keys, provided as comma-separated or repeated query parameters (max 100)","name":"pubkeys","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"example":100,"description":"Maximum number of vault addresses to inspect (1-100)"},"required":false,"description":"Maximum number of vault addresses to inspect (1-100)","name":"limit","in":"query"},{"schema":{"type":"string","example":"eyJsYXN0SWQiOjgxfQ==","description":"Optional pagination token"},"required":false,"description":"Optional pagination token","name":"paginationToken","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KvaultBatchMetricsResponse"}}}},"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","additionalProperties":{}},"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/account-data":{"get":{"summary":"Get KVault account data","description":"Fetch base64-encoded account data for Kamino Earn Vaults together with the lending markets, reserves and farms they allocate into, so clients can hydrate SDK objects without any getProgramAccounts calls. Omit the vaults parameter to include every vault; unknown vaults are omitted from the response.","tags":["Kamino Earn Vaults"],"parameters":[{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"KVault public keys, provided as comma-separated or repeated query parameters (max 100). Omit to include every vault.","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"},"required":false,"description":"KVault public keys, provided as comma-separated or repeated query parameters (max 100). Omit to include every vault.","name":"vaults","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KvaultAccountDataResponse"}}}},"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","additionalProperties":{}},"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/batch/stats":{"get":{"summary":"Get stats for multiple KVaults","description":"Get derived stats for Kamino Earn Vaults computed from the current on-chain state: supply APY breakdown (base gross/net, vault farm incentives, reserve farm incentives), per-token vault farm rewards, holdings, share price, utilization and the per-reserve allocation breakdown. The response is keyed by vault public key; unknown vaults are omitted. Omit the vaults parameter to include every vault.","tags":["Kamino Earn Vaults"],"parameters":[{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"KVault public keys, provided as comma-separated or repeated query parameters (max 100). Omit to include every vault.","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"},"required":false,"description":"KVault public keys, provided as comma-separated or repeated query parameters (max 100). Omit to include every vault.","name":"vaults","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KvaultBatchStatsResponse"}}}},"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","additionalProperties":{}},"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}/stats":{"get":{"summary":"Get stats for a KVault","description":"Get derived stats for a Kamino Earn Vault computed from the current on-chain state: supply APY breakdown (base gross/net, vault farm incentives, reserve farm incentives), per-token vault farm rewards, holdings, share price, utilization and the per-reserve allocation breakdown. Returns 404 when the vault does not exist.","tags":["Kamino Earn Vaults"],"parameters":[{"schema":{"$ref":"#/components/schemas/AddressBase58"},"required":true,"description":"Valid base58-encoded address","name":"pubkey","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KvaultStats"}}}},"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","additionalProperties":{}},"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/metrics/history":{"get":{"summary":"Get historical metrics for multiple KVaults","description":"Get historical Kamino Earn Vault metrics for multiple vaults between an optional range of dates. The response is keyed by vault public key; unknown vaults are omitted.","tags":["Kamino Earn Vaults"],"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"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"KVault public keys, provided as comma-separated or repeated query parameters (max 25)","example":"VEG1EMtttdHunMbSza8uoms1R18VXmYSph2bBpHcSJd"},"required":true,"description":"KVault public keys, provided as comma-separated or repeated query parameters (max 25)","name":"vaults","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KvaultBatchTimeSeriesResponse"}}}},"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","additionalProperties":{}},"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":{"$ref":"#/components/schemas/AddressBase58"},"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"}]},"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"}]}},"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","additionalProperties":{}},"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}/holders":{"get":{"summary":"Get the share distribution of a KVault","description":"Get the holders of a Kamino Earn Vault ordered by position size, largest first. Shares held in the wallet and shares staked in the vault farm are reported separately and as a total. Read from the most recent vault state snapshot, whose timestamp and total shares issued are returned alongside the holders so each position can be expressed as a share of the vault. Private (authorized) API access only, please add a basic auth header to your request.","tags":["Kamino Earn Vaults"],"parameters":[{"schema":{"$ref":"#/components/schemas/AddressBase58"},"required":true,"description":"Valid base58-encoded address","name":"pubkey","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":1000,"example":1000,"description":"Maximum number of holders to return (1-1000)"},"required":false,"description":"Maximum number of holders to return (1-1000)","name":"limit","in":"query"},{"schema":{"type":"string","example":"eyJsYXN0SWQiOjgxfQ==","description":"Optional pagination token"},"required":false,"description":"Optional pagination token","name":"paginationToken","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KvaultHoldersResponse"}}}},"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","additionalProperties":{}},"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/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":{"$ref":"#/components/schemas/AddressBase58"},"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":{"$ref":"#/components/schemas/SnapshotDateTime"},"tvl":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total Value Locked in token denomination"}]},"solTvl":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Total Value Locked in SOL"}]},"apy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield"}]},"apyTheoretical":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Theoretical Annual Percentage Yield"}]},"apyActual":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Actual Annual Percentage Yield"}]},"apyFarmRewards":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield from Farm Rewards"}]},"apyReservesIncentives":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield from Reserves Incentives"}]},"apyIncentives":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield from Incentives"}]},"sharePrice":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Share Price of the vault"}]},"interest":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Interest earned in token denomination"}]},"interestUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Interest earned in USD"}]},"interestSol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Interest earned in SOL"}]},"reserves":{"type":"array","items":{"type":"object","properties":{"pubkey":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Public key of the reserve"}]},"supplyApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Supply Annual Percentage Yield"}]},"rewardsApy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Rewards Annual Percentage Yield"}]},"allocationRatio":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Allocation Ratio"}]},"rewardTokens":{"type":"array","items":{"type":"object","properties":{"tokenMint":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Token mint address"}]},"apy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield for the reward token"}]}},"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"}]},"apy":{"allOf":[{"$ref":"#/components/schemas/Apy"},{"description":"Annual Percentage Yield for the vault reward token"}]}},"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","additionalProperties":{}},"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":{"$ref":"#/components/schemas/AddressBase58"},"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","additionalProperties":{}},"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":{"$ref":"#/components/schemas/AddressBase58"},"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-time","description":"Timestamp of the investment volume data point"},"volumeUsd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Investment volume in USD"}]}},"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","additionalProperties":{}},"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}/returns-comparison":{"get":{"summary":"Compare historical KVault returns","description":"Compare KVault historical returns with SOFR and the DeFi USD benchmark. Benchmark series are forward-filled for up to 7 days and return null beyond that.","tags":["Kamino Earn Vaults"],"parameters":[{"schema":{"$ref":"#/components/schemas/AddressBase58"},"required":true,"description":"Valid base58-encoded address","name":"pubkey","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KvaultReturnsComparisonResponse"}}}},"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","additionalProperties":{}},"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}/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":{"$ref":"#/components/schemas/KvaultUserPositions"}}}},"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","additionalProperties":{}},"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"}]},"stakedShares":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"The number of Kamino Earn Vault shares staked in a farm"}]},"unstakedShares":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"The number of Kamino Earn Vault shares held in the user wallet"}]},"totalShares":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"The total number of Kamino Earn Vault shares both held and staked by the user"}]}},"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","additionalProperties":{}},"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","additionalProperties":{}},"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","additionalProperties":{}},"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","additionalProperties":{}},"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","additionalProperties":{}},"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"}}}}}}},"/slots/duration":{"get":{"summary":"Get recent Solana slot duration","description":"Fetches the duration of a recent Solana slot (in milliseconds) derived from RPC performance samples over approximately the last hour","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"}}}}}}},"/owners/{pubkey}/net-values/history":{"get":{"operationId":"getOwnerNetValuesHistory","summary":"Get owner net value history","description":"Fetches the historical USD values for an owner across all Kamino products — Lending, Strategies, Vaults, and Staking.","tags":["Other"],"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":{"$ref":"#/components/schemas/OwnerNetValueHistoryResponse"}}}},"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","additionalProperties":{}},"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"}}}}}}},"/kamino-swap/users/{pubkey}/transactions":{"get":{"operationId":"getSwapTransactionsHistory","summary":"Get Swap transactions by user wallet address","description":"Get the Swap transaction history for a provided user wallet address, with optional limit and offset.","tags":["Kamino Swap"],"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,"description":"Maximum number of transactions to return (1-1000)","example":100},"required":false,"description":"Maximum number of transactions to return (1-1000)","name":"limit","in":"query"},{"schema":{"type":"integer","minimum":0,"description":"Number of transactions to skip","example":0},"required":false,"description":"Number of transactions to skip","name":"offset","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SwapHistoryResponse"}}}},"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","additionalProperties":{}},"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":{"$ref":"#/components/schemas/AddressBase58"},"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","additionalProperties":{}},"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":{"$ref":"#/components/schemas/AddressBase58"},"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","additionalProperties":{}},"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","additionalProperties":{}},"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","additionalProperties":{}},"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":[{"$ref":"#/components/schemas/AddressBase58"},{"type":"array","items":{"$ref":"#/components/schemas/AddressBase58"},"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","additionalProperties":{}},"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","additionalProperties":{}},"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","additionalProperties":{}},"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":{"$ref":"#/components/schemas/AddressBase58"},"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","additionalProperties":{}},"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","additionalProperties":{}},"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":{"$ref":"#/components/schemas/AddressBase58"},"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","additionalProperties":{}},"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":{"$ref":"#/components/schemas/AddressBase58"},"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","additionalProperties":{}},"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","additionalProperties":{}},"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"}]},"required":true,"description":"Deposit reserve public key","name":"depositReservePubkey","in":"path"},{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Borrow reserve public key"}]},"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","additionalProperties":{}},"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":{"$ref":"#/components/schemas/AddressBase58"},"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"}}}},"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","additionalProperties":{}},"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"]}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message describing why the request could not be processed","example":"The requested calculation is not supported for this asset"}},"required":["error"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["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"],"parameters":[{"schema":{"$ref":"#/components/schemas/AddressBase58"},"required":false,"description":"Valid base58-encoded address","name":"kvault","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrivateCreditMetricsResponse"}}}},"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","additionalProperties":{}},"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/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"},{"schema":{"$ref":"#/components/schemas/AddressBase58"},"required":false,"description":"Valid base58-encoded address","name":"kvault","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","additionalProperties":{}},"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/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"}]},"sol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount in SOL denomination"}]}},"required":["usd","sol"],"description":"Earnings from interest"},"rewards":{"type":"object","properties":{"usd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount in USD denomination"}]},"sol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount in SOL denomination"}]}},"required":["usd","sol"],"description":"Earnings from vault farm rewards"},"reserveRewards":{"type":"object","properties":{"usd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount in USD denomination"}]},"sol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount in SOL denomination"}]}},"required":["usd","sol"],"description":"Earnings from reserve rewards"},"total":{"type":"object","properties":{"usd":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount in USD denomination"}]},"sol":{"allOf":[{"$ref":"#/components/schemas/Decimal"},{"description":"Amount in SOL denomination"}]}},"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":{"$ref":"#/components/schemas/AddressBase58"},"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","additionalProperties":{}},"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/users/{pubkey}/claim-status":{"get":{"summary":"Get user season claim status","description":"Fetches season reward claim and forfeiture data for a specific user","tags":["Season Rewards"],"parameters":[{"schema":{"$ref":"#/components/schemas/AddressBase58"},"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/SeasonUserClaimStatus"}}}},"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","additionalProperties":{}},"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","additionalProperties":{}},"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 SOL/BTC 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 SOL/BTC Market assets, 'all': select oracle prices from all public klend market assets.","name":"markets","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/OraclePrices"},{"type":"array","items":{"$ref":"#/components/schemas/OracleMarketPrices"}}]}}}},"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","additionalProperties":{}},"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"}]},"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","additionalProperties":{}},"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}/management-history":{"get":{"summary":"Get farm management history","description":"Get management instructions for a specific farm (with pagination).","tags":["Farms"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Farm public key"}]},"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/FarmManagementInstruction"}},"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","additionalProperties":{}},"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"}}}}}}},"/benchmark-rates/sofr/history":{"get":{"summary":"Get SOFR rate history","description":"Returns daily SOFR rates published by the New York Fed from 2023 onwards, including the compounded SOFR index and 30/90/180-day compounded averages. The rate can be null for the latest date because the index is published one business day ahead of the rate. Supports filtering by date range (whole days, inclusive).","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"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SofrRateHistoryResponse"}}}},"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","additionalProperties":{}},"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"}}}}}}},"/portfolio/{pubkey}":{"get":{"operationId":"getPortfolio","summary":"Get portfolio source data for a wallet","description":"Returns source position rows across Kamino products (lending, multiply, leverage, liquidity, earn, private credit, staking). Portfolio totals, counts, fees, historical PnL, and display-only rollups are intentionally left to client composition or their dedicated endpoints.","tags":["Portfolio"],"parameters":[{"schema":{"$ref":"#/components/schemas/AddressBase58"},"required":true,"description":"Valid base58-encoded address","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":{"example":{"timestamp":"2026-06-12T11:16:12.657Z","sections":{"lending":{"indexed":true,"positionsRefreshedOn":"2026-06-11T23:14:19.969Z","pricesRefreshedOn":"2026-06-12T11:12:29.057Z","errors":[]},"multiply":{"indexed":true,"positionsRefreshedOn":"2026-06-11T23:13:54.680Z","pricesRefreshedOn":"2026-06-12T11:12:29.057Z","errors":[]},"leverage":{"indexed":true,"positionsRefreshedOn":"2026-06-11T23:14:00.518Z","pricesRefreshedOn":"2026-06-12T11:12:29.057Z","errors":[]},"liquidity":{"indexed":true,"positionsRefreshedOn":"2026-06-11T23:11:53.211Z","pricesRefreshedOn":"2026-06-11T23:14:24.861Z","errors":[]},"earn":{"indexed":true,"positionsRefreshedOn":"2026-06-11T23:12:29.633Z","pricesRefreshedOn":"2026-06-12T11:12:29.057Z","errors":[]},"privateCredit":{"indexed":true,"positionsRefreshedOn":"2026-06-11T23:12:29.846Z","pricesRefreshedOn":"2026-06-12T11:12:29.057Z","errors":[]},"staking":{"indexed":true,"positionsRefreshedOn":"2026-06-11T23:04:34.002Z","pricesRefreshedOn":"2026-06-12T11:12:29.057Z","errors":[]}},"lending":[{"obligation":"HpAQMFgpSJ3XZWEXtSQgJmuL3Fd8QepJSG79csgq3hoB","market":"5wJeMrUYECGq41fxRESKALVcHnNX26TAWy4W98yULsua","tag":"Vanilla","netValue":"262.00710654164595037","totalDepositValue":"491.89391304710577576","totalBorrowValue":"229.88680650545982539","ltv":"0.4673503786241097951","maxLtv":"0.5727335057760832411","liquidationLtv":"0.63241141170317723635","leverage":"1.8774067602205262589","deposits":[{"mint":"XsoCS1TfEyfFhfvj8EtZ528L3CaKBDBRqRapnBbDF2W","symbol":"SPYx","amount":"0.16082255065800625522","value":"119.1703926699327137","price":"741.005488237479553","reserve":"UvXjBuC7YZYaGB9Rn1PpBD1GySmjzunXgE8Zev9ua8d","maxLtv":"0.73","liquidationLtv":"0.75"}],"borrows":[{"mint":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","symbol":"USDC","amount":"229.95449131043213799","value":"229.88680650545982539","price":"0.99970566","reserve":"97zoywd8mPZsGTg8q1wdD2Wgkdrs2tqusp1Qqcxbyj7E","borrowFactor":"1"}]}],"multiply":[{"obligation":"2JsWdyxA15WodMBzRY5uNUJDvL71xm9NwfMj6qdYi3SC","market":"7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF","tag":"Multiply","netValue":"39.032947857306441512","totalDepositValue":"124.32509095187057771","totalBorrowValue":"85.292143094564136198","ltv":"0.68604126843215345899","maxLtv":"0.87000000000000000002","liquidationLtv":"0.91999999999999999997","leverage":"3.1851319917308934971","deposits":[{"mint":"J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn","symbol":"JitoSOL","amount":"1.4488817124626824571","value":"124.32509095187057771","price":"85.807619685221685924","reserve":"EVbyPKrHG6WBfm4dLxLMJpUDY43cCAcHSpV3KYjKsktW","maxLtv":"0.87","liquidationLtv":"0.92"}],"borrows":[{"mint":"So11111111111111111111111111111111111111112","symbol":"SOL","amount":"1.276825076608483649","value":"85.292143094564136198","price":"66.80017855","reserve":"d4A2prbA2whesmvHaL88BH6Ewn5N4bTSU2Ze8P6Bc4Q","borrowFactor":"1"}],"depositMint":"J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn","borrowMint":"So11111111111111111111111111111111111111112"}],"leverage":[{"obligation":"VgtvJ1iCDAb65pWbwhvX33X6CWMWMdrYRABEhNTJ9xq","market":"7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF","tag":"Leverage","netValue":"8.774498333310038026","totalDepositValue":"23.724451929066735492","totalBorrowValue":"14.949953595756697466","ltv":"0.6301495874575001704","maxLtv":"0.75","liquidationLtv":"0.80000000000000000002","leverage":"2.7037958214663046734","deposits":[{"mint":"7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs","symbol":"ETH","amount":"0.014174648995927885562","value":"23.724451929066735492","price":"1673.72412085","reserve":"febGYTnFX4GbSGoFHFeJXUHgNaK53fB23uDins9Jp1E","maxLtv":"0.75","liquidationLtv":"0.8"}],"borrows":[{"mint":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","symbol":"USDC","amount":"14.954355260684127232","value":"14.949953595756697466","price":"0.99970566","reserve":"D6q6wuQSrifJKZYpR1M8R4YawnLDtDsMmWM1NbBmgJ59","borrowFactor":"1"}],"depositMint":"7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs","borrowMint":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"}],"liquidity":[{"strategy":"HBuYwvq67VKnLyKxPzDjzskyRMk7ps39gwHdvaPGwdmQ","shareMint":"7XB1azPg9hmD196uiGNa61EyvXbCmQhg8jSdptRGkRTZ","shares":"216.673457","netValue":"26.383693978132575086","tokenA":{"mint":"JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN","symbol":"JUP","amount":"54.602417609162028891","value":"9.1141301646553401798","price":"0.16691807"},"tokenB":{"mint":"bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1","symbol":"bSOL","amount":"0.19898556021252914791","value":"17.269563813477234906","price":"86.788025196563257466"}}],"earn":[{"vault":"7cYGMEwQKhdYdugAyQBEqtwG6KhHyuEDcgUrdfGaV6qV","tokenMint":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","symbol":"USDC","name":"Core+ USDC Vault","netValue":"102.43833649457444653","shares":"97.742099","amount":"102.46849707200261978"}],"privateCredit":[{"vault":"91b1opzHNUQobfLZxGMNYT5qDRKoqV8FdsdQBmH4wBxy","tokenMint":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","symbol":"USDC","name":"Kamino Institutional USDC","netValue":"10.357873888364687946","shares":"10","amount":"10.360923522594328361"}],"staking":[{"mint":"KMNo3nJsBXfcpJTVhZcXLW7RmTwTt4GVFE7suUBo9sS","symbol":"KMNO","farm":"2sFZDpBn4sA42uNbAD6QzQ98rPSmqnPyksYe6SJKVvay","amount":"1700.2533519964832604","value":"30.92680935374059216","price":"0.01818953"}]},"schema":{"$ref":"#/components/schemas/PortfolioResponse"}}}},"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","additionalProperties":{}},"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"}}}}}}},"/portfolio/{pubkey}/rewards":{"get":{"operationId":"getPortfolioRewards","summary":"Get pending farm rewards for a wallet","description":"Returns pending farm reward source rows across Kamino products. USD reward totals are composed on the client from price data.","tags":["Portfolio"],"parameters":[{"schema":{"$ref":"#/components/schemas/AddressBase58"},"required":true,"description":"Valid base58-encoded address","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","pattern":"^\\d+(,\\d+)*$","description":"Comma-separated farm reward types to include. Defaults to 0,1 to match portfolio webapp rewards.","example":"0,1"},"required":false,"description":"Comma-separated farm reward types to include. Defaults to 0,1 to match portfolio webapp rewards.","name":"rewardTypes","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"timestamp":"2026-06-12T11:16:12.684Z","farms":[{"farm":"A9nKRhBPVdQ2QDfzMkhpZzsAimCt59wSKxpo36bzhDiU","userState":"JBhXSh6Zb5TPi8g6rsTpNjmuet4V7YGGtU3daou9Y2qs","delegatee":"ARygwR6WBPvatQ2bBrSyytsyBgqrRDwxEuANWSSydfXW","strategy":"HBuYwvq67VKnLyKxPzDjzskyRMk7ps39gwHdvaPGwdmQ","positionType":"Liquidity","activeStakeAmount":"216.673457","tokenMints":["JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN","bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1"],"rewards":[{"mint":"BLZEEuZUBVqFhj8adcCFPJvPVCiCyVmh3hkJMrU8KuJA","amount":"59.765598641","index":0,"type":0,"tokenProgram":"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"}]},{"farm":"9hUeaxTE3UsRFVt46NPDszSGW76gqDwK743SvJvjYUiY","userState":"HkPCNqo1FRo41oiCwG8Kjsg664Jamsv8TE9kU7bqVP5S","delegatee":"5CVMEG7NSdEDVTPiz8efwL6zbXYSVEpkHovf54n2bvoZ","vault":"NSSESC5s9Mk7uhUg7hdRiEeNaz7FQmZveJseF62Zjbc","positionType":"Lend","activeStakeAmount":"0","tokenMints":["CASHx9KJUStyftLFWGvEVf59SGeG9sh5FfcnZMVPCASH"],"rewards":[{"mint":"CASHx9KJUStyftLFWGvEVf59SGeG9sh5FfcnZMVPCASH","amount":"0.446532","index":0,"type":0,"tokenProgram":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"}]},{"farm":"3Dsn7mXKCxQ54QxDtogFsGqgMhhgWnVtN5MGLHvowh3E","userState":"F8vs1tNCEdsvHB9ZgYCNRNnb2CbmDULEfQ68A6ZXHvwm","delegatee":"51rLRu3pvps8vWHVt6uSBeRgQ2UJgCPsw5TEdGsQSKkA","positionType":"Borrow Markets","activeStakeAmount":"0","tokenMints":[],"rewards":[{"mint":"CASHx9KJUStyftLFWGvEVf59SGeG9sh5FfcnZMVPCASH","amount":"0.003248","index":0,"type":1,"tokenProgram":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"}]}]},"schema":{"$ref":"#/components/schemas/PortfolioRewardsResponse"}}}},"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","additionalProperties":{}},"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"}}}}}}},"/user/{walletPubkey}/holdings":{"get":{"operationId":"getUserHoldings","summary":"Get raw token holdings for a wallet","description":"Returns raw SPL Token, Token-2022, and native SOL holdings keyed by mint. Native SOL is reported under the wrapped SOL mint and summed with any wrapped SOL token-account balance. Holdings are priced from cached Scope spot prices with kswap fallback prices when Scope has no price; valueUsd is null when neither source has a price. When minValueUsd is set, holdings below the threshold and unpriced holdings are excluded.","tags":["User"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"User wallet public key","example":"AxqtG9SHDkZTLSWg81Sp7VqAzQpRqXtR9ziJ3VQAS8As"}]},"required":true,"description":"User wallet public key","name":"walletPubkey","in":"path"},{"schema":{"type":["number","null"],"minimum":0,"description":"Minimum USD value to include. When set, holdings below the threshold and holdings without a known price are excluded.","example":0.01},"required":false,"description":"Minimum USD value to include. When set, holdings below the threshold and holdings without a known price are excluded.","name":"minValueUsd","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserHoldingsResponse"}}}},"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","additionalProperties":{}},"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"}}}}}}},"/v3/earn/users/{userPubkey}/activity":{"get":{"summary":"Get a wallet earn activity feed","description":"Get cursor-paginated vault and filtered lending deposits, direct and withdraw-queue withdrawals, repayments, and daily interest accrual. Current-day interest can grow until the day closes.","tags":["Earn"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"User wallet address"}]},"required":true,"description":"User wallet address","name":"userPubkey","in":"path"},{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Only return activity for this token mint"}]},"required":false,"description":"Only return activity for this token mint","name":"tokenMint","in":"query"},{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Only return activity for this vault"}]},"required":false,"description":"Only return activity for this vault","name":"vault","in":"query"},{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Only return activity for this KLend reserve"}]},"required":false,"description":"Only return activity for this KLend reserve","name":"reserve","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"default":["Vanilla","Lending","LendingFixedRate","Multiply","MultiplyFixedRate","Leverage","LeverageFixedRate"],"description":"Obligation types to include. Defaults to all seven types for compatibility. Earn products are Vanilla, Lending, and LendingFixedRate. Allowed values: Vanilla, Lending, LendingFixedRate, Multiply, MultiplyFixedRate, Leverage, LeverageFixedRate.","example":"Vanilla,Lending,LendingFixedRate"},"required":false,"description":"Obligation types to include. Defaults to all seven types for compatibility. Earn products are Vanilla, Lending, and LendingFixedRate. Allowed values: Vanilla, Lending, LendingFixedRate, Multiply, MultiplyFixedRate, Leverage, LeverageFixedRate.","name":"obligationTypes","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":25,"example":25,"description":"Maximum number of activity rows to return (1-100)"},"required":false,"description":"Maximum number of activity rows to return (1-100)","name":"limit","in":"query"},{"schema":{"type":"string","example":"eyJsYXN0SWQiOjgxfQ==","description":"Pagination position. Resend tokenMint, vault, reserve, obligationTypes, start, and end unchanged when requesting the next page."},"required":false,"description":"Pagination position. Resend tokenMint, vault, reserve, obligationTypes, start, and end unchanged when requesting the next page.","name":"paginationToken","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-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/EarnUserActivityResponse"}}}},"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","additionalProperties":{}},"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"}}}}}}},"/v3/earn/users/{userPubkey}/summary":{"get":{"summary":"Get a wallet earn summary","description":"Get live vault and lending deposits, idle eligible holdings, APYs, and wallet-global lifetime interest by token for the requested obligation types. Pass Vanilla,Lending,LendingFixedRate for Earn products.","tags":["Earn"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"User wallet address"}]},"required":true,"description":"User wallet address","name":"userPubkey","in":"path"},{"schema":{"type":"string","default":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD","description":"KLend program ID","example":"KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD"},"required":false,"description":"KLend program ID","name":"programId","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"default":["Vanilla","Lending","LendingFixedRate","Multiply","MultiplyFixedRate","Leverage","LeverageFixedRate"],"description":"Obligation types to include. Defaults to all seven types for compatibility. Earn products are Vanilla, Lending, and LendingFixedRate. Allowed values: Vanilla, Lending, LendingFixedRate, Multiply, MultiplyFixedRate, Leverage, LeverageFixedRate.","example":"Vanilla,Lending,LendingFixedRate"},"required":false,"description":"Obligation types to include. Defaults to all seven types for compatibility. Earn products are Vanilla, Lending, and LendingFixedRate. Allowed values: Vanilla, Lending, LendingFixedRate, Multiply, MultiplyFixedRate, Leverage, LeverageFixedRate.","name":"obligationTypes","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EarnUserSummaryResponse"}}}},"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","additionalProperties":{}},"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"}}}}}}},"/v3/earn/users/{userPubkey}/tokens/{tokenMint}/metrics/history":{"get":{"summary":"Get wallet token earnings and growth history","description":"Get total earn position value and interest earned per bucket across vaults and lending deposits for the requested obligation types.","tags":["Earn"],"parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"User wallet address"}]},"required":true,"description":"User wallet address","name":"userPubkey","in":"path"},{"schema":{"allOf":[{"$ref":"#/components/schemas/AddressBase58"},{"description":"Token mint address"}]},"required":true,"description":"Token mint address","name":"tokenMint","in":"path"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"default":["Vanilla","Lending","LendingFixedRate","Multiply","MultiplyFixedRate","Leverage","LeverageFixedRate"],"description":"Obligation types to include. Defaults to all seven types for compatibility. Earn products are Vanilla, Lending, and LendingFixedRate. Allowed values: Vanilla, Lending, LendingFixedRate, Multiply, MultiplyFixedRate, Leverage, LeverageFixedRate.","example":"Vanilla,Lending,LendingFixedRate"},"required":false,"description":"Obligation types to include. Defaults to all seven types for compatibility. Earn products are Vanilla, Lending, and LendingFixedRate. Allowed values: Vanilla, Lending, LendingFixedRate, Multiply, MultiplyFixedRate, Leverage, LeverageFixedRate.","name":"obligationTypes","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":{"$ref":"#/components/schemas/EarnUserTokenHistoryResponse"}}}},"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","additionalProperties":{}},"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/underlying-yields/{mint}/history":{"get":{"summary":"Get underlying token yield history","description":"Get the native yield history for a reserve liquidity mint, with server-side source classification and combined LST alignment.","tags":["Yields"],"parameters":[{"schema":{"$ref":"#/components/schemas/AddressBase58"},"required":true,"description":"Valid base58-encoded address","name":"mint","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/UnderlyingYieldHistoryResponse"}}}},"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","additionalProperties":{}},"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"}}}}}}}},"webhooks":{}}