# Get historical user metrics for all KVault positions Get historical timeseries of total usd/sol/interest/apy for all user Kamino Earn Vault positions Endpoint: GET /kvaults/users/{pubkey}/metrics/history Version: 1.0.0 ## Path parameters: - `pubkey` (string, required) Valid base58-encoded address of the user wallet Example: "AxqtG9SHDkZTLSWg81Sp7VqAzQpRqXtR9ziJ3VQAS8As" ## Query parameters: - `start` (any) Start date of the range (defaults to Unix epoch). Accepts ISO string or epoch in ms. - `end` (any) End date of the range (defaults to current time). Accepts ISO string or epoch in ms. ## Response 200 fields (application/json): - `createdOn` (string, required) Timestamp of the metrics snapshot Example: "2025-03-01T12:00:00.000Z" - `usdAmount` (string, required) Total Value Locked in USD Example: "1234.56789" - `solAmount` (string, required) Total Value Locked in USD Example: "1234.56789" - `weightedApy` (string, required) Borrow interest APY Example: "0.2" - `cumulativeInterestEarnedUsd` (string, required) Total Value Locked in USD Example: "1234.56789" - `cumulativeInterestEarnedSol` (string, required) Total Value Locked in USD Example: "1234.56789" - `interestEarnedPerSecondUsd` (string, required) Total Value Locked in USD Example: "1234.56789" - `interestEarnedPerSecondSol` (string, required) Total Value Locked in USD Example: "1234.56789" ## Response 400 fields (application/json): - `error` (string, required) High-level error message describing the failure Example: "Invalid query request" - `details` (array) Detailed validation issues (present only for validation errors) Example: [{"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"}] ## Response 500 fields (application/json): - `error` (string, required) Error message for internal server failure Example: "An internal error occurred"