{"openapi":"3.1.0","info":{"title":"DeFi Orbit API","version":"1.0.0","description":"Public REST API for DeFi Orbit positions, lending, portfolio, and usage. Compact spec: examples stripped, minified. Full spec with examples: https://docs.defiorbit.xyz/openapi.yaml"},"servers":[{"url":"https://api.defiorbit.xyz"}],"security":[{"bearerAuth":[]}],"tags":[{"name":"Portfolio"},{"name":"Snapshots"},{"name":"Uniswap V3"},{"name":"Aerodrome V3"},{"name":"Orca"},{"name":"Aave V3"},{"name":"Morpho"},{"name":"Kamino"},{"name":"Usage"}],"paths":{"/v1/lending/aavev3/batch":{"post":{"tags":["Aave V3"],"operationId":"post_v1_lending_aavev3_batch","summary":"Batch Get Aave V3 Positions","description":"Same as the list endpoint, but accepts multiple wallets in one POST. Returns an array in the same shape as the list endpoint, one entry per wallet/chain pair. Optional `market_id` and `target_health_factor` in the body.\n\n**Credits:** 15 per matching wallet/chain result when fewer than 100 match; 12 per result at 100 or more. Billing uses the matching count before pagination.","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","description":"Page. Default: 1.","default":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Maximum 25. Default: 10.","default":10,"maximum":25}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"chain_id":{"type":"integer"},"wallet":{"type":"string"},"positions":{"type":"array","items":{"type":"object","properties":{"marketId":{"type":"string"},"healthFactor":{"type":"string","description":"String. Aave divides liquidation-threshold-weighted collateral by debt. Morpho divides collateral × oracle price × LLTV by debt, to four decimals. Kamino divides liquidation LTV by LTV. MAX or ∞ when there is no debt."},"netWorthUSD":{"type":"string"}},"required":["marketId","healthFactor","netWorthUSD"]}},"calculations":{"type":"array","items":{"type":"object","properties":{"healthFactor":{"type":"string","description":"String. Aave divides liquidation-threshold-weighted collateral by debt. Morpho divides collateral × oracle price × LLTV by debt, to four decimals. Kamino divides liquidation LTV by LTV. MAX or ∞ when there is no debt."},"netAPY":{"type":"string"},"targetHealthFactor":{"type":"number","description":"Health factor used for safe-borrow and safe-withdraw figures. Default 1.5."}},"required":["healthFactor","netAPY","targetHealthFactor"]}}},"required":["chain_id","wallet","positions","calculations"]}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/aave-v3/batch","metadata":{"sidebarTitle":"Batch Get Aave V3 Positions"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"wallets":{"type":"array","description":"Wallet addresses (comma-separated in the explorer; JSON array in the request body).","items":{"type":"string"},"x-default":["0xbf7620d0377b0660a6cbaef5cdfe2e00eddc1495"]},"chain_id":{"type":"integer","description":"Chain ID."},"market_id":{"type":"string","enum":["main","lido","horizon"],"description":"Omit for all markets. Values: `main`, `lido`, `horizon`."},"target_health_factor":{"type":"number","description":"Target health factor. Default: 1.5.","default":1.5}},"required":["wallets"]}}}}}},"/v1/lending/aavev3":{"get":{"tags":["Aave V3"],"operationId":"get_v1_lending_aavev3","summary":"List Aave V3 Positions","description":"Live Aave V3 lending/borrowing positions for a wallet from the lending indexer, one entry per chain, with calculations. Optional `market_id` and `target_health_factor` (default 1.5).\n\n**Credits:** 15 per matching wallet/chain result, before pagination.","parameters":[{"name":"wallet","in":"query","required":true,"schema":{"type":"string","description":"Wallet address.","x-default":"0xbf7620d0377b0660a6cbaef5cdfe2e00eddc1495"}},{"name":"market_id","in":"query","required":false,"schema":{"type":"string","enum":["main","lido","horizon"],"description":"Omit for all markets. Values: `main`, `lido`, `horizon`."}},{"name":"target_health_factor","in":"query","required":false,"schema":{"type":"number","description":"Target health factor. Default: 1.5.","default":1.5}},{"name":"chain_id","in":"query","required":false,"schema":{"type":"integer","description":"Chain ID."}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","description":"Page. Default: 1.","default":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Maximum 25. Default: 10.","default":10,"maximum":25}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"chain_id":{"type":"integer"},"wallet":{"type":"string"},"positions":{"type":"array","items":{"type":"object","properties":{"marketId":{"type":"string"},"healthFactor":{"type":"string","description":"String. Aave divides liquidation-threshold-weighted collateral by debt. Morpho divides collateral × oracle price × LLTV by debt, to four decimals. Kamino divides liquidation LTV by LTV. MAX or ∞ when there is no debt."},"totalCollateralUSD":{"type":"string"},"totalDebtUSD":{"type":"string"},"netWorthUSD":{"type":"string"},"suppliedAssets":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string"},"amountSuppliedUSD":{"type":"string"},"supplyAPY":{"type":"string"},"isCollateral":{"type":"boolean"}},"required":["symbol","amountSuppliedUSD","supplyAPY","isCollateral"]}},"borrowedAssets":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string"},"amountBorrowedUSD":{"type":"string"},"borrowAPY":{"type":"string"}},"required":["symbol","amountBorrowedUSD","borrowAPY"]}}},"required":["marketId","healthFactor","totalCollateralUSD","totalDebtUSD","netWorthUSD","suppliedAssets","borrowedAssets"]}},"calculations":{"type":"array","items":{"type":"object","properties":{"targetHealthFactor":{"type":"number","description":"Health factor used for safe-borrow and safe-withdraw figures. Default 1.5."},"healthFactor":{"type":"string","description":"String. Aave divides liquidation-threshold-weighted collateral by debt. Morpho divides collateral × oracle price × LLTV by debt, to four decimals. Kamino divides liquidation LTV by LTV. MAX or ∞ when there is no debt."},"dailySupplyInterestUSD":{"type":"string"},"dailyBorrowInterestUSD":{"type":"string"},"netDailyInterestUSD":{"type":"string"},"safeBorrowAmountUSD":{"type":"string"},"safeWithdrawAmountUSD":{"type":"string"},"currentLtvPercentage":{"type":"string"},"netAPY":{"type":"string"},"positionLeverage":{"type":"string"},"weightedSupplyAPY":{"type":"string"},"weightedBorrowAPY":{"type":"string"},"borrowUtilizationRate":{"type":"string"}},"required":["targetHealthFactor","healthFactor","dailySupplyInterestUSD","dailyBorrowInterestUSD","netDailyInterestUSD","safeBorrowAmountUSD","safeWithdrawAmountUSD","currentLtvPercentage","netAPY","positionLeverage","weightedSupplyAPY","weightedBorrowAPY","borrowUtilizationRate"]}}},"required":["chain_id","wallet","positions","calculations"]}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/aave-v3/bundle","metadata":{"sidebarTitle":"List Aave V3 Positions"}}}},"/v1/lending/aavev3/position/{chain_id}/events":{"get":{"tags":["Aave V3"],"operationId":"get_v1_lending_aavev3_position_chain_id_events","summary":"Get Position Events","description":"Position history: supply, borrow, withdraw, repay, and liquidation for one chain. Optional `market_id` (default main). Each event has type, amount, amountUSD, priceUSD, asset details, and transactionHash. Newest first.\n\n**Credits:** 1 per successful call.","parameters":[{"name":"chain_id","in":"path","required":true,"schema":{"type":"integer","description":"Chain ID.","x-default":8453}},{"name":"wallet","in":"query","required":true,"schema":{"type":"string","description":"Wallet address.","x-default":"0xbf7620d0377b0660a6cbaef5cdfe2e00eddc1495"}},{"name":"market_id","in":"query","required":false,"schema":{"type":"string","enum":["main","lido","horizon"],"description":"Default: `main`. Values: `main`, `lido`, `horizon`.","default":"main"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","description":"Page. Default: 1.","default":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Maximum 25. Default: 10.","default":10,"maximum":25}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"blockNumber":{"type":"integer"},"logIndex":{"type":"number"},"timestamp":{"type":"number","description":"Unix seconds."},"transactionHash":{"type":"string"},"asset":{"type":"object","properties":{"address":{"type":"string"},"symbol":{"type":"string"},"name":{"type":"string"},"decimals":{"type":"integer"},"logoURI":{"type":"string","description":"Token logo URL, or null when none is available."}},"required":["address","symbol","name","decimals","logoURI"]},"amount":{"type":"string"},"amountUSD":{"type":"string"},"priceUSD":{"type":"string"},"counterparty":{"type":"string"}},"required":["type","blockNumber","logIndex","timestamp","transactionHash","asset","amount","amountUSD","priceUSD","counterparty"]}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/aave-v3/events","metadata":{"sidebarTitle":"Get Position Events"}}}},"/v1/lending/aavev3/position":{"get":{"tags":["Aave V3"],"operationId":"get_v1_lending_aavev3_position","summary":"Get Aave V3 Position (all chains)","description":"Live Aave V3 positions from the lending indexer, one entry per chain, without calculation fields. Optional `market_id` to filter main / lido / horizon.\n\n**Credits:** 3 per matching wallet/chain result, before pagination.","parameters":[{"name":"wallet","in":"query","required":true,"schema":{"type":"string","description":"Wallet address.","x-default":"0xbf7620d0377b0660a6cbaef5cdfe2e00eddc1495"}},{"name":"market_id","in":"query","required":false,"schema":{"type":"string","enum":["main","lido","horizon"],"description":"Omit for all markets. Values: `main`, `lido`, `horizon`."}},{"name":"chain_id","in":"query","required":false,"schema":{"type":"integer","description":"Chain ID."}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","description":"Page. Default: 1.","default":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Maximum 25. Default: 10.","default":10,"maximum":25}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"chain_id":{"type":"integer"},"wallet":{"type":"string"},"positions":{"type":"array","items":{"type":"object","properties":{"marketId":{"type":"string"},"healthFactor":{"type":"string","description":"String. Aave divides liquidation-threshold-weighted collateral by debt. Morpho divides collateral × oracle price × LLTV by debt, to four decimals. Kamino divides liquidation LTV by LTV. MAX or ∞ when there is no debt."},"totalCollateralUSD":{"type":"string"},"totalDebtUSD":{"type":"string"},"availableBorrowsUSD":{"type":"string"},"currentLiquidationThreshold":{"type":"string"},"ltv":{"type":"string"},"netWorthUSD":{"type":"string"},"suppliedAssets":{"type":"array","items":{"type":"object","properties":{"tokenAddress":{"type":"string"},"symbol":{"type":"string"},"name":{"type":"string"},"decimals":{"type":"integer"},"logoURI":{"type":"string","description":"Token logo URL, or null when none is available."},"amountSupplied":{"type":"string"},"currentPriceUSD":{"type":"string"},"amountSuppliedUSD":{"type":"string"},"supplyAPY":{"type":"string"},"isCollateral":{"type":"boolean"},"ltv":{"type":"string"},"liquidationThreshold":{"type":"string"},"liquidationBonus":{"type":"string"},"utilizationRate":{"type":"string"},"totalSupply":{"type":"string"},"totalBorrow":{"type":"string"}},"required":["tokenAddress","symbol","name","decimals","logoURI","amountSupplied","currentPriceUSD","amountSuppliedUSD","supplyAPY","isCollateral","ltv","liquidationThreshold","liquidationBonus","utilizationRate","totalSupply","totalBorrow"]}},"borrowedAssets":{"type":"array","items":{"type":"object","properties":{"tokenAddress":{"type":"string"},"symbol":{"type":"string"},"name":{"type":"string"},"decimals":{"type":"integer"},"logoURI":{"type":"string","description":"Token logo URL, or null when none is available."},"amountBorrowed":{"type":"string"},"currentPriceUSD":{"type":"string"},"amountBorrowedUSD":{"type":"string"},"stableDebt":{"type":"string"},"variableDebt":{"type":"string"},"borrowAPY":{"type":"string"},"stableBorrowAPY":{"type":"string"},"variableBorrowAPY":{"type":"string"},"borrowRateMode":{"type":"string"},"interestAccrued":{"type":"string"},"interestAccruedUSD":{"type":"string"}},"required":["tokenAddress","symbol","name","decimals","logoURI","amountBorrowed","currentPriceUSD","amountBorrowedUSD","stableDebt","variableDebt","borrowAPY","stableBorrowAPY","variableBorrowAPY","borrowRateMode","interestAccrued","interestAccruedUSD"]}},"riskMetrics":{"type":"object","properties":{"maxBorrowCapacityUSD":{"type":"string"},"borrowUtilization":{"type":"string"}},"required":["maxBorrowCapacityUSD","borrowUtilization"]}},"required":["marketId","healthFactor","totalCollateralUSD","totalDebtUSD","availableBorrowsUSD","currentLiquidationThreshold","ltv","netWorthUSD","suppliedAssets","borrowedAssets","riskMetrics"]}}},"required":["chain_id","wallet","positions"]}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/aave-v3/position","metadata":{"sidebarTitle":"Get Aave V3 Position (all chains)"}}}},"/v1/lending/aavev3/position/{chain_id}/risk":{"get":{"tags":["Aave V3"],"operationId":"get_v1_lending_aavev3_position_chain_id_risk","summary":"Get Position Risk","description":"Liquidation distance, LTV, and per-asset risk breakdown for one chain's live position. Optional `market_id` (default main) and `target_health_factor` (default 1.5) for the safe borrow/withdraw slider.\n\n**Credits:** 8 per successful call.","parameters":[{"name":"chain_id","in":"path","required":true,"schema":{"type":"integer","description":"Chain ID.","x-default":8453}},{"name":"wallet","in":"query","required":true,"schema":{"type":"string","description":"Wallet address.","x-default":"0xbf7620d0377b0660a6cbaef5cdfe2e00eddc1495"}},{"name":"market_id","in":"query","required":false,"schema":{"type":"string","enum":["main","lido","horizon"],"description":"Default: `main`. Values: `main`, `lido`, `horizon`.","default":"main"}},{"name":"target_health_factor","in":"query","required":false,"schema":{"type":"number","description":"Target health factor. Default: 1.5.","default":1.5}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"object","properties":{"chain_id":{"type":"integer"},"wallet":{"type":"string"},"market_id":{"type":"string"},"health_factor":{"type":"string","description":"String. Aave divides liquidation-threshold-weighted collateral by debt. Morpho divides collateral × oracle price × LLTV by debt, to four decimals. Kamino divides liquidation LTV by LTV. MAX or ∞ when there is no debt."},"current_ltv_percentage":{"type":"string"},"safe_borrow_amount_usd":{"type":"string"},"safe_withdraw_amount_usd":{"type":"string"},"risk_metrics":{"type":"object","properties":{"priceDropToLiquidation":{"type":"string"},"borrowCapacityUtilization":{"type":"string"},"interestCoverageRatio":{"type":"string"},"maxBorrowCapacityUSD":{"type":"string"},"liquidationThreshold":{"type":"string"},"ltv":{"type":"string"}},"required":["priceDropToLiquidation","borrowCapacityUtilization","interestCoverageRatio","maxBorrowCapacityUSD","liquidationThreshold","ltv"]},"asset_metrics":{"type":"object","properties":{"suppliedAssets":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string"},"suppliedUSD":{"type":"string"},"weightInPortfolio":{"type":"string"},"dailyEarnings":{"type":"string"},"liquidation":{"type":"object","properties":{"direction":{"type":"string"},"currentPrice":{"type":"number"},"liquidationPricePerTokenUSD":{"type":"string"},"liquidationNotionalUSD":{"type":"string"},"priceDropToLiquidationPct":{"type":"string"}},"required":["direction","currentPrice","liquidationPricePerTokenUSD","liquidationNotionalUSD","priceDropToLiquidationPct"]}},"required":["symbol","suppliedUSD","weightInPortfolio","dailyEarnings","liquidation"]}},"borrowedAssets":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string"},"borrowedUSD":{"type":"string"},"weightInDebt":{"type":"string"},"dailyCost":{"type":"string"},"liquidation":{"type":"object","properties":{"direction":{"type":"string"},"currentPrice":{"type":"number"},"liquidationPricePerTokenUSD":{"type":"string"},"liquidationNotionalUSD":{"type":"string"},"priceIncreaseToLiquidationPct":{"type":"string"}},"required":["direction","currentPrice","liquidationPricePerTokenUSD","liquidationNotionalUSD","priceIncreaseToLiquidationPct"]}},"required":["symbol","borrowedUSD","weightInDebt","dailyCost","liquidation"]}}},"required":["suppliedAssets","borrowedAssets"]}},"required":["chain_id","wallet","market_id","health_factor","current_ltv_percentage","safe_borrow_amount_usd","safe_withdraw_amount_usd","risk_metrics","asset_metrics"]}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/aave-v3/risk","metadata":{"sidebarTitle":"Get Position Risk"}}}},"/v1/lending/aavev3/position/{chain_id}/snapshots":{"get":{"tags":["Aave V3"],"operationId":"get_v1_lending_aavev3_position_chain_id_snapshots","summary":"Get Position Historical Performance","description":"Historical performance: daily Aave V3 position snapshots for the history chart. `max_snapshots` is a day count; omit it for the full indexed series. Optional `market_id` (default main).\n\n**Credits:** 2 per successful call.","parameters":[{"name":"chain_id","in":"path","required":true,"schema":{"type":"integer","description":"Chain ID.","x-default":8453}},{"name":"wallet","in":"query","required":true,"schema":{"type":"string","description":"Wallet address.","x-default":"0xbf7620d0377b0660a6cbaef5cdfe2e00eddc1495"}},{"name":"market_id","in":"query","required":false,"schema":{"type":"string","enum":["main","lido","horizon"],"description":"Default: `main`. Values: `main`, `lido`, `horizon`.","default":"main"}},{"name":"max_snapshots","in":"query","required":false,"schema":{"type":"integer","description":"Max snapshots (days)."}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"number","description":"Unix seconds."},"collateral_usd":{"type":"string"},"debt_usd":{"type":"string"},"net_worth_usd":{"type":"string"},"health_factor":{"type":"string","description":"String. Aave divides liquidation-threshold-weighted collateral by debt. Morpho divides collateral × oracle price × LLTV by debt, to four decimals. Kamino divides liquidation LTV by LTV. MAX or ∞ when there is no debt."}},"required":["timestamp","collateral_usd","debt_usd","net_worth_usd","health_factor"]}}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/aave-v3/snapshots","metadata":{"sidebarTitle":"Get Position Historical Performance"}}}},"/v1/lending/aavev3/summary":{"get":{"tags":["Aave V3"],"operationId":"get_v1_lending_aavev3_summary","summary":"Get Aave V3 Summary","description":"Lightweight per-chain \"is this wallet at risk anywhere\" check from the lending indexer — no position detail, just chain IDs and an `at_risk` flag (health factor below 1.5). Optional `market_id` (main / lido / horizon) to scope one market.\n\n**Credits:** 3 per successful call.","parameters":[{"name":"wallet","in":"query","required":true,"schema":{"type":"string","description":"Wallet address.","x-default":"0xbf7620d0377b0660a6cbaef5cdfe2e00eddc1495"}},{"name":"chain_id","in":"query","required":false,"schema":{"type":"integer","description":"Chain ID."}},{"name":"market_id","in":"query","required":false,"schema":{"type":"string","enum":["main","lido","horizon"],"description":"Omit for all markets. Values: `main`, `lido`, `horizon`."}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"object","properties":{"chains":{"type":"array","items":{"type":"object","properties":{"chain_id":{"type":"integer"},"at_risk":{"type":"boolean","description":"True when health factor is a finite number below 1.5. MAX and ∞ are not at risk."}},"required":["chain_id","at_risk"]}},"total":{"type":"number"},"total_at_risk":{"type":"integer","description":"Count of chains or obligations currently at risk."}},"required":["chains","total","total_at_risk"]}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/aave-v3/summary","metadata":{"sidebarTitle":"Get Aave V3 Summary"}}}},"/v1/lending/aavev3/position/{chain_id}/yield":{"get":{"tags":["Aave V3"],"operationId":"get_v1_lending_aavev3_position_chain_id_yield","summary":"Get Position Yield","description":"Daily/weekly/monthly/yearly interest earned vs. paid, plus net APY. Optional `market_id` (default main) and `target_health_factor` (default 1.5).\n\n**Credits:** 8 per successful call.","parameters":[{"name":"chain_id","in":"path","required":true,"schema":{"type":"integer","description":"Chain ID.","x-default":8453}},{"name":"wallet","in":"query","required":true,"schema":{"type":"string","description":"Wallet address.","x-default":"0xbf7620d0377b0660a6cbaef5cdfe2e00eddc1495"}},{"name":"market_id","in":"query","required":false,"schema":{"type":"string","enum":["main","lido","horizon"],"description":"Default: `main`. Values: `main`, `lido`, `horizon`.","default":"main"}},{"name":"target_health_factor","in":"query","required":false,"schema":{"type":"number","description":"Target health factor. Default: 1.5.","default":1.5}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"object","properties":{"chain_id":{"type":"integer"},"wallet":{"type":"string"},"market_id":{"type":"string"},"daily_supply_interest_usd":{"type":"string"},"daily_borrow_interest_usd":{"type":"string"},"net_daily_interest_usd":{"type":"string"},"net_apy":{"type":"string"},"position_leverage":{"type":"string"},"weighted_supply_apy":{"type":"string"},"weighted_borrow_apy":{"type":"string"},"projected_earnings_detailed":{"type":"object","properties":{"simple":{"type":"object","properties":{"oneDay":{"type":"string"},"sevenDays":{"type":"string"},"thirtyDays":{"type":"string"},"oneYear":{"type":"string"}},"required":["oneDay","sevenDays","thirtyDays","oneYear"]},"compounding":{"type":"object","properties":{"sevenDays":{"type":"string"},"thirtyDays":{"type":"string"},"oneYear":{"type":"string"}},"required":["sevenDays","thirtyDays","oneYear"]}},"required":["simple","compounding"]}},"required":["chain_id","wallet","market_id","daily_supply_interest_usd","daily_borrow_interest_usd","net_daily_interest_usd","net_apy","position_leverage","weighted_supply_apy","weighted_borrow_apy","projected_earnings_detailed"]}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/aave-v3/yield","metadata":{"sidebarTitle":"Get Position Yield"}}}},"/v1/positions/aerodromev3/batch":{"post":{"tags":["Aerodrome V3"],"operationId":"post_v1_positions_aerodromev3_batch","summary":"Batch Get Aerodrome V3 Positions","description":"Same as the list endpoint, multiple wallets in one POST. Returns the same shape as ?full=true on the list endpoint — for scanning many addresses at once on Base.\n\n**Credits:** 12 per position returned on this page.","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","description":"Page. Default: 1.","default":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Maximum 25. Default: 10.","default":10,"maximum":25}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"token_id":{"type":"string"},"chain_id":{"type":"integer"},"wallet":{"type":"string"},"is_active":{"type":"boolean"},"position":{"type":"object","properties":{"positionData":{"type":"object","properties":{"id":{"type":"string"},"owner":{"type":"string"},"tickLower":{"type":"string"},"tickUpper":{"type":"string"},"token0":{"type":"object","properties":{"symbol":{"type":"string"}},"required":["symbol"]},"token1":{"type":"object","properties":{"symbol":{"type":"string"}},"required":["symbol"]},"pool":{"type":"object","properties":{"id":{"type":"string"},"feeTier":{"type":"string"}},"required":["id","feeTier"]},"chain":{"type":"object","properties":{"id":{"type":"number"}},"required":["id"]},"protocol":{"type":"object","properties":{"code":{"type":"string"}},"required":["code"]},"managerAddress":{"type":"string"}},"required":["id","owner","tickLower","tickUpper","token0","token1","pool","chain","protocol","managerAddress"]},"calculations":{"type":"object","properties":{"inRange":{"type":"boolean","description":"True when the pool price is inside the position tick range."},"positionUsdValue":{"type":"string","description":"USD string. Token principal plus unclaimed fees and rewards."},"isClosed":{"type":"boolean","description":"True when the position liquidity is zero."}},"required":["inRange","positionUsdValue","isClosed"]}},"required":["positionData","calculations"]}},"required":["token_id","chain_id","wallet","is_active","position"]}},"pagination":{"$ref":"#/components/schemas/Pagination"},"counts":{"type":"object","properties":{"totalActive":{"type":"number"},"totalInactive":{"type":"number"},"total":{"type":"number"},"filtered":{"type":"number"},"errors":{"type":"number"},"spams":{"type":"array","items":{"type":"object"}}},"required":["totalActive","totalInactive","total","filtered","errors","spams"]}},"required":["data","pagination","counts"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/aerodrome-v3/batch","metadata":{"sidebarTitle":"Batch Get Aerodrome V3 Positions"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"wallets":{"type":"array","description":"Wallet addresses (comma-separated in the explorer; JSON array in the request body).","items":{"type":"string"},"x-default":["0xbf7620d0377b0660a6cbaef5cdfe2e00eddc1495"]}},"required":["wallets"]}}}}}},"/v1/positions/aerodromev3/{id}/events":{"get":{"tags":["Aerodrome V3"],"operationId":"get_v1_positions_aerodromev3_id_events","summary":"Get Aerodrome V3 Position Events","description":"Position history for one Slipstream LP position: deposits (IncreaseLiquidity), withdrawals (DecreaseLiquidity), fee collections, and compounds (Collect). Each event has token amounts, token prices at the transaction (token0PriceUSD, token1PriceUSD), timestamp, and transaction_hash. USD value is amount times that price; it is not a stored field. The first deposit is the mint. An empty compounds list is omitted.\n\n**Credits:** 1 per successful call.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"Token ID.","x-default":"1"}},{"name":"chain_id","in":"query","required":true,"schema":{"type":"integer","description":"Chain ID.","x-default":8453}},{"name":"manager_address","in":"query","required":false,"schema":{"type":"string","description":"Manager address."}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"object","properties":{"token_id":{"type":"string"},"chain_id":{"type":"integer"},"deposits":{"type":"array","items":{"type":"object","properties":{"amount0":{"type":"string","description":"Token amount as a decimal string."},"amount1":{"type":"string","description":"Token amount as a decimal string."},"token0PriceUSD":{"type":"string","description":"USD price of token0 at the transaction."},"token1PriceUSD":{"type":"string","description":"USD price of token1 at the transaction."},"timestamp":{"type":"number","description":"Unix seconds."},"block":{"type":"integer"},"transaction_hash":{"type":"string"}},"required":["amount0","amount1","token0PriceUSD","token1PriceUSD","timestamp","block","transaction_hash"]}},"withdrawals":{"type":"array","items":{"type":"object","properties":{"amount0":{"type":"string","description":"Token amount as a decimal string."},"amount1":{"type":"string","description":"Token amount as a decimal string."},"token0PriceUSD":{"type":"string","description":"USD price of token0 at the transaction."},"token1PriceUSD":{"type":"string","description":"USD price of token1 at the transaction."},"timestamp":{"type":"number","description":"Unix seconds."},"block":{"type":"integer"},"transaction_hash":{"type":"string"}},"required":["amount0","amount1","token0PriceUSD","token1PriceUSD","timestamp","block","transaction_hash"]}},"collections":{"type":"array","items":{"type":"object","properties":{"amount0":{"type":"string","description":"Token amount as a decimal string."},"amount1":{"type":"string","description":"Token amount as a decimal string."},"token0PriceUSD":{"type":"string","description":"USD price of token0 at the transaction."},"token1PriceUSD":{"type":"string","description":"USD price of token1 at the transaction."},"timestamp":{"type":"number","description":"Unix seconds."},"block":{"type":"integer"},"transaction_hash":{"type":"string"}},"required":["amount0","amount1","token0PriceUSD","token1PriceUSD","timestamp","block","transaction_hash"]}}},"required":["token_id","chain_id","deposits","withdrawals","collections"]}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/aerodrome-v3/events","metadata":{"sidebarTitle":"Get Aerodrome V3 Position Events"}}}},"/v1/positions/aerodromev3/{id}/full":{"get":{"tags":["Aerodrome V3"],"operationId":"get_v1_positions_aerodromev3_id_full","summary":"Get Full Aerodrome V3 Position Detail","description":"Everything: state, full event history, PnL, impermanent loss, fee and AERO reward accrual, and APR. The heaviest endpoint — prefer snapshot/pnl/yield if you don't need the whole payload.\n\n**Credits:** 15 per successful call.\n\nThese queries have their own credit cost.\n\n| Query | Credits |\n| --- | --- |\n| `status=inactive` | 7 |","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"Token ID.","x-default":"1"}},{"name":"chain_id","in":"query","required":true,"schema":{"type":"integer","description":"Chain ID.","x-default":8453}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["inactive"],"description":"Omit for active positions. Set to `inactive` for closed positions. Default: active."}},{"name":"manager_address","in":"query","required":false,"schema":{"type":"string","description":"Manager address."}},{"name":"granularity","in":"query","required":false,"schema":{"type":"string","description":"Comma-separated: `hourly`, `daily`, `weekly`, `monthly`, `yearly`."}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"object","properties":{"positionData":{"type":"object","properties":{"id":{"type":"string"},"owner":{"type":"string"},"liquidity":{"type":"string"},"tickLower":{"type":"string"},"tickUpper":{"type":"string"},"token0":{"type":"object","properties":{"id":{"type":"string"},"symbol":{"type":"string"},"decimals":{"type":"integer"},"name":{"type":"string"}},"required":["id","symbol","decimals","name"]},"token1":{"type":"object","properties":{"id":{"type":"string"},"symbol":{"type":"string"},"decimals":{"type":"integer"},"name":{"type":"string"}},"required":["id","symbol","decimals","name"]},"pool":{"type":"object","properties":{"id":{"type":"string"},"feeTier":{"type":"string"}},"required":["id","feeTier"]},"chain":{"type":"object","properties":{"id":{"type":"number"}},"required":["id"]},"protocol":{"type":"object","properties":{"code":{"type":"string"}},"required":["code"]},"managerAddress":{"type":"string"}},"required":["id","owner","liquidity","tickLower","tickUpper","token0","token1","pool","chain","protocol","managerAddress"]},"calculations":{"type":"object","properties":{"inRange":{"type":"boolean","description":"True when the pool price is inside the position tick range."},"isClosed":{"type":"boolean","description":"True when the position liquidity is zero."},"positionUsdValue":{"type":"string","description":"USD string. Token principal plus unclaimed fees and rewards."},"pnlUsdValue":{"type":"string","description":"USD string. Current position value, plus withdrawals, plus claimed fees and rewards, minus capital deposited."},"pnlPercentage":{"type":"string","description":"Percent string. PnL divided by net invested capital. 0 when net invested is not positive."},"earnedAprPercentage":{"type":"object","properties":{"yield":{"type":"string","description":"Percent string for that component."},"fees":{"type":"string","description":"Percent string for that component."},"rewards":{"type":"string","description":"Percent string for that component."}},"required":["yield","fees","rewards"],"description":"Simple APR percent strings, not compounded. Each figure is value × 365 / days / time-weighted capital. Days are at least 1 hour."}},"required":["inRange","isClosed","positionUsdValue","pnlUsdValue","pnlPercentage","earnedAprPercentage"]}},"required":["positionData","calculations"]}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}},"x-mint":{"href":"/api-reference/aerodrome-v3/full","metadata":{"sidebarTitle":"Get Full Aerodrome V3 Position Detail"}}}},"/v1/positions/aerodromev3/{id}":{"get":{"tags":["Aerodrome V3"],"operationId":"get_v1_positions_aerodromev3_id","summary":"Get Aerodrome V3 Position","description":"Raw on-chain state for a single Slipstream position: ticks, pool, tokens, liquidity.\n\n**Credits:** 2 per successful call.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"Token ID.","x-default":"1"}},{"name":"chain_id","in":"query","required":true,"schema":{"type":"integer","description":"Chain ID.","x-default":8453}},{"name":"manager_address","in":"query","required":false,"schema":{"type":"string","description":"Manager address."}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"object","properties":{"token_id":{"type":"string"},"chain_id":{"type":"integer"},"wallet":{"type":"string"},"is_active":{"type":"boolean"},"position_state":{"type":"object","properties":{"id":{"type":"string"},"owner":{"type":"string"},"liquidity":{"type":"string"},"tickLower":{"type":"string"},"tickUpper":{"type":"string"},"token0":{"type":"object","properties":{"id":{"type":"string"},"symbol":{"type":"string"},"decimals":{"type":"integer"},"name":{"type":"string"}},"required":["id","symbol","decimals","name"]},"token1":{"type":"object","properties":{"id":{"type":"string"},"symbol":{"type":"string"},"decimals":{"type":"integer"},"name":{"type":"string"}},"required":["id","symbol","decimals","name"]},"pool":{"type":"object","properties":{"id":{"type":"string"},"tick":{"type":"string"},"feeTier":{"type":"string"}},"required":["id","tick","feeTier"]},"chain":{"type":"object","properties":{"id":{"type":"number"}},"required":["id"]},"protocol":{"type":"object","properties":{"code":{"type":"string"}},"required":["code"]}},"required":["id","owner","liquidity","tickLower","tickUpper","token0","token1","pool","chain","protocol"]}},"required":["token_id","chain_id","wallet","is_active","position_state"]}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/aerodrome-v3/get","metadata":{"sidebarTitle":"Get Aerodrome V3 Position"}}}},"/v1/positions/aerodromev3":{"get":{"tags":["Aerodrome V3"],"operationId":"get_v1_positions_aerodromev3","summary":"List Aerodrome V3 Positions","description":"All active Slipstream CL positions for a wallet on Base (chain_id=8453). Use status=inactive for closed positions.\n\n**Credits:** 2 per position returned on this page.\n\nThese queries have their own credit cost.\n\n| Query | Credits per returned position |\n| --- | --- |\n| `status=inactive` | 1 |\n| `full=true` | 15 |","parameters":[{"name":"wallet","in":"query","required":true,"schema":{"type":"string","description":"Wallet address.","x-default":"0xbf7620d0377b0660a6cbaef5cdfe2e00eddc1495"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["inactive"],"description":"Omit for active positions. Set to `inactive` for closed positions. Default: active."}},{"name":"full","in":"query","required":false,"schema":{"type":"boolean","description":"Boolean. Include `full=true` for the detailed payload. Omit otherwise. On list endpoints this returns active positions only."}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","description":"Page. Default: 1.","default":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Maximum 25. Default: 10.","default":10,"maximum":25}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"token_id":{"type":"string"},"chain_id":{"type":"integer"},"manager_address":{"type":"string"},"wallet":{"type":"string"},"is_active":{"type":"boolean"},"position_state":{"type":"object","properties":{"id":{"type":"string"},"owner":{"type":"string"},"liquidity":{"type":"string"},"tickLower":{"type":"string"},"tickUpper":{"type":"string"},"token0":{"type":"object","properties":{"id":{"type":"string"},"symbol":{"type":"string"},"decimals":{"type":"integer"},"name":{"type":"string"}},"required":["id","symbol","decimals","name"]},"token1":{"type":"object","properties":{"id":{"type":"string"},"symbol":{"type":"string"},"decimals":{"type":"integer"},"name":{"type":"string"}},"required":["id","symbol","decimals","name"]},"pool":{"type":"object","properties":{"id":{"type":"string"},"tick":{"type":"string"},"feeTier":{"type":"string"}},"required":["id","tick","feeTier"]},"chain":{"type":"object","properties":{"id":{"type":"number"}},"required":["id"]},"protocol":{"type":"object","properties":{"code":{"type":"string"}},"required":["code"]}},"required":["id","owner","liquidity","tickLower","tickUpper","token0","token1","pool","chain","protocol"]}},"required":["token_id","chain_id","manager_address","wallet","is_active","position_state"]}},"pagination":{"$ref":"#/components/schemas/Pagination"},"counts":{"type":"object","properties":{"totalActive":{"type":"number"},"totalInactive":{"type":"number"},"total":{"type":"number"},"filtered":{"type":"number"},"errors":{"type":"number"},"spams":{"type":"array","items":{"type":"object"}}},"required":["totalActive","totalInactive","total","filtered","errors","spams"]}},"required":["data","pagination","counts"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/aerodrome-v3/list","metadata":{"sidebarTitle":"List Aerodrome V3 Positions"}}}},"/v1/positions/aerodromev3/{id}/pnl":{"get":{"tags":["Aerodrome V3"],"operationId":"get_v1_positions_aerodromev3_id_pnl","summary":"Get Aerodrome V3 Position PnL","description":"Just the profit/loss numbers, pulled out of the full payload.\n\n**Credits:** 8 per successful call.\n\nThese queries have their own credit cost.\n\n| Query | Credits |\n| --- | --- |\n| `status=inactive` | 4 |","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"Token ID.","x-default":"1"}},{"name":"chain_id","in":"query","required":true,"schema":{"type":"integer","description":"Chain ID.","x-default":8453}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["inactive"],"description":"Omit for active positions. Set to `inactive` for closed positions. Default: active."}},{"name":"manager_address","in":"query","required":false,"schema":{"type":"string","description":"Manager address."}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"object","properties":{"token_id":{"type":"string"},"chain_id":{"type":"integer"},"pnl_usd_value":{"type":"string","description":"USD string. Current position value, plus withdrawals, plus claimed fees and rewards, minus capital deposited."},"pnl_percentage":{"type":"string","description":"Percent string. PnL divided by net invested capital. 0 when net invested is not positive."},"time_weighted_average_capital":{"type":"string","description":"USD string. Capital weighted by how long each deposit or withdrawal was open. Compounds are not new capital."},"hodl_gross_benchmark_usd_value":{"type":"string","description":"USD string. Deposited token amounts at the current price. Withdrawals are not subtracted."},"alpha_vs_hodl_gross_usd_value":{"type":"string","description":"USD string. Remaining value plus withdrawals plus claimed yield, minus the HODL gross benchmark."},"alpha_vs_hodl_gross_percentage":{"type":"string","description":"Percent string of that alpha over the HODL gross benchmark. 0 when the benchmark is not positive."},"net_impermanent_loss":{"type":"string","description":"USD string. Current position value, including unclaimed yield, minus net deposited tokens at the current price."},"net_impermanent_loss_percentage":{"type":"string","description":"Percent string of net impermanent loss over the value of net deposited tokens."},"pure_impermanent_loss":{"type":"string","description":"USD string. Current token principal minus net deposited tokens at the current price. Fees and rewards are excluded."},"pure_impermanent_loss_percentage":{"type":"string","description":"Percent string of pure impermanent loss over the value of net deposited tokens."},"market_pnl_usd_value":{"type":"string","description":"USD string. HODL gross benchmark minus capital deposited."},"lp_divergence_pnl_usd_value":{"type":"string","description":"USD string. Alpha versus HODL, minus total fees and rewards."},"realized_usd_value":{"type":"string","description":"USD string. Withdrawals plus claimed fees and rewards."},"unrealized_usd_value":{"type":"string","description":"USD string. Current position value, including unclaimed fees and rewards."},"is_closed":{"type":"boolean","description":"True when the position liquidity is zero."}},"required":["token_id","chain_id","pnl_usd_value","pnl_percentage","time_weighted_average_capital","hodl_gross_benchmark_usd_value","alpha_vs_hodl_gross_usd_value","alpha_vs_hodl_gross_percentage","net_impermanent_loss","net_impermanent_loss_percentage","pure_impermanent_loss","pure_impermanent_loss_percentage","market_pnl_usd_value","lp_divergence_pnl_usd_value","realized_usd_value","unrealized_usd_value","is_closed"]}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/aerodrome-v3/pnl","metadata":{"sidebarTitle":"Get Aerodrome V3 Position PnL"}}}},"/v1/positions/aerodromev3/{id}/snapshot":{"get":{"tags":["Aerodrome V3"],"operationId":"get_v1_positions_aerodromev3_id_snapshot","summary":"Get Aerodrome V3 Position Snapshot","description":"A one-shot health check: current value, in/out of range, PnL, and APR. Not the daily history chart — use GET /:id/snapshots for historical performance.\n\n**Credits:** 5 per successful call.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"Token ID.","x-default":"1"}},{"name":"chain_id","in":"query","required":true,"schema":{"type":"integer","description":"Chain ID.","x-default":8453}},{"name":"manager_address","in":"query","required":false,"schema":{"type":"string","description":"Manager address."}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"object","properties":{"token_id":{"type":"string"},"chain_id":{"type":"integer"},"position_usd_value":{"type":"string","description":"USD string. Token principal plus unclaimed fees and rewards."},"in_range":{"type":"boolean","description":"True when the pool price is inside the position tick range."},"is_closed":{"type":"boolean","description":"True when the position liquidity is zero."},"pnl_usd_value":{"type":"string","description":"USD string. Current position value, plus withdrawals, plus claimed fees and rewards, minus capital deposited."},"pnl_percentage":{"type":"string","description":"Percent string. PnL divided by net invested capital. 0 when net invested is not positive."},"earned_apr_percentage":{"type":"object","properties":{"yield":{"type":"string","description":"Percent string for that component."},"fees":{"type":"string","description":"Percent string for that component."},"rewards":{"type":"string","description":"Percent string for that component."}},"required":["yield","fees","rewards"],"description":"Simple APR percent strings, not compounded. Each figure is value × 365 / days / time-weighted capital. Days are at least 1 hour."}},"required":["token_id","chain_id","position_usd_value","in_range","is_closed","pnl_usd_value","pnl_percentage","earned_apr_percentage"]}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/aerodrome-v3/snapshot","metadata":{"sidebarTitle":"Get Aerodrome V3 Position Snapshot"}}}},"/v1/positions/aerodromev3/{id}/snapshots":{"get":{"tags":["Aerodrome V3"],"operationId":"get_v1_positions_aerodromev3_id_snapshots","summary":"Get Aerodrome V3 Historical Performance","description":"Daily history chart for one Slipstream position: mint genesis point, then one row per UTC day. rewards is the cumulative AERO token amount (not USD). This is not the current health check — that is GET /:id/snapshot.\n\n**Credits:** 2 per successful call.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"Token ID.","x-default":"1"}},{"name":"chain_id","in":"query","required":true,"schema":{"type":"integer","description":"Chain ID.","x-default":8453}},{"name":"manager_address","in":"query","required":false,"schema":{"type":"string","description":"Manager address."}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"number","description":"Unix seconds."},"position_usd_value":{"type":"string","description":"USD string. Token principal plus unclaimed fees and rewards."},"fees_usd":{"type":"string","description":"USD string of total fees on that day's snapshot."},"rewards":{"type":"string","description":"USD string of rewards earned through that day. 0 when the position has no rewards."},"apr":{"type":"string","description":"Yearly in-range fee APR percent string for that day. 0 when the figure is missing."}},"required":["timestamp","position_usd_value","fees_usd","rewards","apr"]}}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/aerodrome-v3/snapshots","metadata":{"sidebarTitle":"Get Aerodrome V3 Historical Performance"}}}},"/v1/positions/aerodromev3/summary":{"get":{"tags":["Aerodrome V3"],"operationId":"get_v1_positions_aerodromev3_summary","summary":"Get Aerodrome V3 Summary","description":"Wallet-level counts only — active vs. inactive Slipstream CL positions on Base.\n\n**Credits:** 1 per successful call.","parameters":[{"name":"wallet","in":"query","required":true,"schema":{"type":"string","description":"Wallet address.","x-default":"0xbf7620d0377b0660a6cbaef5cdfe2e00eddc1495"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"object","properties":{"total":{"type":"number"},"total_active":{"type":"number"},"total_inactive":{"type":"number"}},"required":["total","total_active","total_inactive"]}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/aerodrome-v3/summary","metadata":{"sidebarTitle":"Get Aerodrome V3 Summary"}}}},"/v1/positions/aerodromev3/{id}/yield":{"get":{"tags":["Aerodrome V3"],"operationId":"get_v1_positions_aerodromev3_id_yield","summary":"Get Aerodrome V3 Position Yield","description":"Fee and AERO reward accrual. projected_yield_apr and estimated_total_yield match the position page. earned_apr_percentage is historical earned APR and stays non-zero out of range. unclaimed_fees is Pending Fees. unclaimed_rewards is Pending Rewards.\n\n**Credits:** 8 per successful call.\n\nThese queries have their own credit cost.\n\n| Query | Credits |\n| --- | --- |\n| `status=inactive` | 4 |","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"Token ID.","x-default":"1"}},{"name":"chain_id","in":"query","required":true,"schema":{"type":"integer","description":"Chain ID.","x-default":8453}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["inactive"],"description":"Omit for active positions. Set to `inactive` for closed positions. Default: active."}},{"name":"manager_address","in":"query","required":false,"schema":{"type":"string","description":"Manager address."}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"object","properties":{"token_id":{"type":"string"},"chain_id":{"type":"integer"},"earned_apr_percentage":{"type":"object","properties":{"yield":{"type":"string","description":"Percent string for that component."},"fees":{"type":"string","description":"Percent string for that component."},"rewards":{"type":"string","description":"Percent string for that component."}},"required":["yield","fees","rewards"],"description":"Simple APR percent strings, not compounded. Each figure is value × 365 / days / time-weighted capital. Days are at least 1 hour."},"projected_yield_apr":{"type":"string","description":"Yearly in-range APR percent string. 0 when the position is out of range or closed."},"estimated_total_yield":{"type":"object","properties":{"daily":{"type":"string"},"weekly":{"type":"string"},"monthly":{"type":"string"},"yearly":{"type":"string"}},"required":["daily","weekly","monthly","yearly"],"description":"USD strings. Observed average daily fees and rewards, scaled to a day, week, month, and year."},"average_fees_usd_value":{"type":"object","properties":{"daily":{"type":"object","properties":{"amount0":{"type":"string","description":"Token amount as a decimal string."},"amount1":{"type":"string","description":"Token amount as a decimal string."},"usdValue0":{"type":"string","description":"USD value of token0 as a decimal string."},"usdValue1":{"type":"string","description":"USD value of token1 as a decimal string."},"totalUsdValue":{"type":"string","description":"USD total as a decimal string."}},"required":["amount0","amount1","usdValue0","usdValue1","totalUsdValue"]},"hourly":{"type":"object","properties":{"amount0":{"type":"string","description":"Token amount as a decimal string."},"amount1":{"type":"string","description":"Token amount as a decimal string."},"usdValue0":{"type":"string","description":"USD value of token0 as a decimal string."},"usdValue1":{"type":"string","description":"USD value of token1 as a decimal string."},"totalUsdValue":{"type":"string","description":"USD total as a decimal string."}},"required":["amount0","amount1","usdValue0","usdValue1","totalUsdValue"]},"weekly":{"type":"object","properties":{"amount0":{"type":"string","description":"Token amount as a decimal string."},"amount1":{"type":"string","description":"Token amount as a decimal string."},"usdValue0":{"type":"string","description":"USD value of token0 as a decimal string."},"usdValue1":{"type":"string","description":"USD value of token1 as a decimal string."},"totalUsdValue":{"type":"string","description":"USD total as a decimal string."}},"required":["amount0","amount1","usdValue0","usdValue1","totalUsdValue"]},"monthly":{"type":"object","properties":{"amount0":{"type":"string","description":"Token amount as a decimal string."},"amount1":{"type":"string","description":"Token amount as a decimal string."},"usdValue0":{"type":"string","description":"USD value of token0 as a decimal string."},"usdValue1":{"type":"string","description":"USD value of token1 as a decimal string."},"totalUsdValue":{"type":"string","description":"USD total as a decimal string."}},"required":["amount0","amount1","usdValue0","usdValue1","totalUsdValue"]},"yearly":{"type":"object","properties":{"amount0":{"type":"string","description":"Token amount as a decimal string."},"amount1":{"type":"string","description":"Token amount as a decimal string."},"usdValue0":{"type":"string","description":"USD value of token0 as a decimal string."},"usdValue1":{"type":"string","description":"USD value of token1 as a decimal string."},"totalUsdValue":{"type":"string","description":"USD total as a decimal string."}},"required":["amount0","amount1","usdValue0","usdValue1","totalUsdValue"]}},"required":["daily","hourly","weekly","monthly","yearly"],"description":"Observed fee token amounts and USD value per hour, day, week, month, and year."},"average_rewards_usd_value":{"type":"object","properties":{"hourly":{"type":"string"},"daily":{"type":"string"},"weekly":{"type":"string"},"monthly":{"type":"string"},"yearly":{"type":"string"}},"required":["hourly","daily","weekly","monthly","yearly"],"description":"Observed reward USD value per hour, day, week, month, and year."},"total_fees":{"type":"object","properties":{"amount0":{"type":"string","description":"Token amount as a decimal string."},"amount1":{"type":"string","description":"Token amount as a decimal string."},"usdValue0":{"type":"string","description":"USD value of token0 as a decimal string."},"usdValue1":{"type":"string","description":"USD value of token1 as a decimal string."},"totalUsdValue":{"type":"string","description":"USD total as a decimal string."}},"required":["amount0","amount1","usdValue0","usdValue1","totalUsdValue"],"description":"Fee token amounts and USD value across collected, compounded, and uncollected fees."},"total_rewards":{"type":"object","properties":{"totalUsdValue":{"type":"string","description":"USD total as a decimal string."},"totalTokenValue":{"type":"string"}},"required":["totalUsdValue","totalTokenValue"],"description":"Reward USD total and token total."},"total_yield":{"type":"string","description":"USD string. Total fees plus total rewards."},"unclaimed_fees":{"type":"object","properties":{"amount0":{"type":"string","description":"Token amount as a decimal string."},"amount1":{"type":"string","description":"Token amount as a decimal string."},"usdValue0":{"type":"string","description":"USD value of token0 as a decimal string."},"usdValue1":{"type":"string","description":"USD value of token1 as a decimal string."},"totalUsdValue":{"type":"string","description":"USD total as a decimal string."}},"required":["amount0","amount1","usdValue0","usdValue1","totalUsdValue"],"description":"Uncollected fee token amounts, valued at the current price."},"claimed_fees":{"type":"object","properties":{"amount0":{"type":"string","description":"Token amount as a decimal string."},"amount1":{"type":"string","description":"Token amount as a decimal string."},"usdValue0":{"type":"string","description":"USD value of token0 as a decimal string."},"usdValue1":{"type":"string","description":"USD value of token1 as a decimal string."},"totalUsdValue":{"type":"string","description":"USD total as a decimal string."}},"required":["amount0","amount1","usdValue0","usdValue1","totalUsdValue"],"description":"Collected fee token amounts, valued at the collection price."},"unclaimed_rewards":{"type":"object","properties":{"rewards":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"label":{"type":"string"},"valueInToken":{"type":"string"},"rewardToken":{"type":"object","properties":{"symbol":{"type":"string"},"decimals":{"type":"integer"},"name":{"type":"string"},"currentPriceUSD":{"type":"string"}},"required":["symbol","decimals","name","currentPriceUSD"]}},"required":["type","label","valueInToken","rewardToken"]}},"totalUsdValue":{"type":"string","description":"USD total as a decimal string."}},"required":["rewards","totalUsdValue"],"description":"Pending reward tokens and their USD total."},"claimed_rewards":{"type":"object","properties":{"rewards":{"type":"array","items":{"type":"object"}},"totalUsdValue":{"type":"string","description":"USD total as a decimal string."},"totalTokenValue":{"type":"string"}},"required":["rewards","totalUsdValue","totalTokenValue"],"description":"Collected reward tokens, with USD and token totals."},"is_closed":{"type":"boolean","description":"True when the position liquidity is zero."}},"required":["token_id","chain_id","earned_apr_percentage","projected_yield_apr","estimated_total_yield","average_fees_usd_value","average_rewards_usd_value","total_fees","total_rewards","total_yield","unclaimed_fees","claimed_fees","unclaimed_rewards","claimed_rewards","is_closed"]}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/aerodrome-v3/yield","metadata":{"sidebarTitle":"Get Aerodrome V3 Position Yield"}}}},"/v1/lending/kamino/batch":{"post":{"tags":["Kamino"],"operationId":"post_v1_lending_kamino_batch","summary":"Batch Get Kamino Positions","description":"Same as the bundle endpoint but accepts multiple Solana wallets in one POST (max 5 — Kamino checks 38+ isolated markets per wallet). Returns the same shape per obligation across all wallets.\n\n**Credits:** 15 per matching obligation when fewer than 100 match; 12 per obligation at 100 or more. Billing uses the matching count before pagination.","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","description":"Page. Default: 1.","default":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Maximum 25. Default: 10.","default":10,"maximum":25}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"chain_id":{"type":"integer"},"wallet":{"type":"string"},"target_health_factor":{"type":"string","description":"Health factor used for safe-borrow and safe-withdraw figures. Default 1.5."},"position":{"type":"object","properties":{"marketAddress":{"type":"string"},"obligationAddress":{"type":"string"},"healthFactor":{"type":"string","description":"String. Aave divides liquidation-threshold-weighted collateral by debt. Morpho divides collateral × oracle price × LLTV by debt, to four decimals. Kamino divides liquidation LTV by LTV. MAX or ∞ when there is no debt."},"netWorthUSD":{"type":"string"}},"required":["marketAddress","obligationAddress","healthFactor","netWorthUSD"]},"calculations":{"type":"object","properties":{"netAPY":{"type":"string"},"netDailyInterestUSD":{"type":"string"}},"required":["netAPY","netDailyInterestUSD"]}},"required":["chain_id","wallet","target_health_factor","position","calculations"]}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/BadGateway"},"504":{"$ref":"#/components/responses/GatewayTimeout"}},"x-mint":{"href":"/api-reference/kamino/batch","metadata":{"sidebarTitle":"Batch Get Kamino Positions"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"wallets":{"type":"array","description":"Solana wallets (JSON array in the request body).","items":{"type":"string"},"x-default":["7FvUzcCoB4Eeykow6PdR3dZLL8WHvqkNr8bKgUKzaiM8"]}},"required":["wallets"]}}}}}},"/v1/lending/kamino":{"get":{"tags":["Kamino"],"operationId":"get_v1_lending_kamino","summary":"Get Kamino Bundle","description":"All active Kamino obligations with full position data and risk/yield calculations — health factor, LTV, interest rates, APY projections. One entry per active market obligation.\n\n**Credits:** 15 per matching obligation, before pagination.","parameters":[{"name":"wallet","in":"query","required":true,"schema":{"type":"string","description":"Solana wallet.","x-default":"7FvUzcCoB4Eeykow6PdR3dZLL8WHvqkNr8bKgUKzaiM8"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","description":"Page. Default: 1.","default":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Maximum 25. Default: 10.","default":10,"maximum":25}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"chain_id":{"type":"integer"},"wallet":{"type":"string"},"target_health_factor":{"type":"string","description":"Health factor used for safe-borrow and safe-withdraw figures. Default 1.5."},"position":{"type":"object","properties":{"marketAddress":{"type":"string"},"marketName":{"type":"string"},"obligationAddress":{"type":"string"},"healthFactor":{"type":"string","description":"String. Aave divides liquidation-threshold-weighted collateral by debt. Morpho divides collateral × oracle price × LLTV by debt, to four decimals. Kamino divides liquidation LTV by LTV. MAX or ∞ when there is no debt."},"totalCollateralUSD":{"type":"string"},"totalDebtUSD":{"type":"string"},"netWorthUSD":{"type":"string"}},"required":["marketAddress","marketName","obligationAddress","healthFactor","totalCollateralUSD","totalDebtUSD","netWorthUSD"]},"calculations":{"type":"object","properties":{"netAPY":{"type":"string"},"netDailyInterestUSD":{"type":"string"},"weightedSupplyAPY":{"type":"string"},"weightedBorrowAPY":{"type":"string"},"healthFactor":{"type":"string","description":"String. Aave divides liquidation-threshold-weighted collateral by debt. Morpho divides collateral × oracle price × LLTV by debt, to four decimals. Kamino divides liquidation LTV by LTV. MAX or ∞ when there is no debt."},"projectedEarnings":{"type":"object","properties":{"daily":{"type":"string"},"weekly":{"type":"string"},"monthly":{"type":"string"},"yearly":{"type":"string"}},"required":["daily","weekly","monthly","yearly"]}},"required":["netAPY","netDailyInterestUSD","weightedSupplyAPY","weightedBorrowAPY","healthFactor","projectedEarnings"]}},"required":["chain_id","wallet","target_health_factor","position","calculations"]}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/BadGateway"}},"x-mint":{"href":"/api-reference/kamino/bundle","metadata":{"sidebarTitle":"Get Kamino Bundle"}}}},"/v1/lending/kamino/position/{obligation_address}/events":{"get":{"tags":["Kamino"],"operationId":"get_v1_lending_kamino_position_obligation_address_events","summary":"Get Obligation Events","description":"Raw obligation history from Kamino's analytics: blockTimestamp, market and obligation addresses, and a nested snapshot (collateral, debt, net worth, health factor). Not a transaction list, and not the mapped snapshots body. Requires market_address from the list or bundle endpoint.\n\n**Credits:** 1 per successful call.","parameters":[{"name":"obligation_address","in":"path","required":true,"schema":{"type":"string","description":"Obligation address.","x-default":"HwxMtLM5cezFSQLe7h9Y3REUhVCZkgvHkCdXTBLxPqmZ"}},{"name":"wallet","in":"query","required":true,"schema":{"type":"string","description":"Solana wallet.","x-default":"7FvUzcCoB4Eeykow6PdR3dZLL8WHvqkNr8bKgUKzaiM8"}},{"name":"market_address","in":"query","required":true,"schema":{"type":"string","description":"Kamino market address.","x-default":"C7h9YnjPrDvNhe2cWWDhCu4CZEB1XTTH4RzjmsHuengV"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","description":"Page. Default: 1.","default":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Maximum 25. Default: 10.","default":10,"maximum":25}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"blockTimestamp":{"type":"number"},"marketAddress":{"type":"string"},"obligationAddress":{"type":"string"},"snapshot":{"type":"object","properties":{"totalCollateralUSD":{"type":"string"},"totalDebtUSD":{"type":"string"},"netWorthUSD":{"type":"string"},"healthFactor":{"type":"string","description":"String. Aave divides liquidation-threshold-weighted collateral by debt. Morpho divides collateral × oracle price × LLTV by debt, to four decimals. Kamino divides liquidation LTV by LTV. MAX or ∞ when there is no debt."}},"required":["totalCollateralUSD","totalDebtUSD","netWorthUSD","healthFactor"]}},"required":["blockTimestamp","marketAddress","obligationAddress","snapshot"]}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/BadGateway"}},"x-mint":{"href":"/api-reference/kamino/events","metadata":{"sidebarTitle":"Get Obligation Events"}}}},"/v1/lending/kamino/position":{"get":{"tags":["Kamino"],"operationId":"get_v1_lending_kamino_position","summary":"List Kamino Positions","description":"All active Kamino obligations for a wallet. Market name, market address, and obligation address are on position, with collateral and debt. Same item shape as the bundle, including calculations. Use it to discover obligation addresses before calling risk, yield, or events.\n\n**Credits:** 3 per matching obligation, before pagination.","parameters":[{"name":"wallet","in":"query","required":true,"schema":{"type":"string","description":"Solana wallet.","x-default":"7FvUzcCoB4Eeykow6PdR3dZLL8WHvqkNr8bKgUKzaiM8"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","description":"Page. Default: 1.","default":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Maximum 25. Default: 10.","default":10,"maximum":25}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"chain_id":{"type":"integer"},"wallet":{"type":"string"},"target_health_factor":{"type":"string","description":"Health factor used for safe-borrow and safe-withdraw figures. Default 1.5."},"position":{"type":"object","properties":{"marketAddress":{"type":"string"},"marketName":{"type":"string"},"obligationAddress":{"type":"string"},"healthFactor":{"type":"string","description":"String. Aave divides liquidation-threshold-weighted collateral by debt. Morpho divides collateral × oracle price × LLTV by debt, to four decimals. Kamino divides liquidation LTV by LTV. MAX or ∞ when there is no debt."},"totalCollateralUSD":{"type":"string"},"totalDebtUSD":{"type":"string"},"availableBorrowsUSD":{"type":"string"},"currentLiquidationThreshold":{"type":"string"},"ltv":{"type":"string"},"netWorthUSD":{"type":"string"},"suppliedAssets":{"type":"array","items":{"type":"object","properties":{"tokenAddress":{"type":"string"},"symbol":{"type":"string"},"name":{"type":"string"},"decimals":{"type":"integer"},"logoURI":{"type":"string","nullable":true,"description":"Token logo URL, or null when none is available."},"amountSupplied":{"type":"string"},"currentPriceUSD":{"type":"string"},"amountSuppliedUSD":{"type":"string"},"supplyAPY":{"type":"string"},"ltv":{"type":"string"},"liquidationThreshold":{"type":"string"}},"required":["tokenAddress","symbol","name","decimals","logoURI","amountSupplied","currentPriceUSD","amountSuppliedUSD","supplyAPY","ltv","liquidationThreshold"]}},"borrowedAssets":{"type":"array","items":{"type":"object","properties":{"tokenAddress":{"type":"string"},"symbol":{"type":"string"},"name":{"type":"string"},"decimals":{"type":"integer"},"logoURI":{"type":"string","nullable":true,"description":"Token logo URL, or null when none is available."},"amountBorrowed":{"type":"string"},"currentPriceUSD":{"type":"string"},"amountBorrowedUSD":{"type":"string"},"borrowAPY":{"type":"string"}},"required":["tokenAddress","symbol","name","decimals","logoURI","amountBorrowed","currentPriceUSD","amountBorrowedUSD","borrowAPY"]}},"riskMetrics":{"type":"object","properties":{"maxBorrowCapacityUSD":{"type":"string"},"borrowUtilization":{"type":"string"},"liquidationThreshold":{"type":"string"},"currentLtv":{"type":"string"}},"required":["maxBorrowCapacityUSD","borrowUtilization","liquidationThreshold","currentLtv"]}},"required":["marketAddress","marketName","obligationAddress","healthFactor","totalCollateralUSD","totalDebtUSD","availableBorrowsUSD","currentLiquidationThreshold","ltv","netWorthUSD","suppliedAssets","borrowedAssets","riskMetrics"]},"calculations":{"type":"object","properties":{"totalSuppliedUSD":{"type":"string"},"totalBorrowedUSD":{"type":"string"},"netPositionUSD":{"type":"string"},"healthFactor":{"type":"string","description":"String. Aave divides liquidation-threshold-weighted collateral by debt. Morpho divides collateral × oracle price × LLTV by debt, to four decimals. Kamino divides liquidation LTV by LTV. MAX or ∞ when there is no debt."},"dailySupplyInterestUSD":{"type":"string"},"dailyBorrowInterestUSD":{"type":"string"},"netDailyInterestUSD":{"type":"string"},"safeBorrowAmountUSD":{"type":"string"},"safeWithdrawAmountUSD":{"type":"string"},"availableBorrowsUSD":{"type":"string"},"currentLtvPercentage":{"type":"string"},"netAPY":{"type":"string"},"positionLeverage":{"type":"string"},"weightedSupplyAPY":{"type":"string"},"weightedBorrowAPY":{"type":"string"},"projectedEarnings":{"type":"object","properties":{"daily":{"type":"string"},"weekly":{"type":"string"},"monthly":{"type":"string"},"yearly":{"type":"string"}},"required":["daily","weekly","monthly","yearly"]},"riskMetrics":{"type":"object","properties":{"maxBorrowCapacityUSD":{"type":"string"},"borrowUtilization":{"type":"string"},"liquidationThreshold":{"type":"string"}},"required":["maxBorrowCapacityUSD","borrowUtilization","liquidationThreshold"]}},"required":["totalSuppliedUSD","totalBorrowedUSD","netPositionUSD","healthFactor","dailySupplyInterestUSD","dailyBorrowInterestUSD","netDailyInterestUSD","safeBorrowAmountUSD","safeWithdrawAmountUSD","availableBorrowsUSD","currentLtvPercentage","netAPY","positionLeverage","weightedSupplyAPY","weightedBorrowAPY","projectedEarnings","riskMetrics"]}},"required":["chain_id","wallet","target_health_factor","position","calculations"]}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/BadGateway"}},"x-mint":{"href":"/api-reference/kamino/position","metadata":{"sidebarTitle":"List Kamino Positions"}}}},"/v1/lending/kamino/position/{obligation_address}/risk":{"get":{"tags":["Kamino"],"operationId":"get_v1_lending_kamino_position_obligation_address_risk","summary":"Get Obligation Risk","description":"Health factor, LTV, and safe borrow/withdraw amounts for a single Kamino obligation. Requires market_address.\n\n**Credits:** 8 per successful call.","parameters":[{"name":"obligation_address","in":"path","required":true,"schema":{"type":"string","description":"Obligation address.","x-default":"HwxMtLM5cezFSQLe7h9Y3REUhVCZkgvHkCdXTBLxPqmZ"}},{"name":"wallet","in":"query","required":true,"schema":{"type":"string","description":"Solana wallet.","x-default":"7FvUzcCoB4Eeykow6PdR3dZLL8WHvqkNr8bKgUKzaiM8"}},{"name":"market_address","in":"query","required":true,"schema":{"type":"string","description":"Kamino market address.","x-default":"C7h9YnjPrDvNhe2cWWDhCu4CZEB1XTTH4RzjmsHuengV"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"object","properties":{"chain_id":{"type":"integer"},"wallet":{"type":"string"},"market_address":{"type":"string"},"obligation_address":{"type":"string"},"health_factor":{"type":"string","description":"String. Aave divides liquidation-threshold-weighted collateral by debt. Morpho divides collateral × oracle price × LLTV by debt, to four decimals. Kamino divides liquidation LTV by LTV. MAX or ∞ when there is no debt."},"target_health_factor":{"type":"string","description":"Health factor used for safe-borrow and safe-withdraw figures. Default 1.5."},"current_ltv_percentage":{"type":"string"},"safe_borrow_amount_usd":{"type":"string"},"safe_withdraw_amount_usd":{"type":"string"},"risk_metrics":{"type":"object","properties":{"maxBorrowCapacityUSD":{"type":"string"},"borrowUtilization":{"type":"string"},"liquidationThreshold":{"type":"string"},"currentLtv":{"type":"string"}},"required":["maxBorrowCapacityUSD","borrowUtilization","liquidationThreshold","currentLtv"]}},"required":["chain_id","wallet","market_address","obligation_address","health_factor","target_health_factor","current_ltv_percentage","safe_borrow_amount_usd","safe_withdraw_amount_usd","risk_metrics"]}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/BadGateway"}},"x-mint":{"href":"/api-reference/kamino/risk","metadata":{"sidebarTitle":"Get Obligation Risk"}}}},"/v1/lending/kamino/position/{obligation_address}/snapshots":{"get":{"tags":["Kamino"],"operationId":"get_v1_lending_kamino_position_obligation_address_snapshots","summary":"Get Obligation Historical Performance","description":"Historical performance for one Kamino obligation: collateral, debt, net worth, and health factor over time, mapped from the same Kamino history GET .../events returns raw. Requires market_address.\n\n**Credits:** 1 per successful call.","parameters":[{"name":"obligation_address","in":"path","required":true,"schema":{"type":"string","description":"Obligation address.","x-default":"HwxMtLM5cezFSQLe7h9Y3REUhVCZkgvHkCdXTBLxPqmZ"}},{"name":"wallet","in":"query","required":true,"schema":{"type":"string","description":"Solana wallet.","x-default":"7FvUzcCoB4Eeykow6PdR3dZLL8WHvqkNr8bKgUKzaiM8"}},{"name":"market_address","in":"query","required":true,"schema":{"type":"string","description":"Kamino market address.","x-default":"C7h9YnjPrDvNhe2cWWDhCu4CZEB1XTTH4RzjmsHuengV"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","description":"Page. Default: 1.","default":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Maximum 25. Default: 10.","default":10,"maximum":25}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"number","description":"Unix seconds."},"collateral_usd":{"type":"string"},"debt_usd":{"type":"string"},"net_worth_usd":{"type":"string"},"health_factor":{"type":"string","description":"String. Aave divides liquidation-threshold-weighted collateral by debt. Morpho divides collateral × oracle price × LLTV by debt, to four decimals. Kamino divides liquidation LTV by LTV. MAX or ∞ when there is no debt."}},"required":["timestamp","collateral_usd","debt_usd","net_worth_usd","health_factor"]}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/BadGateway"}},"x-mint":{"href":"/api-reference/kamino/snapshots","metadata":{"sidebarTitle":"Get Obligation Historical Performance"}}}},"/v1/lending/kamino/summary":{"get":{"tags":["Kamino"],"operationId":"get_v1_lending_kamino_summary","summary":"Get Kamino Summary","description":"Wallet-level obligation count and at-risk flag (health factor below 1.5). Cheapest Kamino call — use this to poll whether a wallet needs attention before fetching full detail.\n\n**Credits:** 1 per successful call.","parameters":[{"name":"wallet","in":"query","required":true,"schema":{"type":"string","description":"Solana wallet.","x-default":"7FvUzcCoB4Eeykow6PdR3dZLL8WHvqkNr8bKgUKzaiM8"}},{"name":"chain_id","in":"query","required":false,"schema":{"type":"integer","description":"Chain ID."}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"object","properties":{"chain_id":{"type":"integer"},"total":{"type":"number"},"total_at_risk":{"type":"integer","description":"Count of chains or obligations currently at risk."},"at_risk":{"type":"boolean","description":"True when health factor is a finite number below 1.5. MAX and ∞ are not at risk."}},"required":["chain_id","total","total_at_risk","at_risk"]}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/BadGateway"}},"x-mint":{"href":"/api-reference/kamino/summary","metadata":{"sidebarTitle":"Get Kamino Summary"}}}},"/v1/lending/kamino/position/{obligation_address}/yield":{"get":{"tags":["Kamino"],"operationId":"get_v1_lending_kamino_position_obligation_address_yield","summary":"Get Obligation Yield","description":"Daily/weekly/monthly/yearly interest earned vs. paid, net APY, leverage, and weighted supply/borrow APY for a single Kamino obligation.\n\n**Credits:** 8 per successful call.","parameters":[{"name":"obligation_address","in":"path","required":true,"schema":{"type":"string","description":"Obligation address.","x-default":"HwxMtLM5cezFSQLe7h9Y3REUhVCZkgvHkCdXTBLxPqmZ"}},{"name":"wallet","in":"query","required":true,"schema":{"type":"string","description":"Solana wallet.","x-default":"7FvUzcCoB4Eeykow6PdR3dZLL8WHvqkNr8bKgUKzaiM8"}},{"name":"market_address","in":"query","required":true,"schema":{"type":"string","description":"Kamino market address.","x-default":"C7h9YnjPrDvNhe2cWWDhCu4CZEB1XTTH4RzjmsHuengV"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"object","properties":{"chain_id":{"type":"integer"},"wallet":{"type":"string"},"market_address":{"type":"string"},"obligation_address":{"type":"string"},"daily_supply_interest_usd":{"type":"string"},"daily_borrow_interest_usd":{"type":"string"},"net_daily_interest_usd":{"type":"string"},"net_apy":{"type":"string"},"position_leverage":{"type":"string"},"weighted_supply_apy":{"type":"string"},"weighted_borrow_apy":{"type":"string"},"projected_earnings":{"type":"object","properties":{"daily":{"type":"string"},"weekly":{"type":"string"},"monthly":{"type":"string"},"yearly":{"type":"string"}},"required":["daily","weekly","monthly","yearly"]}},"required":["chain_id","wallet","market_address","obligation_address","daily_supply_interest_usd","daily_borrow_interest_usd","net_daily_interest_usd","net_apy","position_leverage","weighted_supply_apy","weighted_borrow_apy","projected_earnings"]}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/BadGateway"}},"x-mint":{"href":"/api-reference/kamino/yield","metadata":{"sidebarTitle":"Get Obligation Yield"}}}},"/v1/lending/morpho/batch":{"post":{"tags":["Morpho"],"operationId":"post_v1_lending_morpho_batch","summary":"Batch Get Morpho Positions","description":"Same as the list endpoint, but accepts multiple wallets in one POST (max 10). Returns one entry per wallet/chain pair. Optional `market_id` and `target_health_factor` in the body.\n\n**Credits:** 15 per matching wallet/chain result when fewer than 100 match; 12 per result at 100 or more. Billing uses the matching count before pagination.","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","description":"Page. Default: 1.","default":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Maximum 25. Default: 10.","default":10,"maximum":25}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"chain_id":{"type":"integer"},"wallet":{"type":"string"},"positions":{"type":"array","items":{"type":"object","properties":{"marketId":{"type":"string"},"healthFactor":{"type":"string","description":"String. Aave divides liquidation-threshold-weighted collateral by debt. Morpho divides collateral × oracle price × LLTV by debt, to four decimals. Kamino divides liquidation LTV by LTV. MAX or ∞ when there is no debt."},"netValueUSD":{"type":"string"}},"required":["marketId","healthFactor","netValueUSD"]}},"calculations":{"type":"array","items":{"type":"object","properties":{"healthFactor":{"type":"string","description":"String. Aave divides liquidation-threshold-weighted collateral by debt. Morpho divides collateral × oracle price × LLTV by debt, to four decimals. Kamino divides liquidation LTV by LTV. MAX or ∞ when there is no debt."},"netAPY":{"type":"string"}},"required":["healthFactor","netAPY"]}}},"required":["chain_id","wallet","positions","calculations"]}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/morpho/batch","metadata":{"sidebarTitle":"Batch Get Morpho Positions"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"wallets":{"type":"array","description":"Wallet addresses (comma-separated in the explorer; JSON array in the request body).","items":{"type":"string"},"x-default":["0xbf7620d0377b0660a6cbaef5cdfe2e00eddc1495"]},"chain_id":{"type":"integer","description":"Chain ID."},"market_id":{"type":"string","description":"Isolated Morpho market id."},"target_health_factor":{"type":"number","description":"Target health factor. Default: 1.5.","default":1.5}},"required":["wallets"]}}}}}},"/v1/lending/morpho":{"get":{"tags":["Morpho"],"operationId":"get_v1_lending_morpho","summary":"List Morpho Positions","description":"Live Morpho Blue positions for a wallet from the lending indexer, one bundle per chain, with calculations. Each position is an isolated market. Optional `market_id` and `target_health_factor` (default 1.5).\n\n**Credits:** 15 per matching wallet/chain result, before pagination.","parameters":[{"name":"wallet","in":"query","required":true,"schema":{"type":"string","description":"Wallet address.","x-default":"0xbf7620d0377b0660a6cbaef5cdfe2e00eddc1495"}},{"name":"market_id","in":"query","required":false,"schema":{"type":"string","description":"Isolated Morpho market id."}},{"name":"target_health_factor","in":"query","required":false,"schema":{"type":"number","description":"Target health factor. Default: 1.5.","default":1.5}},{"name":"chain_id","in":"query","required":false,"schema":{"type":"integer","description":"Chain ID."}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","description":"Page. Default: 1.","default":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Maximum 25. Default: 10.","default":10,"maximum":25}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"chain_id":{"type":"integer"},"wallet":{"type":"string"},"positions":{"type":"array","items":{"type":"object","properties":{"marketId":{"type":"string"},"healthFactor":{"type":"string","description":"String. Aave divides liquidation-threshold-weighted collateral by debt. Morpho divides collateral × oracle price × LLTV by debt, to four decimals. Kamino divides liquidation LTV by LTV. MAX or ∞ when there is no debt."},"collateralUSD":{"type":"string"},"borrowUSD":{"type":"string"},"supplyUSD":{"type":"string"},"netValueUSD":{"type":"string"}},"required":["marketId","healthFactor","collateralUSD","borrowUSD","supplyUSD","netValueUSD"]}},"calculations":{"type":"array","items":{"type":"object","properties":{"healthFactor":{"type":"string","description":"String. Aave divides liquidation-threshold-weighted collateral by debt. Morpho divides collateral × oracle price × LLTV by debt, to four decimals. Kamino divides liquidation LTV by LTV. MAX or ∞ when there is no debt."},"netAPY":{"type":"string"},"dailyInterestUSD":{"type":"string"},"dailySupplyInterestUSD":{"type":"string"},"dailyBorrowInterestUSD":{"type":"string"},"currentLtvPercentage":{"type":"string"},"liquidationThreshold":{"type":"string"},"safeBorrowAmountUSD":{"type":"string"},"safeWithdrawAmountUSD":{"type":"string"},"maxBorrowCapacityUSD":{"type":"string"},"borrowUtilizationRate":{"type":"string"},"availableBorrowsUSD":{"type":"string"},"weightedSupplyAPY":{"type":"string"},"weightedBorrowAPY":{"type":"string"},"positionLeverage":{"type":"string"},"projectedEarnings":{"type":"object","properties":{"daily":{"type":"string"},"weekly":{"type":"string"},"monthly":{"type":"string"},"yearly":{"type":"string"}},"required":["daily","weekly","monthly","yearly"]}},"required":["healthFactor","netAPY","dailyInterestUSD","dailySupplyInterestUSD","dailyBorrowInterestUSD","currentLtvPercentage","liquidationThreshold","safeBorrowAmountUSD","safeWithdrawAmountUSD","maxBorrowCapacityUSD","borrowUtilizationRate","availableBorrowsUSD","weightedSupplyAPY","weightedBorrowAPY","positionLeverage","projectedEarnings"]}}},"required":["chain_id","wallet","positions","calculations"]}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/morpho/bundle","metadata":{"sidebarTitle":"List Morpho Positions"}}}},"/v1/lending/morpho/position/{chain_id}/events":{"get":{"tags":["Morpho"],"operationId":"get_v1_lending_morpho_position_chain_id_events","summary":"Get Position Events","description":"Position history: supply, borrow, withdraw, repay, and liquidation for one chain. Each event has type, amount, amountUSD, priceUSD, asset details, and transactionHash. market_id is optional; each event names its market. Newest first.\n\n**Credits:** 1 per successful call.","parameters":[{"name":"chain_id","in":"path","required":true,"schema":{"type":"integer","description":"Chain ID.","x-default":1}},{"name":"wallet","in":"query","required":true,"schema":{"type":"string","description":"Wallet address.","x-default":"0xbf7620d0377b0660a6cbaef5cdfe2e00eddc1495"}},{"name":"market_id","in":"query","required":false,"schema":{"type":"string","description":"Isolated Morpho market id."}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","description":"Page. Default: 1.","default":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Maximum 25. Default: 10.","default":10,"maximum":25}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"marketId":{"type":"string"},"blockNumber":{"type":"integer"},"logIndex":{"type":"number"},"timestamp":{"type":"number","description":"Unix seconds."},"transactionHash":{"type":"string"},"asset":{"type":"object","properties":{"address":{"type":"string"},"symbol":{"type":"string"},"name":{"type":"string"},"decimals":{"type":"integer"},"logoURI":{"type":"string","description":"Token logo URL, or null when none is available."}},"required":["address","symbol","name","decimals","logoURI"]},"amount":{"type":"string"},"amountUSD":{"type":"string"},"priceUSD":{"type":"string"},"shares":{"type":"string"},"counterparty":{"type":"string"},"isCollateral":{"type":"boolean"}},"required":["type","marketId","blockNumber","logIndex","timestamp","transactionHash","asset","amount","amountUSD","priceUSD","shares","counterparty","isCollateral"]}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/morpho/events","metadata":{"sidebarTitle":"Get Position Events"}}}},"/v1/lending/morpho/position":{"get":{"tags":["Morpho"],"operationId":"get_v1_lending_morpho_position","summary":"Get Morpho Position (all chains)","description":"Live Morpho Blue positions from the lending indexer, one bundle per chain, without calculation fields. Each entry inside the bundle is an isolated market. Optional `market_id` (0x + 64 hex) to filter one market.\n\n**Credits:** 3 per matching wallet/chain result, before pagination.","parameters":[{"name":"wallet","in":"query","required":true,"schema":{"type":"string","description":"Wallet address.","x-default":"0xbf7620d0377b0660a6cbaef5cdfe2e00eddc1495"}},{"name":"market_id","in":"query","required":false,"schema":{"type":"string","description":"Isolated Morpho market id."}},{"name":"chain_id","in":"query","required":false,"schema":{"type":"integer","description":"Chain ID."}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","description":"Page. Default: 1.","default":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Maximum 25. Default: 10.","default":10,"maximum":25}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"chain_id":{"type":"integer"},"wallet":{"type":"string"},"positions":{"type":"array","items":{"type":"object","properties":{"marketId":{"type":"string"},"healthFactor":{"type":"string","description":"String. Aave divides liquidation-threshold-weighted collateral by debt. Morpho divides collateral × oracle price × LLTV by debt, to four decimals. Kamino divides liquidation LTV by LTV. MAX or ∞ when there is no debt."},"supplyUSD":{"type":"string"},"borrowUSD":{"type":"string"},"collateralUSD":{"type":"string"},"netValueUSD":{"type":"string"},"currentLtv":{"type":"string"},"liquidationThreshold":{"type":"string"},"availableBorrowsUSD":{"type":"string"},"suppliedAssets":{"type":"array","items":{"type":"object"}},"borrowedAssets":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string"},"amountBorrowedUSD":{"type":"string"},"borrowAPY":{"type":"string"}},"required":["symbol","amountBorrowedUSD","borrowAPY"]}},"collateralAssets":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string"},"amountDepositedUSD":{"type":"string"}},"required":["symbol","amountDepositedUSD"]}},"riskMetrics":{"type":"object","properties":{"maxBorrowCapacityUSD":{"type":"string"},"borrowUtilization":{"type":"string"}},"required":["maxBorrowCapacityUSD","borrowUtilization"]}},"required":["marketId","healthFactor","supplyUSD","borrowUSD","collateralUSD","netValueUSD","currentLtv","liquidationThreshold","availableBorrowsUSD","suppliedAssets","borrowedAssets","collateralAssets","riskMetrics"]}}},"required":["chain_id","wallet","positions"]}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/morpho/position","metadata":{"sidebarTitle":"Get Morpho Position (all chains)"}}}},"/v1/lending/morpho/position/{chain_id}/risk":{"get":{"tags":["Morpho"],"operationId":"get_v1_lending_morpho_position_chain_id_risk","summary":"Get Position Risk","description":"Health factor, LTV, and safe borrow/withdraw amounts for one isolated Morpho market. `market_id` (bytes32) is required. Optional `target_health_factor` (default 1.5).\n\n**Credits:** 8 per successful call.","parameters":[{"name":"chain_id","in":"path","required":true,"schema":{"type":"integer","description":"Chain ID.","x-default":1}},{"name":"wallet","in":"query","required":true,"schema":{"type":"string","description":"Wallet address.","x-default":"0xbf7620d0377b0660a6cbaef5cdfe2e00eddc1495"}},{"name":"market_id","in":"query","required":true,"schema":{"type":"string","description":"Isolated Morpho market id.","x-default":"0xabababababababababababababababababababababababababababababababab"}},{"name":"target_health_factor","in":"query","required":false,"schema":{"type":"number","description":"Target health factor. Default: 1.5.","default":1.5}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"object","properties":{"chain_id":{"type":"integer"},"wallet":{"type":"string"},"market_id":{"type":"string"},"health_factor":{"type":"string","description":"String. Aave divides liquidation-threshold-weighted collateral by debt. Morpho divides collateral × oracle price × LLTV by debt, to four decimals. Kamino divides liquidation LTV by LTV. MAX or ∞ when there is no debt."},"current_ltv_percentage":{"type":"string"},"liquidation_threshold":{"type":"string"},"safe_borrow_amount_usd":{"type":"string"},"safe_withdraw_amount_usd":{"type":"string"},"max_borrow_capacity_usd":{"type":"string"},"borrow_utilization_rate":{"type":"string"},"available_borrows_usd":{"type":"string"}},"required":["chain_id","wallet","market_id","health_factor","current_ltv_percentage","liquidation_threshold","safe_borrow_amount_usd","safe_withdraw_amount_usd","max_borrow_capacity_usd","borrow_utilization_rate","available_borrows_usd"]}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/morpho/risk","metadata":{"sidebarTitle":"Get Position Risk"}}}},"/v1/lending/morpho/position/{chain_id}/snapshots":{"get":{"tags":["Morpho"],"operationId":"get_v1_lending_morpho_position_chain_id_snapshots","summary":"Get Position Historical Performance","description":"Historical performance: daily Morpho Blue position snapshots for the history chart. `max_snapshots` is a day count; omit it for the full indexed series. Optional `market_id` to scope one isolated market.\n\n**Credits:** 2 per successful call.","parameters":[{"name":"chain_id","in":"path","required":true,"schema":{"type":"integer","description":"Chain ID.","x-default":1}},{"name":"wallet","in":"query","required":true,"schema":{"type":"string","description":"Wallet address.","x-default":"0xbf7620d0377b0660a6cbaef5cdfe2e00eddc1495"}},{"name":"market_id","in":"query","required":false,"schema":{"type":"string","description":"Isolated Morpho market id."}},{"name":"max_snapshots","in":"query","required":false,"schema":{"type":"integer","description":"Max snapshots (days)."}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"number","description":"Unix seconds."},"market_id":{"type":"string"},"supply_usd":{"type":"string"},"borrow_usd":{"type":"string"},"collateral_usd":{"type":"string"},"net_worth_usd":{"type":"string"},"health_factor":{"type":"string","description":"String. Aave divides liquidation-threshold-weighted collateral by debt. Morpho divides collateral × oracle price × LLTV by debt, to four decimals. Kamino divides liquidation LTV by LTV. MAX or ∞ when there is no debt."}},"required":["timestamp","market_id","supply_usd","borrow_usd","collateral_usd","net_worth_usd","health_factor"]}}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/morpho/snapshots","metadata":{"sidebarTitle":"Get Position Historical Performance"}}}},"/v1/lending/morpho/summary":{"get":{"tags":["Morpho"],"operationId":"get_v1_lending_morpho_summary","summary":"Get Morpho Summary","description":"Lightweight per-chain \"is this wallet at risk anywhere\" check from the lending indexer — no position detail, just chain IDs and an `at_risk` flag (health factor below 1.5 on any isolated market). Optional `market_id` (bytes32) to scope one market.\n\n**Credits:** 1 per successful call.","parameters":[{"name":"wallet","in":"query","required":true,"schema":{"type":"string","description":"Wallet address.","x-default":"0xbf7620d0377b0660a6cbaef5cdfe2e00eddc1495"}},{"name":"chain_id","in":"query","required":false,"schema":{"type":"integer","description":"Chain ID."}},{"name":"market_id","in":"query","required":false,"schema":{"type":"string","description":"Isolated Morpho market id."}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"object","properties":{"chains":{"type":"array","items":{"type":"object","properties":{"chain_id":{"type":"integer"},"at_risk":{"type":"boolean","description":"True when health factor is a finite number below 1.5. MAX and ∞ are not at risk."}},"required":["chain_id","at_risk"]}},"total":{"type":"number"},"total_at_risk":{"type":"integer","description":"Count of chains or obligations currently at risk."}},"required":["chains","total","total_at_risk"]}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/morpho/summary","metadata":{"sidebarTitle":"Get Morpho Summary"}}}},"/v1/lending/morpho/position/{chain_id}/yield":{"get":{"tags":["Morpho"],"operationId":"get_v1_lending_morpho_position_chain_id_yield","summary":"Get Position Yield","description":"Daily interest earned vs. paid, net APY, and projections for one isolated Morpho market. `market_id` (bytes32) is required. Optional `target_health_factor` (default 1.5).\n\n**Credits:** 8 per successful call.","parameters":[{"name":"chain_id","in":"path","required":true,"schema":{"type":"integer","description":"Chain ID.","x-default":1}},{"name":"wallet","in":"query","required":true,"schema":{"type":"string","description":"Wallet address.","x-default":"0xbf7620d0377b0660a6cbaef5cdfe2e00eddc1495"}},{"name":"market_id","in":"query","required":true,"schema":{"type":"string","description":"Isolated Morpho market id.","x-default":"0xabababababababababababababababababababababababababababababababab"}},{"name":"target_health_factor","in":"query","required":false,"schema":{"type":"number","description":"Target health factor. Default: 1.5.","default":1.5}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"object","properties":{"chain_id":{"type":"integer"},"wallet":{"type":"string"},"market_id":{"type":"string"},"daily_supply_interest_usd":{"type":"string"},"daily_borrow_interest_usd":{"type":"string"},"net_daily_interest_usd":{"type":"string"},"net_apy":{"type":"string"},"position_leverage":{"type":"string"},"weighted_supply_apy":{"type":"string"},"weighted_borrow_apy":{"type":"string"},"projected_earnings":{"type":"object","properties":{"daily":{"type":"string"},"weekly":{"type":"string"},"monthly":{"type":"string"},"yearly":{"type":"string"}},"required":["daily","weekly","monthly","yearly"]}},"required":["chain_id","wallet","market_id","daily_supply_interest_usd","daily_borrow_interest_usd","net_daily_interest_usd","net_apy","position_leverage","weighted_supply_apy","weighted_borrow_apy","projected_earnings"]}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/morpho/yield","metadata":{"sidebarTitle":"Get Position Yield"}}}},"/v1/positions/orca/batch":{"post":{"tags":["Orca"],"operationId":"post_v1_positions_orca_batch","summary":"Batch Get Orca Positions","description":"Same as the list endpoint, multiple Solana wallets in one POST. Returns the same shape as `?full=true` on the list endpoint — for scanning many addresses at once.\n\n**Credits:** 12 per position returned on this page.","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","description":"Page. Default: 1.","default":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Maximum 25. Default: 10.","default":10,"maximum":25}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"position_id":{"type":"string"},"chain_id":{"type":"integer"},"wallet":{"type":"string"},"is_active":{"type":"boolean"},"sub_protocol":{"type":"string"},"position":{"type":"object","properties":{"positionData":{"type":"object","properties":{"id":{"type":"string"},"owner":{"type":"string"},"tickLower":{"type":"string"},"tickUpper":{"type":"string"}},"required":["id","owner","tickLower","tickUpper"]},"calculations":{"type":"object","properties":{"inRange":{"type":"boolean","description":"True when the pool price is inside the position tick range."},"positionUsdValue":{"type":"string","description":"USD string. Token principal plus unclaimed fees and rewards."},"isClosed":{"type":"boolean","description":"True when the position liquidity is zero."}},"required":["inRange","positionUsdValue","isClosed"]}},"required":["positionData","calculations"]}},"required":["position_id","chain_id","wallet","is_active","sub_protocol","position"]}},"pagination":{"$ref":"#/components/schemas/Pagination"},"counts":{"type":"object","properties":{"totalActive":{"type":"number"},"totalInactive":{"type":"number"},"total":{"type":"number"},"filtered":{"type":"number"},"errors":{"type":"number"}},"required":["totalActive","totalInactive","total","filtered","errors"]}},"required":["data","pagination","counts"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/orca/batch","metadata":{"sidebarTitle":"Batch Get Orca Positions"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"wallets":{"type":"array","description":"Solana wallets (JSON array in the request body).","items":{"type":"string"},"x-default":["CqB5nxVwQkjjaq3qpzBcJRwych1sZJDeT37BgDSXwpyp"]},"chain_id":{"type":"integer","description":"Chain ID."}},"required":["wallets"]}}}}}},"/v1/positions/orca/{id}":{"get":{"tags":["Orca"],"operationId":"get_v1_positions_orca_id","summary":"Get Orca Position","description":"Raw on-chain state for a single whirlpool position: ticks, pool, liquidity. Pass `wallet` to tag `sub_protocol` as `defi_tuna` and set the owner when the position is DeFi Tuna. Omit `wallet` and a DeFi Tuna position is returned as `orca`. `tunaLendingInfo` is on the list with `full=true` and on batch, not on this route.\n\n**Credits:** 2 per successful call.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"Position address.","x-default":"FUvNMzGMEwFmy6QreoZG7TijmRrDNhKFXJDQYzHM2uEr"}},{"name":"wallet","in":"query","required":false,"schema":{"type":"string","description":"Solana wallet — needed for DeFiTuna."}},{"name":"chain_id","in":"query","required":false,"schema":{"type":"integer","description":"Chain ID."}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"object","properties":{"position_id":{"type":"string"},"chain_id":{"type":"integer"},"wallet":{"type":"string"},"is_active":{"type":"boolean"},"sub_protocol":{"type":"string"},"position_state":{"type":"object","properties":{"id":{"type":"string"},"liquidity":{"type":"string"},"tickLower":{"type":"string"},"tickUpper":{"type":"string"},"whirlpool":{"type":"string"},"positionMint":{"type":"string"}},"required":["id","liquidity","tickLower","tickUpper","whirlpool","positionMint"]}},"required":["position_id","chain_id","wallet","is_active","sub_protocol","position_state"]}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/BadGateway"}},"x-mint":{"href":"/api-reference/orca/get","metadata":{"sidebarTitle":"Get Orca Position"}}}},"/v1/positions/orca":{"get":{"tags":["Orca"],"operationId":"get_v1_positions_orca","summary":"List Orca Positions","description":"All active Orca whirlpool and DeFi Tuna LP positions for a Solana wallet. `sub_protocol` is `orca` or `defi_tuna`. `full=true` includes `tunaLendingInfo` on DeFi Tuna rows. Closed positions are visible with `status=inactive`.\n\n**Credits:** 2 per position returned on this page.\n\nThese queries have their own credit cost.\n\n| Query | Credits per returned position |\n| --- | --- |\n| `status=inactive` | 1 |\n| `full=true` | 15 |","parameters":[{"name":"wallet","in":"query","required":true,"schema":{"type":"string","description":"Solana wallet.","x-default":"CqB5nxVwQkjjaq3qpzBcJRwych1sZJDeT37BgDSXwpyp"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["inactive"],"description":"Omit for active positions. Set to `inactive` for closed positions. Default: active."}},{"name":"full","in":"query","required":false,"schema":{"type":"boolean","description":"Boolean. Include `full=true` for the detailed payload. Omit otherwise. On list endpoints this returns active positions only."}},{"name":"chain_id","in":"query","required":false,"schema":{"type":"integer","description":"Chain ID."}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","description":"Page. Default: 1.","default":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Maximum 25. Default: 10.","default":10,"maximum":25}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"position_id":{"type":"string"},"chain_id":{"type":"integer"},"wallet":{"type":"string"},"is_active":{"type":"boolean"},"sub_protocol":{"type":"string"},"position_state":{"type":"object","properties":{"id":{"type":"string"},"liquidity":{"type":"string"},"tickLower":{"type":"string"},"tickUpper":{"type":"string"},"whirlpool":{"type":"string"},"positionMint":{"type":"string"}},"required":["id","liquidity","tickLower","tickUpper","whirlpool","positionMint"]}},"required":["position_id","chain_id","wallet","is_active","sub_protocol","position_state"]}},"pagination":{"$ref":"#/components/schemas/Pagination"},"counts":{"type":"object","properties":{"totalActive":{"type":"number"},"totalInactive":{"type":"number"},"total":{"type":"number"},"filtered":{"type":"number"},"errors":{"type":"number"}},"required":["totalActive","totalInactive","total","filtered","errors"]}},"required":["data","pagination","counts"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/orca/list","metadata":{"sidebarTitle":"List Orca Positions"}}}},"/v1/positions/orca/summary":{"get":{"tags":["Orca"],"operationId":"get_v1_positions_orca_summary","summary":"Get Orca Summary","description":"Wallet-level counts only — active vs. inactive whirlpool and DeFiTuna LP positions on Solana.\n\n**Credits:** 1 per successful call.","parameters":[{"name":"wallet","in":"query","required":true,"schema":{"type":"string","description":"Solana wallet.","x-default":"CqB5nxVwQkjjaq3qpzBcJRwych1sZJDeT37BgDSXwpyp"}},{"name":"chain_id","in":"query","required":false,"schema":{"type":"integer","description":"Chain ID."}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"object","properties":{"total":{"type":"number"},"total_active":{"type":"number"},"total_inactive":{"type":"number"}},"required":["total","total_active","total_inactive"]}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/orca/summary","metadata":{"sidebarTitle":"Get Orca Summary"}}}},"/v1/portfolio/assets":{"get":{"tags":["Portfolio"],"operationId":"get_v1_portfolio_assets","summary":"Get Portfolio Assets","description":"Every token the wallet holds, per chain, with live USD pricing — the raw token list behind the balance total.\n\n**Credits:** 30 per successful call.","parameters":[{"name":"wallet","in":"query","required":true,"schema":{"type":"string","description":"Wallet address.","x-default":"0xbf7620d0377b0660a6cbaef5cdfe2e00eddc1495"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"object","properties":{"portfolio":{"type":"object","properties":{"totalValueUSD":{"type":"number"}},"required":["totalValueUSD"]},"tokenHoldings":{"type":"object","properties":{"totalValueUSD":{"type":"number"},"tokens":{"type":"array","items":{"type":"object","properties":{"address":{"type":"string"},"symbol":{"type":"string"},"name":{"type":"string"},"iconUrl":{"type":"string","nullable":true,"description":"Logo URL, or null when none is available."},"priceUSD":{"type":"number"},"balance":{"type":"number"},"balanceUSD":{"type":"number"},"portfolioPercent":{"type":"number"},"priceChange24hPercent":{"type":"number","nullable":true,"description":"Percent price change over 24 hours, or null when the source has none."},"decimals":{"type":"integer"},"network":{"$ref":"#/components/schemas/Network"}},"required":["address","symbol","name","iconUrl","priceUSD","balance","balanceUSD","portfolioPercent","priceChange24hPercent","decimals","network"]}}},"required":["totalValueUSD","tokens"]},"wallets":{"type":"array","items":{"type":"object","properties":{"address":{"type":"string"},"totalValueUSD":{"type":"number"}},"required":["address","totalValueUSD"]}},"dAppHoldings":{"type":"array","items":{"type":"object"}},"chainExposure":{"type":"array","items":{"type":"object","properties":{"network":{"$ref":"#/components/schemas/Network"},"valueUSD":{"type":"number"},"percent":{"type":"number"}},"required":["network","valueUSD","percent"]}},"allocationBreakdown":{"type":"object","properties":{"idle":{"type":"object","properties":{"stablecoins":{"type":"number"},"majors":{"type":"number"},"tokens":{"type":"number"},"total":{"type":"number"}},"required":["stablecoins","majors","tokens","total"]},"deployed":{"type":"object","properties":{"lending":{"type":"number"},"borrowing":{"type":"number"},"vaults":{"type":"number"},"staked":{"type":"number"},"total":{"type":"number"}},"required":["lending","borrowing","vaults","staked","total"]}},"required":["idle","deployed"]},"meta":{"type":"object","properties":{"lastUpdatedAt":{"type":"integer","description":"Unix milliseconds when the portfolio provider last updated this wallet."},"warnings":{"type":"array","items":{"type":"string"}}},"required":["lastUpdatedAt","warnings"]}},"required":["portfolio","tokenHoldings","wallets","dAppHoldings","chainExposure","allocationBreakdown","meta"]}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/BadGateway"}},"x-mint":{"href":"/api-reference/portfolio/assets","metadata":{"sidebarTitle":"Get Portfolio Assets"}}}},"/v1/portfolio/balance":{"get":{"tags":["Portfolio"],"operationId":"get_v1_portfolio_balance","summary":"Get Portfolio Balance","description":"Total USD value of a wallet, broken down by chain.\n\n**Credits:** 30 per successful call.","parameters":[{"name":"wallet","in":"query","required":true,"schema":{"type":"string","description":"Wallet address.","x-default":"0xbf7620d0377b0660a6cbaef5cdfe2e00eddc1495"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"object","properties":{"wallet":{"type":"string"},"total_usd_value":{"type":"number"},"chain_exposure":{"type":"array","items":{"type":"object","properties":{"network":{"$ref":"#/components/schemas/Network"},"valueUSD":{"type":"number"},"percent":{"type":"number"}},"required":["network","valueUSD","percent"]}}},"required":["wallet","total_usd_value","chain_exposure"]}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/BadGateway"}},"x-mint":{"href":"/api-reference/portfolio/balance","metadata":{"sidebarTitle":"Get Portfolio Balance"}}}},"/v1/snapshots/dates":{"get":{"tags":["Snapshots"],"operationId":"get_v1_snapshots_dates","summary":"List Snapshot Dates","description":"UTC days that have a stored portfolio snapshot for one EVM, Solana, or Bitcoin wallet, newest first.\n\n**Credits:** 1 per successful call.","parameters":[{"name":"wallet","in":"query","required":true,"schema":{"type":"string","description":"Wallet address.","x-default":"0xbf7620d0377b0660a6cbaef5cdfe2e00eddc1495"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","description":"Page. Default: 1.","default":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Maximum 366. Default: 100.","default":100,"maximum":366}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"dates":{"type":"array","items":{"type":"string"}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["dates","pagination"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/snapshots/dates","metadata":{"sidebarTitle":"List Snapshot Dates"}},"x-hidden":true}},"/v1/snapshots/wallet":{"get":{"tags":["Snapshots"],"operationId":"get_v1_snapshots_wallet","summary":"Get Wallet Snapshot","description":"Stored portfolio snapshot for one EVM, Solana, or Bitcoin wallet on a UTC day. data is null when that day has no row.\n\n**Credits:** 10 per successful call.","parameters":[{"name":"wallet","in":"query","required":true,"schema":{"type":"string","description":"Wallet address.","x-default":"0xbf7620d0377b0660a6cbaef5cdfe2e00eddc1495"}},{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"Format `YYYY-MM-DD`.","x-default":"2026-10-08"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"date":{"type":"string"},"data":{"type":"object","properties":{"portfolio":{"type":"object","properties":{"totalValueUSD":{"type":"number"}},"required":["totalValueUSD"]},"tokenHoldings":{"type":"object","properties":{"totalValueUSD":{"type":"number"},"tokens":{"type":"array","items":{"type":"object","properties":{"address":{"type":"string"},"symbol":{"type":"string"},"name":{"type":"string"},"iconUrl":{"type":"string","nullable":true,"description":"Logo URL, or null when none is available."},"priceUSD":{"type":"number"},"balance":{"type":"number"},"balanceUSD":{"type":"number"},"portfolioPercent":{"type":"number"},"priceChange24hPercent":{"type":"number","nullable":true,"description":"Percent price change over 24 hours, or null when the source has none."},"decimals":{"type":"integer"},"network":{"$ref":"#/components/schemas/Network"}},"required":["address","symbol","name","iconUrl","priceUSD","balance","balanceUSD","portfolioPercent","priceChange24hPercent","decimals","network"]}}},"required":["totalValueUSD","tokens"]},"wallets":{"type":"array","items":{"type":"object","properties":{"address":{"type":"string"},"totalValueUSD":{"type":"number"}},"required":["address","totalValueUSD"]}},"dAppHoldings":{"type":"array","items":{"type":"object"}},"chainExposure":{"type":"array","items":{"type":"object","properties":{"network":{"$ref":"#/components/schemas/Network"},"valueUSD":{"type":"number"},"percent":{"type":"number"}},"required":["network","valueUSD","percent"]}},"allocationBreakdown":{"type":"object","properties":{"idle":{"type":"object","properties":{"stablecoins":{"type":"number"},"majors":{"type":"number"},"tokens":{"type":"number"},"total":{"type":"number"}},"required":["stablecoins","majors","tokens","total"]},"deployed":{"type":"object","properties":{"lending":{"type":"number"},"borrowing":{"type":"number"},"vaults":{"type":"number"},"staked":{"type":"number"},"total":{"type":"number"}},"required":["lending","borrowing","vaults","staked","total"]}},"required":["idle","deployed"]},"meta":{"type":"object","properties":{"lastUpdatedAt":{"type":"integer","description":"Unix milliseconds when the portfolio provider last updated this wallet."},"warnings":{"type":"array","items":{"type":"string"}}},"required":["lastUpdatedAt","warnings"]}},"required":["portfolio","tokenHoldings","wallets","dAppHoldings","chainExposure","allocationBreakdown","meta"],"nullable":true,"description":"Stored portfolio assets for that UTC day, or null when the day has no row."}},"required":["date","data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/snapshots/wallet","metadata":{"sidebarTitle":"Get Wallet Snapshot"}},"x-hidden":true}},"/v1/positions/uniswapv3/batch":{"post":{"tags":["Uniswap V3"],"operationId":"post_v1_positions_uniswapv3_batch","summary":"Batch Get Uniswap V3 Positions","description":"Same as the list endpoint, multiple wallets in one POST. Returns the same shape as `?full=true` on the list endpoint, one array per wallet — for scanning many addresses at once.\n\n**Credits:** 12 per position returned on this page.","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","description":"Page. Default: 1.","default":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Maximum 25. Default: 10.","default":10,"maximum":25}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"token_id":{"type":"string"},"chain_id":{"type":"integer"},"wallet":{"type":"string"},"is_active":{"type":"boolean"},"position":{"type":"object","properties":{"positionData":{"type":"object","properties":{"id":{"type":"string"},"owner":{"type":"string"},"tickLower":{"type":"string"},"tickUpper":{"type":"string"},"token0":{"type":"object","properties":{"symbol":{"type":"string"}},"required":["symbol"]},"token1":{"type":"object","properties":{"symbol":{"type":"string"}},"required":["symbol"]},"pool":{"type":"object","properties":{"id":{"type":"string"},"feeTier":{"type":"string"}},"required":["id","feeTier"]},"chain":{"type":"object","properties":{"id":{"type":"number"}},"required":["id"]},"protocol":{"type":"object","properties":{"code":{"type":"string"}},"required":["code"]},"managerAddress":{"type":"string"}},"required":["id","owner","tickLower","tickUpper","token0","token1","pool","chain","protocol","managerAddress"]},"calculations":{"type":"object","properties":{"inRange":{"type":"boolean","description":"True when the pool price is inside the position tick range."},"positionUsdValue":{"type":"string","description":"USD string. Token principal plus unclaimed fees and rewards."},"isClosed":{"type":"boolean","description":"True when the position liquidity is zero."}},"required":["inRange","positionUsdValue","isClosed"]}},"required":["positionData","calculations"]}},"required":["token_id","chain_id","wallet","is_active","position"]}},"pagination":{"$ref":"#/components/schemas/Pagination"},"counts":{"type":"object","properties":{"totalActive":{"type":"number"},"totalInactive":{"type":"number"},"total":{"type":"number"},"filtered":{"type":"number"},"errors":{"type":"number"},"spams":{"type":"array","items":{"type":"object"}}},"required":["totalActive","totalInactive","total","filtered","errors","spams"]}},"required":["data","pagination","counts"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/uniswap-v3/batch","metadata":{"sidebarTitle":"Batch Get Uniswap V3 Positions"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"wallets":{"type":"array","description":"Wallet addresses (comma-separated in the explorer; JSON array in the request body).","items":{"type":"string"},"x-default":["0xbf7620d0377b0660a6cbaef5cdfe2e00eddc1495"]},"chain_id":{"type":"integer","description":"Chain ID."}},"required":["wallets"]}}}}}},"/v1/positions/uniswapv3/{id}/events":{"get":{"tags":["Uniswap V3"],"operationId":"get_v1_positions_uniswapv3_id_events","summary":"Get Position Events","description":"Position history for one LP position: deposits (IncreaseLiquidity), withdrawals (DecreaseLiquidity), fee collections, and compounds (Collect). Each event has token amounts, token prices at the transaction (token0PriceUSD, token1PriceUSD), timestamp, and transaction_hash. USD value is amount times that price; it is not a stored field. The first deposit is the mint. An empty compounds list is omitted.\n\n**Credits:** 1 per successful call.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"Token ID.","x-default":"119128"}},{"name":"chain_id","in":"query","required":true,"schema":{"type":"integer","description":"Chain ID.","x-default":130}},{"name":"manager_address","in":"query","required":false,"schema":{"type":"string","description":"Manager address."}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"object","properties":{"token_id":{"type":"string"},"chain_id":{"type":"integer"},"deposits":{"type":"array","items":{"type":"object","properties":{"amount0":{"type":"string","description":"Token amount as a decimal string."},"amount1":{"type":"string","description":"Token amount as a decimal string."},"token0PriceUSD":{"type":"string","description":"USD price of token0 at the transaction."},"token1PriceUSD":{"type":"string","description":"USD price of token1 at the transaction."},"timestamp":{"type":"number","description":"Unix seconds."},"block":{"type":"integer"},"transaction_hash":{"type":"string"}},"required":["amount0","amount1","token0PriceUSD","token1PriceUSD","timestamp","block","transaction_hash"]}},"withdrawals":{"type":"array","items":{"type":"object","properties":{"amount0":{"type":"string","description":"Token amount as a decimal string."},"amount1":{"type":"string","description":"Token amount as a decimal string."},"token0PriceUSD":{"type":"string","description":"USD price of token0 at the transaction."},"token1PriceUSD":{"type":"string","description":"USD price of token1 at the transaction."},"timestamp":{"type":"number","description":"Unix seconds."},"block":{"type":"integer"},"transaction_hash":{"type":"string"}},"required":["amount0","amount1","token0PriceUSD","token1PriceUSD","timestamp","block","transaction_hash"]}},"collections":{"type":"array","items":{"type":"object","properties":{"amount0":{"type":"string","description":"Token amount as a decimal string."},"amount1":{"type":"string","description":"Token amount as a decimal string."},"token0PriceUSD":{"type":"string","description":"USD price of token0 at the transaction."},"token1PriceUSD":{"type":"string","description":"USD price of token1 at the transaction."},"timestamp":{"type":"number","description":"Unix seconds."},"block":{"type":"integer"},"transaction_hash":{"type":"string"}},"required":["amount0","amount1","token0PriceUSD","token1PriceUSD","timestamp","block","transaction_hash"]}}},"required":["token_id","chain_id","deposits","withdrawals","collections"]}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/uniswap-v3/events","metadata":{"sidebarTitle":"Get Position Events"}}}},"/v1/positions/uniswapv3/{id}/full":{"get":{"tags":["Uniswap V3"],"operationId":"get_v1_positions_uniswapv3_id_full","summary":"Get Full Position Detail","description":"Everything: state, full event history, PnL, impermanent loss, fee accrual, and APR — the \"give me all of it\" endpoint. The heaviest-weight endpoint in the catalog — reach for `pnl`, `yield`, or `snapshot` if you don't need the whole payload.\n\n**Credits:** 15 per successful call.\n\nThese queries have their own credit cost.\n\n| Query | Credits |\n| --- | --- |\n| `status=inactive` | 7 |","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"Token ID.","x-default":"119128"}},{"name":"chain_id","in":"query","required":true,"schema":{"type":"integer","description":"Chain ID.","x-default":130}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["inactive"],"description":"Omit for active positions. Set to `inactive` for closed positions. Default: active."}},{"name":"manager_address","in":"query","required":false,"schema":{"type":"string","description":"Manager address."}},{"name":"granularity","in":"query","required":false,"schema":{"type":"string","description":"Comma-separated: `hourly`, `daily`, `weekly`, `monthly`, `yearly`."}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"object","properties":{"positionData":{"type":"object","properties":{"id":{"type":"string"},"owner":{"type":"string"},"liquidity":{"type":"string"},"tickLower":{"type":"string"},"tickUpper":{"type":"string"},"token0":{"type":"object","properties":{"id":{"type":"string"},"symbol":{"type":"string"},"decimals":{"type":"integer"},"name":{"type":"string"}},"required":["id","symbol","decimals","name"]},"token1":{"type":"object","properties":{"id":{"type":"string"},"symbol":{"type":"string"},"decimals":{"type":"integer"},"name":{"type":"string"}},"required":["id","symbol","decimals","name"]},"pool":{"type":"object","properties":{"id":{"type":"string"},"feeTier":{"type":"string"}},"required":["id","feeTier"]},"chain":{"type":"object","properties":{"id":{"type":"number"}},"required":["id"]},"protocol":{"type":"object","properties":{"code":{"type":"string"}},"required":["code"]},"managerAddress":{"type":"string"}},"required":["id","owner","liquidity","tickLower","tickUpper","token0","token1","pool","chain","protocol","managerAddress"]},"calculations":{"type":"object","properties":{"inRange":{"type":"boolean","description":"True when the pool price is inside the position tick range."},"isClosed":{"type":"boolean","description":"True when the position liquidity is zero."},"positionUsdValue":{"type":"string","description":"USD string. Token principal plus unclaimed fees and rewards."},"pnlUsdValue":{"type":"string","description":"USD string. Current position value, plus withdrawals, plus claimed fees and rewards, minus capital deposited."},"pnlPercentage":{"type":"string","description":"Percent string. PnL divided by net invested capital. 0 when net invested is not positive."},"netImpermanentLossPercentage":{"type":"string","description":"Percent string of net impermanent loss over the value of net deposited tokens."},"positionAgeInDays":{"type":"number"},"earnedAprPercentage":{"type":"object","properties":{"yield":{"type":"string","description":"Percent string for that component."},"fees":{"type":"string","description":"Percent string for that component."},"rewards":{"type":"string","description":"Percent string for that component."}},"required":["yield","fees","rewards"],"description":"Simple APR percent strings, not compounded. Each figure is value × 365 / days / time-weighted capital. Days are at least 1 hour."}},"required":["inRange","isClosed","positionUsdValue","pnlUsdValue","pnlPercentage","netImpermanentLossPercentage","positionAgeInDays","earnedAprPercentage"]}},"required":["positionData","calculations"]}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}},"x-mint":{"href":"/api-reference/uniswap-v3/full","metadata":{"sidebarTitle":"Get Full Position Detail"}}}},"/v1/positions/uniswapv3/{id}":{"get":{"tags":["Uniswap V3"],"operationId":"get_v1_positions_uniswapv3_id","summary":"Get Uniswap V3 Position","description":"Raw on-chain state for a single position: ticks, pool, tokens, liquidity.\n\n**Credits:** 2 per successful call.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"Token ID.","x-default":"119128"}},{"name":"chain_id","in":"query","required":true,"schema":{"type":"integer","description":"Chain ID.","x-default":130}},{"name":"manager_address","in":"query","required":false,"schema":{"type":"string","description":"Manager address."}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"object","properties":{"token_id":{"type":"string"},"chain_id":{"type":"integer"},"wallet":{"type":"string"},"is_active":{"type":"boolean"},"position_state":{"type":"object","properties":{"id":{"type":"string"},"owner":{"type":"string"},"liquidity":{"type":"string"},"tickLower":{"type":"string"},"tickUpper":{"type":"string"},"token0":{"type":"object","properties":{"id":{"type":"string"},"symbol":{"type":"string"},"decimals":{"type":"integer"},"name":{"type":"string"}},"required":["id","symbol","decimals","name"]},"token1":{"type":"object","properties":{"id":{"type":"string"},"symbol":{"type":"string"},"decimals":{"type":"integer"},"name":{"type":"string"}},"required":["id","symbol","decimals","name"]},"pool":{"type":"object","properties":{"id":{"type":"string"},"tick":{"type":"string"},"sqrtPrice":{"type":"string"},"feeTier":{"type":"string"}},"required":["id","tick","sqrtPrice","feeTier"]},"chain":{"type":"object","properties":{"id":{"type":"number"}},"required":["id"]},"protocol":{"type":"object","properties":{"code":{"type":"string"}},"required":["code"]}},"required":["id","owner","liquidity","tickLower","tickUpper","token0","token1","pool","chain","protocol"]}},"required":["token_id","chain_id","wallet","is_active","position_state"]}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/uniswap-v3/get","metadata":{"sidebarTitle":"Get Uniswap V3 Position"}}}},"/v1/positions/uniswapv3":{"get":{"tags":["Uniswap V3"],"operationId":"get_v1_positions_uniswapv3","summary":"List Uniswap V3 Positions","description":"All active LP positions for a wallet. A live USDC/HYPE LP on Unichain (chain 130) is a good real example — this wallet also has 12 closed positions across Optimism, Arbitrum, and Ethereum mainnet, visible with `status=inactive`.\n\n**Credits:** 2 per position returned on this page.\n\nThese queries have their own credit cost.\n\n| Query | Credits per returned position |\n| --- | --- |\n| `status=inactive` | 1 |\n| `full=true` | 15 |","parameters":[{"name":"wallet","in":"query","required":true,"schema":{"type":"string","description":"Wallet address.","x-default":"0xbf7620d0377b0660a6cbaef5cdfe2e00eddc1495"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["inactive"],"description":"Omit for active positions. Set to `inactive` for closed positions. Default: active."}},{"name":"full","in":"query","required":false,"schema":{"type":"boolean","description":"Boolean. Include `full=true` for the detailed payload. Omit otherwise. On list endpoints this returns active positions only."}},{"name":"chain_id","in":"query","required":false,"schema":{"type":"integer","description":"Chain ID."}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","description":"Page. Default: 1.","default":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Maximum 25. Default: 10.","default":10,"maximum":25}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"token_id":{"type":"string"},"chain_id":{"type":"integer"},"manager_address":{"type":"string"},"wallet":{"type":"string"},"is_active":{"type":"boolean"},"position_state":{"type":"object","properties":{"id":{"type":"string"},"owner":{"type":"string"},"liquidity":{"type":"string"},"tickLower":{"type":"string"},"tickUpper":{"type":"string"},"token0":{"type":"object","properties":{"id":{"type":"string"},"symbol":{"type":"string"},"decimals":{"type":"integer"},"name":{"type":"string"}},"required":["id","symbol","decimals","name"]},"token1":{"type":"object","properties":{"id":{"type":"string"},"symbol":{"type":"string"},"decimals":{"type":"integer"},"name":{"type":"string"}},"required":["id","symbol","decimals","name"]},"pool":{"type":"object","properties":{"id":{"type":"string"},"tick":{"type":"string"},"feeTier":{"type":"string"}},"required":["id","tick","feeTier"]},"chain":{"type":"object","properties":{"id":{"type":"number"}},"required":["id"]},"protocol":{"type":"object","properties":{"code":{"type":"string"}},"required":["code"]}},"required":["id","owner","liquidity","tickLower","tickUpper","token0","token1","pool","chain","protocol"]}},"required":["token_id","chain_id","manager_address","wallet","is_active","position_state"]}},"pagination":{"$ref":"#/components/schemas/Pagination"},"counts":{"type":"object","properties":{"totalActive":{"type":"number"},"totalInactive":{"type":"number"},"total":{"type":"number"},"filtered":{"type":"number"},"errors":{"type":"number"},"spams":{"type":"array","items":{"type":"object"}}},"required":["totalActive","totalInactive","total","filtered","errors","spams"]}},"required":["data","pagination","counts"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/uniswap-v3/list","metadata":{"sidebarTitle":"List Uniswap V3 Positions"}}}},"/v1/positions/uniswapv3/{id}/pnl":{"get":{"tags":["Uniswap V3"],"operationId":"get_v1_positions_uniswapv3_id_pnl","summary":"Get Position PnL","description":"Just the profit/loss numbers, pulled out of the `full` payload.\n\n**Credits:** 8 per successful call.\n\nThese queries have their own credit cost.\n\n| Query | Credits |\n| --- | --- |\n| `status=inactive` | 4 |","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"Token ID.","x-default":"119128"}},{"name":"chain_id","in":"query","required":true,"schema":{"type":"integer","description":"Chain ID.","x-default":130}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["inactive"],"description":"Omit for active positions. Set to `inactive` for closed positions. Default: active."}},{"name":"manager_address","in":"query","required":false,"schema":{"type":"string","description":"Manager address."}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"object","properties":{"token_id":{"type":"string"},"chain_id":{"type":"integer"},"pnl_usd_value":{"type":"string","description":"USD string. Current position value, plus withdrawals, plus claimed fees and rewards, minus capital deposited."},"pnl_percentage":{"type":"string","description":"Percent string. PnL divided by net invested capital. 0 when net invested is not positive."},"time_weighted_average_capital":{"type":"string","description":"USD string. Capital weighted by how long each deposit or withdrawal was open. Compounds are not new capital."},"hodl_gross_benchmark_usd_value":{"type":"string","description":"USD string. Deposited token amounts at the current price. Withdrawals are not subtracted."},"alpha_vs_hodl_gross_usd_value":{"type":"string","description":"USD string. Remaining value plus withdrawals plus claimed yield, minus the HODL gross benchmark."},"alpha_vs_hodl_gross_percentage":{"type":"string","description":"Percent string of that alpha over the HODL gross benchmark. 0 when the benchmark is not positive."},"net_impermanent_loss":{"type":"string","description":"USD string. Current position value, including unclaimed yield, minus net deposited tokens at the current price."},"net_impermanent_loss_percentage":{"type":"string","description":"Percent string of net impermanent loss over the value of net deposited tokens."},"pure_impermanent_loss":{"type":"string","description":"USD string. Current token principal minus net deposited tokens at the current price. Fees and rewards are excluded."},"pure_impermanent_loss_percentage":{"type":"string","description":"Percent string of pure impermanent loss over the value of net deposited tokens."},"market_pnl_usd_value":{"type":"string","description":"USD string. HODL gross benchmark minus capital deposited."},"lp_divergence_pnl_usd_value":{"type":"string","description":"USD string. Alpha versus HODL, minus total fees and rewards."},"realized_usd_value":{"type":"string","description":"USD string. Withdrawals plus claimed fees and rewards."},"unrealized_usd_value":{"type":"string","description":"USD string. Current position value, including unclaimed fees and rewards."},"is_closed":{"type":"boolean","description":"True when the position liquidity is zero."}},"required":["token_id","chain_id","pnl_usd_value","pnl_percentage","time_weighted_average_capital","hodl_gross_benchmark_usd_value","alpha_vs_hodl_gross_usd_value","alpha_vs_hodl_gross_percentage","net_impermanent_loss","net_impermanent_loss_percentage","pure_impermanent_loss","pure_impermanent_loss_percentage","market_pnl_usd_value","lp_divergence_pnl_usd_value","realized_usd_value","unrealized_usd_value","is_closed"]}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/uniswap-v3/pnl","metadata":{"sidebarTitle":"Get Position PnL"}}}},"/v1/positions/uniswapv3/{id}/snapshot":{"get":{"tags":["Uniswap V3"],"operationId":"get_v1_positions_uniswapv3_id_snapshot","summary":"Get Position Snapshot","description":"A one-shot health check: current value, in/out of range, PnL, and APR. Not the daily history chart — use GET /:id/snapshots for historical performance.\n\n**Credits:** 5 per successful call.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"Token ID.","x-default":"119128"}},{"name":"chain_id","in":"query","required":true,"schema":{"type":"integer","description":"Chain ID.","x-default":130}},{"name":"manager_address","in":"query","required":false,"schema":{"type":"string","description":"Manager address."}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"object","properties":{"token_id":{"type":"string"},"chain_id":{"type":"integer"},"position_usd_value":{"type":"string","description":"USD string. Token principal plus unclaimed fees and rewards."},"in_range":{"type":"boolean","description":"True when the pool price is inside the position tick range."},"is_closed":{"type":"boolean","description":"True when the position liquidity is zero."},"pnl_usd_value":{"type":"string","description":"USD string. Current position value, plus withdrawals, plus claimed fees and rewards, minus capital deposited."},"pnl_percentage":{"type":"string","description":"Percent string. PnL divided by net invested capital. 0 when net invested is not positive."},"earned_apr_percentage":{"type":"object","properties":{"yield":{"type":"string","description":"Percent string for that component."},"fees":{"type":"string","description":"Percent string for that component."},"rewards":{"type":"string","description":"Percent string for that component."}},"required":["yield","fees","rewards"],"description":"Simple APR percent strings, not compounded. Each figure is value × 365 / days / time-weighted capital. Days are at least 1 hour."}},"required":["token_id","chain_id","position_usd_value","in_range","is_closed","pnl_usd_value","pnl_percentage","earned_apr_percentage"]}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/uniswap-v3/snapshot","metadata":{"sidebarTitle":"Get Position Snapshot"}}}},"/v1/positions/uniswapv3/{id}/snapshots":{"get":{"tags":["Uniswap V3"],"operationId":"get_v1_positions_uniswapv3_id_snapshots","summary":"Get Position Historical Performance","description":"Daily history chart for one LP position: mint genesis point, then one row per UTC day. rewards is 0 (Uniswap has no reward token). This is not the current health check — that is GET /:id/snapshot.\n\n**Credits:** 2 per successful call.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"Token ID.","x-default":"119128"}},{"name":"chain_id","in":"query","required":true,"schema":{"type":"integer","description":"Chain ID.","x-default":130}},{"name":"manager_address","in":"query","required":false,"schema":{"type":"string","description":"Manager address."}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"number","description":"Unix seconds."},"position_usd_value":{"type":"string","description":"USD string. Token principal plus unclaimed fees and rewards."},"fees_usd":{"type":"string","description":"USD string of total fees on that day's snapshot."},"rewards":{"type":"string","description":"USD string of rewards earned through that day. 0 when the position has no rewards."},"apr":{"type":"string","description":"Yearly in-range fee APR percent string for that day. 0 when the figure is missing."}},"required":["timestamp","position_usd_value","fees_usd","rewards","apr"]}}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/uniswap-v3/snapshots","metadata":{"sidebarTitle":"Get Position Historical Performance"}}}},"/v1/positions/uniswapv3/summary":{"get":{"tags":["Uniswap V3"],"operationId":"get_v1_positions_uniswapv3_summary","summary":"Get Uniswap V3 Summary","description":"Wallet-level counts only — active vs. inactive positions.\n\n**Credits:** 1 per successful call.","parameters":[{"name":"wallet","in":"query","required":true,"schema":{"type":"string","description":"Wallet address.","x-default":"0xbf7620d0377b0660a6cbaef5cdfe2e00eddc1495"}},{"name":"chain_id","in":"query","required":false,"schema":{"type":"integer","description":"Chain ID."}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"object","properties":{"total":{"type":"number"},"total_active":{"type":"number"},"total_inactive":{"type":"number"}},"required":["total","total_active","total_inactive"]}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/uniswap-v3/summary","metadata":{"sidebarTitle":"Get Uniswap V3 Summary"}}}},"/v1/positions/uniswapv3/{id}/yield":{"get":{"tags":["Uniswap V3"],"operationId":"get_v1_positions_uniswapv3_id_yield","summary":"Get Position Yield","description":"Fee/reward accrual. projected_yield_apr and estimated_total_yield match the position page. earned_apr_percentage is historical earned APR and stays non-zero out of range. unclaimed_fees is Pending Fees. unclaimed_rewards is Pending Rewards.\n\n**Credits:** 8 per successful call.\n\nThese queries have their own credit cost.\n\n| Query | Credits |\n| --- | --- |\n| `status=inactive` | 4 |","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"Token ID.","x-default":"119128"}},{"name":"chain_id","in":"query","required":true,"schema":{"type":"integer","description":"Chain ID.","x-default":130}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["inactive"],"description":"Omit for active positions. Set to `inactive` for closed positions. Default: active."}},{"name":"manager_address","in":"query","required":false,"schema":{"type":"string","description":"Manager address."}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"object","properties":{"token_id":{"type":"string"},"chain_id":{"type":"integer"},"earned_apr_percentage":{"type":"object","properties":{"yield":{"type":"string","description":"Percent string for that component."},"fees":{"type":"string","description":"Percent string for that component."},"rewards":{"type":"string","description":"Percent string for that component."}},"required":["yield","fees","rewards"],"description":"Simple APR percent strings, not compounded. Each figure is value × 365 / days / time-weighted capital. Days are at least 1 hour."},"projected_yield_apr":{"type":"string","description":"Yearly in-range APR percent string. 0 when the position is out of range or closed."},"estimated_total_yield":{"type":"object","properties":{"daily":{"type":"string"},"weekly":{"type":"string"},"monthly":{"type":"string"},"yearly":{"type":"string"}},"required":["daily","weekly","monthly","yearly"],"description":"USD strings. Observed average daily fees and rewards, scaled to a day, week, month, and year."},"average_fees_usd_value":{"type":"object","properties":{"daily":{"type":"object","properties":{"amount0":{"type":"string","description":"Token amount as a decimal string."},"amount1":{"type":"string","description":"Token amount as a decimal string."},"usdValue0":{"type":"string","description":"USD value of token0 as a decimal string."},"usdValue1":{"type":"string","description":"USD value of token1 as a decimal string."},"totalUsdValue":{"type":"string","description":"USD total as a decimal string."}},"required":["amount0","amount1","usdValue0","usdValue1","totalUsdValue"]},"hourly":{"type":"object","properties":{"amount0":{"type":"string","description":"Token amount as a decimal string."},"amount1":{"type":"string","description":"Token amount as a decimal string."},"usdValue0":{"type":"string","description":"USD value of token0 as a decimal string."},"usdValue1":{"type":"string","description":"USD value of token1 as a decimal string."},"totalUsdValue":{"type":"string","description":"USD total as a decimal string."}},"required":["amount0","amount1","usdValue0","usdValue1","totalUsdValue"]},"weekly":{"type":"object","properties":{"amount0":{"type":"string","description":"Token amount as a decimal string."},"amount1":{"type":"string","description":"Token amount as a decimal string."},"usdValue0":{"type":"string","description":"USD value of token0 as a decimal string."},"usdValue1":{"type":"string","description":"USD value of token1 as a decimal string."},"totalUsdValue":{"type":"string","description":"USD total as a decimal string."}},"required":["amount0","amount1","usdValue0","usdValue1","totalUsdValue"]},"monthly":{"type":"object","properties":{"amount0":{"type":"string","description":"Token amount as a decimal string."},"amount1":{"type":"string","description":"Token amount as a decimal string."},"usdValue0":{"type":"string","description":"USD value of token0 as a decimal string."},"usdValue1":{"type":"string","description":"USD value of token1 as a decimal string."},"totalUsdValue":{"type":"string","description":"USD total as a decimal string."}},"required":["amount0","amount1","usdValue0","usdValue1","totalUsdValue"]},"yearly":{"type":"object","properties":{"amount0":{"type":"string","description":"Token amount as a decimal string."},"amount1":{"type":"string","description":"Token amount as a decimal string."},"usdValue0":{"type":"string","description":"USD value of token0 as a decimal string."},"usdValue1":{"type":"string","description":"USD value of token1 as a decimal string."},"totalUsdValue":{"type":"string","description":"USD total as a decimal string."}},"required":["amount0","amount1","usdValue0","usdValue1","totalUsdValue"]}},"required":["daily","hourly","weekly","monthly","yearly"],"description":"Observed fee token amounts and USD value per hour, day, week, month, and year."},"average_rewards_usd_value":{"type":"object","properties":{"hourly":{"type":"string"},"daily":{"type":"string"},"weekly":{"type":"string"},"monthly":{"type":"string"},"yearly":{"type":"string"}},"required":["hourly","daily","weekly","monthly","yearly"],"description":"Observed reward USD value per hour, day, week, month, and year."},"total_fees":{"type":"object","properties":{"amount0":{"type":"string","description":"Token amount as a decimal string."},"amount1":{"type":"string","description":"Token amount as a decimal string."},"usdValue0":{"type":"string","description":"USD value of token0 as a decimal string."},"usdValue1":{"type":"string","description":"USD value of token1 as a decimal string."},"totalUsdValue":{"type":"string","description":"USD total as a decimal string."}},"required":["amount0","amount1","usdValue0","usdValue1","totalUsdValue"],"description":"Fee token amounts and USD value across collected, compounded, and uncollected fees."},"total_rewards":{"type":"object","properties":{"totalUsdValue":{"type":"string","description":"USD total as a decimal string."},"totalTokenValue":{"type":"string"}},"required":["totalUsdValue","totalTokenValue"],"description":"Reward USD total and token total."},"total_yield":{"type":"string","description":"USD string. Total fees plus total rewards."},"unclaimed_fees":{"type":"object","properties":{"amount0":{"type":"string","description":"Token amount as a decimal string."},"amount1":{"type":"string","description":"Token amount as a decimal string."},"usdValue0":{"type":"string","description":"USD value of token0 as a decimal string."},"usdValue1":{"type":"string","description":"USD value of token1 as a decimal string."},"totalUsdValue":{"type":"string","description":"USD total as a decimal string."}},"required":["amount0","amount1","usdValue0","usdValue1","totalUsdValue"],"description":"Uncollected fee token amounts, valued at the current price."},"claimed_fees":{"type":"object","properties":{"amount0":{"type":"string","description":"Token amount as a decimal string."},"amount1":{"type":"string","description":"Token amount as a decimal string."},"usdValue0":{"type":"string","description":"USD value of token0 as a decimal string."},"usdValue1":{"type":"string","description":"USD value of token1 as a decimal string."},"totalUsdValue":{"type":"string","description":"USD total as a decimal string."}},"required":["amount0","amount1","usdValue0","usdValue1","totalUsdValue"],"description":"Collected fee token amounts, valued at the collection price."},"unclaimed_rewards":{"type":"object","properties":{"rewards":{"type":"array","items":{"type":"object"}},"totalUsdValue":{"type":"string","description":"USD total as a decimal string."}},"required":["rewards","totalUsdValue"],"description":"Pending reward tokens and their USD total."},"claimed_rewards":{"type":"object","properties":{"rewards":{"type":"array","items":{"type":"object"}},"totalUsdValue":{"type":"string","description":"USD total as a decimal string."},"totalTokenValue":{"type":"string"}},"required":["rewards","totalUsdValue","totalTokenValue"],"description":"Collected reward tokens, with USD and token totals."},"is_closed":{"type":"boolean","description":"True when the position liquidity is zero."}},"required":["token_id","chain_id","earned_apr_percentage","projected_yield_apr","estimated_total_yield","average_fees_usd_value","average_rewards_usd_value","total_fees","total_rewards","total_yield","unclaimed_fees","claimed_fees","unclaimed_rewards","claimed_rewards","is_closed"]}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/uniswap-v3/yield","metadata":{"sidebarTitle":"Get Position Yield"}}}},"/v1/usage/credits":{"get":{"tags":["Usage"],"operationId":"get_v1_usage_credits","summary":"Get Remaining Credits","description":"Credits left for your organization, split into Grants (manual grants and the recurring-grant bucket) and Purchased Credits (everything else). Balances are after this call's 1-credit charge.\n\n**Credits:** 1 per successful call.","parameters":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"object","properties":{"credits_remaining":{"type":"integer","description":"Credits left after this call's charge."},"grants":{"type":"integer","description":"Manual grants plus the recurring-grant bucket."},"purchased_credits":{"type":"integer","description":"Credits that are not grants."}},"required":["credits_remaining","grants","purchased_credits"]}},"required":["data"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/usage/credits","metadata":{"sidebarTitle":"Get Remaining Credits"}}}},"/v1/usage/logs":{"get":{"tags":["Usage"],"operationId":"get_v1_usage_logs","summary":"List API Request Logs","description":"Paginated request history for your organization. Filter by time range, API key, endpoint, HTTP status, and success/errors.\n\n**Credits:** 1 per successful call.","parameters":[{"name":"range","in":"query","required":false,"schema":{"type":"string","enum":["5m","1h","24h","7d","30d"],"description":"Omit for the last 24 hours. Values: `5m`, `1h`, `24h`, `7d`, `30d`. Default: Last 24 hours."}},{"name":"from","in":"query","required":false,"schema":{"type":"string","description":"`YYYY-MM-DD` or ISO timestamp."}},{"name":"to","in":"query","required":false,"schema":{"type":"string","description":"`YYYY-MM-DD` or ISO timestamp."}},{"name":"api_key_id","in":"query","required":false,"schema":{"type":"string","description":"API key ID."}},{"name":"path","in":"query","required":false,"schema":{"type":"string","description":"Endpoint path."}},{"name":"status_code","in":"query","required":false,"schema":{"type":"integer","description":"HTTP status code."}},{"name":"errors","in":"query","required":false,"schema":{"type":"string","enum":["all","success","errors"],"description":"Omit or set to `all` for all requests. `success` returns successful calls only. `errors` returns errors only. Default: all requests."}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","description":"Page. Default: 1.","default":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Maximum 25. Default: 10.","default":10,"maximum":25}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/RequestId"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"method":{"type":"string"},"path":{"type":"string"},"status_code":{"type":"integer"},"latency_ms":{"type":"integer"},"credits_charged":{"type":"integer","description":"Credits spent on this call. 0 when the call failed."},"requested_at":{"type":"string"},"api_key_id":{"type":"string"},"api_key_name":{"type":"string"}},"required":["method","path","status_code","latency_ms","credits_charged","requested_at","api_key_id","api_key_name"]}},"pagination":{"$ref":"#/components/schemas/Pagination"}},"required":["data","pagination"]}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"x-mint":{"href":"/api-reference/usage/logs","metadata":{"sidebarTitle":"List API Request Logs"}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Paste your API key from the [dashboard](https://platform.defiorbit.xyz/dashboard/keys). The key starts with `do_sk_`.","x-default":"YOUR_API_KEY"}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","request_id"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"request_id":{"type":"string"}}}}},"RequestId":{"type":"object","required":["request_id"],"properties":{"request_id":{"type":"string","description":"Id to quote when you contact support."}}},"Pagination":{"type":"object","required":["page","limit","total","next_page","prev_page"],"properties":{"page":{"type":"integer"},"limit":{"type":"integer"},"total":{"type":"integer","description":"Matching rows, before this page is sliced."},"next_page":{"type":"string","nullable":true,"description":"URL of the next page, or null on the last page."},"prev_page":{"type":"string","nullable":true,"description":"URL of the previous page, or null on the first page."}}},"Network":{"type":"object","required":["chainId","name","slug","iconUrl"],"properties":{"chainId":{"type":"integer"},"name":{"type":"string"},"slug":{"type":"string"},"iconUrl":{"type":"string","nullable":true,"description":"Logo URL, or null when none is available."}}}},"responses":{"BadRequest":{"description":"Missing or invalid parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"Missing, malformed, invalid, or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"PaymentRequired":{"description":"The organization does not have enough credits.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Forbidden":{"description":"The organization is suspended, or the endpoint or feature is disabled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"TooManyRequests":{"description":"The organization exceeded its requests-per-second limit.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}},"X-RateLimit-Limit":{"description":"Requests per second for the organization.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix time when the window resets.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"InternalError":{"description":"Unexpected server error, or pricing is not configured.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"BadGateway":{"description":"The upstream data provider failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"ServiceUnavailable":{"description":"The rate limiter is down, or position data is not ready yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"GatewayTimeout":{"description":"A Kamino batch timed out. Retry with fewer wallets.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}
