DeFi Positions
getAaveV3UserPositions
Returns a user's full Aave V3 position: collateral assets, debt, health factor, net worth, and liquidation status. Reads directly from on-chain Pool + ProtocolDataProvider contracts.
curl -X POST https://your-endpoint.simplystaking.xyz/v1 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "getAaveV3UserPositions",
"params": {
"chain": "ethereum",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
},
"id": 1
}'import { Spectrum } from '@spectrumnodes/sdk';
const spectrum = new Spectrum({ api: 'https://your-endpoint.simplystaking.xyz/YOUR_API_KEY/' });
const result = await spectrum.defi.getPosition('ethereum', 'aave-v3', '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045');
console.log(result);{
"jsonrpc": "2.0",
"result": {
"data": {
"chain": "ethereum",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"totalCollateralUsd": 15230.42,
"totalDebtUsd": 5100,
"netWorthUsd": 10130.42,
"healthFactor": 2.34,
"ltv": 0.335,
"reserves": [
{
"symbol": "WETH",
"balance": "5.2",
"balanceUsd": 10764,
"isCollateral": true
},
{
"symbol": "USDC",
"balance": "5000",
"balanceUsd": 5000,
"isDebt": true
}
]
}
},
"id": 1
}Parameters
| Name | Required | Description |
|---|---|---|
| chain | yes | Network slug |
| address | yes | Wallet address e.g. 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 |
Response Fields
| Field | Type |
|---|---|
data | object |
chain | string |
address | string |
totalCollateralUsd | number |
totalDebtUsd | integer |
netWorthUsd | number |
healthFactor | number |
ltv | number |
reserves | object[] |
symbol | string |
balance | string |
balanceUsd | integer |
isCollateral | boolean |
Supported Networks
getAaveV2UserPositions
Returns a user's Aave V2 position: collateral assets, debt, health factor, and liquidation threshold. Important: fields named totalCollateralUsd/totalDebtUsd are actually denominated in ETH (not USD) - Aave V2 returns ETH-based values.
curl -X POST https://your-endpoint.simplystaking.xyz/v1 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "getAaveV2UserPositions",
"params": {
"chain": "ethereum",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
},
"id": 1
}'import { Spectrum } from '@spectrumnodes/sdk';
const spectrum = new Spectrum({ api: 'https://your-endpoint.simplystaking.xyz/YOUR_API_KEY/' });
const result = await spectrum.defi.getPosition('ethereum', 'aave-v2', '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045');
console.log(result);{
"jsonrpc": "2.0",
"result": {
"data": {
"chain": "ethereum",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"totalCollateralUsd": 5.2,
"totalDebtUsd": 1.8,
"healthFactor": 2.34,
"ltv": 0.335,
"supplies": [
{
"symbol": "WETH",
"address": "0xC02a...",
"balance": "5200000000000000000"
}
],
"borrows": [
{
"symbol": "USDC",
"address": "0xA0b8...",
"balance": "8000000000"
}
]
}
},
"id": 1
}Parameters
| Name | Required | Description |
|---|---|---|
| chain | yes | Network slug |
| address | yes | Wallet address e.g. 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 |
Response Fields
| Field | Type |
|---|---|
data | object |
chain | string |
address | string |
totalCollateralUsd | number |
totalDebtUsd | number |
healthFactor | number |
ltv | number |
supplies | object[] |
symbol | string |
address | string |
balance | string |
borrows | object[] |
symbol | string |
address | string |
balance | string |
Supported Networks
getCompoundV3UserPositions
Returns a user's Compound V3 (Comet) positions across all markets on a chain. Includes supply/borrow balances, collateral assets, USD values, and liquidation status.
curl -X POST https://your-endpoint.simplystaking.xyz/v1 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "getCompoundV3UserPositions",
"params": {
"chain": "ethereum",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
},
"id": 1
}'import { Spectrum } from '@spectrumnodes/sdk';
const spectrum = new Spectrum({ api: 'https://your-endpoint.simplystaking.xyz/YOUR_API_KEY/' });
const result = await spectrum.defi.getPosition('ethereum', 'compound-v3', '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045');
console.log(result);{
"jsonrpc": "2.0",
"result": {
"data": {
"chain": "ethereum",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"markets": [
{
"marketName": "USDC",
"marketAddress": "0xc3d688B66703497DAA19211EEdff47f25384cdc3",
"baseToken": {
"symbol": "USDC",
"address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"decimals": 6
},
"supplyBalance": "1500.25",
"borrowBalance": "0",
"collateral": [],
"isLiquidatable": false
}
]
}
},
"id": 1
}Parameters
| Name | Required | Description |
|---|---|---|
| chain | yes | Network slug |
| address | yes | Wallet address e.g. 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 |
Response Fields
| Field | Type |
|---|---|
data | object |
chain | string |
address | string |
markets | object[] |
marketName | string |
marketAddress | string |
baseToken | object |
symbol | string |
address | string |
decimals | integer |
supplyBalance | string |
borrowBalance | string |
collateral | array |
isLiquidatable | boolean |
Supported Networks
getCompoundV2UserPositions
Returns a user's Compound V2 positions across cToken markets. Note: Compound V2 is deprecated (borrows/mints paused Dec 2025) - users may still have existing positions.
curl -X POST https://your-endpoint.simplystaking.xyz/v1 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "getCompoundV2UserPositions",
"params": {
"chain": "ethereum",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
},
"id": 1
}'import { Spectrum } from '@spectrumnodes/sdk';
const spectrum = new Spectrum({ api: 'https://your-endpoint.simplystaking.xyz/YOUR_API_KEY/' });
const result = await spectrum.defi.getPosition('ethereum', 'compound-v2', '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045');
console.log(result);{
"jsonrpc": "2.0",
"result": {
"data": {
"chain": "ethereum",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"markets": [
{
"cTokenSymbol": "cUSDC",
"cTokenAddress": "0x39AA39c021dfbaE8faC545936693aC917d5E7563",
"underlyingSymbol": "USDC",
"underlyingAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"underlyingDecimals": 6,
"supplyBalance": "1500.25",
"borrowBalance": "0"
}
]
}
},
"id": 1
}Parameters
| Name | Required | Description |
|---|---|---|
| chain | yes | Network slug |
| address | yes | Wallet address e.g. 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 |
Response Fields
| Field | Type |
|---|---|
data | object |
chain | string |
address | string |
markets | object[] |
cTokenSymbol | string |
cTokenAddress | string |
underlyingSymbol | string |
underlyingAddress | string |
underlyingDecimals | integer |
supplyBalance | string |
borrowBalance | string |
Supported Networks
getMorphoUserPositions
Returns a user's Morpho Blue positions across hardcoded markets. Shows supply/borrow share-to-asset conversions, collateral deposits, and market parameters (LLTV, oracle). Only detects positions in the listed markets.
curl -X POST https://your-endpoint.simplystaking.xyz/v1 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "getMorphoUserPositions",
"params": {
"chain": "ethereum",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
},
"id": 1
}'import { Spectrum } from '@spectrumnodes/sdk';
const spectrum = new Spectrum({ api: 'https://your-endpoint.simplystaking.xyz/YOUR_API_KEY/' });
const result = await spectrum.defi.getPosition('ethereum', 'morpho-blue', '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045');
console.log(result);{
"jsonrpc": "2.0",
"result": {
"data": {
"chain": "ethereum",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"markets": [
{
"marketId": "0xb323...86cc",
"loanToken": {
"symbol": "USDC",
"address": "0xA0b8...",
"decimals": 6
},
"collateralToken": {
"symbol": "WETH",
"address": "0xC02a...",
"decimals": 18
},
"supplyShares": "0",
"supplyAssets": "0",
"borrowShares": "0",
"borrowAssets": "0",
"collateral": "0",
"lltv": 86
}
]
}
},
"id": 1
}Parameters
| Name | Required | Description |
|---|---|---|
| chain | yes | Network slug |
| address | yes | Wallet address e.g. 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 |
Response Fields
| Field | Type |
|---|---|
data | object |
chain | string |
address | string |
markets | object[] |
marketId | string |
loanToken | object |
symbol | string |
address | string |
decimals | integer |
collateralToken | object |
symbol | string |
address | string |
decimals | integer |
supplyShares | string |
supplyAssets | string |
borrowShares | string |
borrowAssets | string |
collateral | string |
lltv | integer |
Supported Networks
getLidoUserPositions
Returns stETH and wstETH balances with ETH-equivalent values and live exchange rates. Full stETH + wstETH data on Ethereum; wstETH balance only on L2s (bridged token). Note: stakingApr is hardcoded at 3.5%.
curl -X POST https://your-endpoint.simplystaking.xyz/v1 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "getLidoUserPositions",
"params": {
"chain": "ethereum",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
},
"id": 1
}'import { Spectrum } from '@spectrumnodes/sdk';
const spectrum = new Spectrum({ api: 'https://your-endpoint.simplystaking.xyz/YOUR_API_KEY/' });
const result = await spectrum.defi.getPosition('ethereum', 'lido', '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045');
console.log(result);{
"jsonrpc": "2.0",
"result": {
"data": {
"chain": "ethereum",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"stETH": {
"balance": "10.5",
"balanceEth": "10.5"
},
"wstETH": {
"balance": "2.0",
"balanceStEth": "2.351",
"balanceEth": "2.351"
},
"exchangeRates": {
"stEthPerWstEth": "1.1755",
"wstEthPerStEth": "0.8507"
},
"totalEthEquivalent": "12.85",
"stakingApr": 3.5
}
},
"id": 1
}Parameters
| Name | Required | Description |
|---|---|---|
| chain | yes | Network slug |
| address | yes | Wallet address e.g. 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 |
Response Fields
| Field | Type |
|---|---|
data | object |
chain | string |
address | string |
stETH | object |
balance | string |
balanceEth | string |
wstETH | object |
balance | string |
balanceStEth | string |
balanceEth | string |
exchangeRates | object |
stEthPerWstEth | string |
wstEthPerStEth | string |
totalEthEquivalent | string |
stakingApr | number |
Supported Networks
getCurvePools
Returns data for 3 hardcoded Curve pools only. Does not discover pools dynamically.
curl -X POST https://your-endpoint.simplystaking.xyz/v1 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "getCurvePools",
"params": {
"chain": "ethereum"
},
"id": 1
}'import { Spectrum } from '@spectrumnodes/sdk';
const spectrum = new Spectrum({ api: 'https://your-endpoint.simplystaking.xyz/YOUR_API_KEY/' });
const result = await spectrum.defi.getCurvePools('ethereum');
console.log(result);{
"jsonrpc": "2.0",
"result": {
"data": {
"chain": "ethereum",
"pools": [
{
"name": "threePool",
"address": "0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7",
"virtualPrice": "1.023",
"coins": [
{
"address": "0x6B175474E89094C44Da98b954EedeAC495271d0F",
"balance": "120000000.0"
}
],
"amplification": "2000",
"fee": "0.04"
}
]
}
},
"id": 1
}Parameters
| Name | Required | Description |
|---|---|---|
| chain | yes | Network slug |
Response Fields
| Field | Type |
|---|---|
data | object |
chain | string |
pools | object[] |
name | string |
address | string |
virtualPrice | string |
coins | object[] |
address | string |
balance | string |
amplification | string |
fee | string |
Supported Networks
getCurveLlamaLendMarkets
Returns all Curve LlamaLend (OneWay Lending) vault markets on a chain. Shows vault name, symbol, underlying asset, total deposits and shares.
curl -X POST https://your-endpoint.simplystaking.xyz/v1 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "getCurveLlamaLendMarkets",
"params": {
"chain": "ethereum"
},
"id": 1
}'import { Spectrum } from '@spectrumnodes/sdk';
const spectrum = new Spectrum({ api: 'https://your-endpoint.simplystaking.xyz/YOUR_API_KEY/' });
const result = await spectrum.defi.getCurveLlamaLendMarkets('ethereum');
console.log(result);{
"jsonrpc": "2.0",
"result": {
"data": {
"chain": "ethereum",
"markets": [
{
"vaultAddress": "0x123...",
"name": "crvUSD/WETH Vault",
"symbol": "crvUSD-WETH",
"assetAddress": "0xf939...",
"totalAssets": "5000000.0",
"totalSupply": "4800000.0"
}
]
}
},
"id": 1
}Parameters
| Name | Required | Description |
|---|---|---|
| chain | yes | Network slug |
Response Fields
| Field | Type |
|---|---|
data | object |
chain | string |
markets | object[] |
vaultAddress | string |
name | string |
symbol | string |
assetAddress | string |
totalAssets | string |
totalSupply | string |
Supported Networks
getCurveLlamaLend
Returns a user's Curve LlamaLend positions across all OneWay Lending vaults. Shows vault shares and their equivalent underlying asset value.
curl -X POST https://your-endpoint.simplystaking.xyz/v1 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "getCurveLlamaLend",
"params": {
"chain": "ethereum",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
},
"id": 1
}'import { Spectrum } from '@spectrumnodes/sdk';
const spectrum = new Spectrum({ api: 'https://your-endpoint.simplystaking.xyz/YOUR_API_KEY/' });
const result = await spectrum.defi.getCurveLlamaLendPosition('ethereum', '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045');
console.log(result);{
"jsonrpc": "2.0",
"result": {
"data": {
"chain": "ethereum",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"markets": [
{
"vaultAddress": "0x123...",
"name": "crvUSD/WETH Vault",
"symbol": "crvUSD-WETH",
"assetAddress": "0xf939...",
"totalAssets": "5000000.0",
"totalSupply": "4800000.0"
}
],
"positions": [
{
"vaultAddress": "0x123...",
"name": "crvUSD/WETH Vault",
"shares": "10000.0",
"assets": "10400.0"
}
]
}
},
"id": 1
}Parameters
| Name | Required | Description |
|---|---|---|
| chain | yes | Network slug |
| address | yes | Wallet address e.g. 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 |
Response Fields
| Field | Type |
|---|---|
data | object |
chain | string |
address | string |
markets | object[] |
vaultAddress | string |
name | string |
symbol | string |
assetAddress | string |
totalAssets | string |
totalSupply | string |
positions | object[] |
vaultAddress | string |
name | string |
shares | string |
assets | string |
Supported Networks
getPendleV2Info
Returns Pendle V2 router and routerStatic contract addresses for a chain only - does NOT return user positions or market data.
curl -X POST https://your-endpoint.simplystaking.xyz/v1 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "getPendleV2Info",
"params": {
"chain": "ethereum"
},
"id": 1
}'import { Spectrum } from '@spectrumnodes/sdk';
const spectrum = new Spectrum({ api: 'https://your-endpoint.simplystaking.xyz/YOUR_API_KEY/' });
const result = await spectrum.defi.getPendleInfo('ethereum');
console.log(result);{
"jsonrpc": "2.0",
"result": {
"data": {
"chain": "ethereum",
"routerAddress": "0x888888888889758F76e7103c6CbF23ABbF58F946",
"routerStaticAddress": "0x263833d47eA3fA4a30f269323aba6a107f9eB14C",
"supportedChains": [
"ethereum",
"arbitrum",
"bsc",
"optimism",
"mantle",
"base",
"sonic",
"berachain",
"hyperliquid",
"plasma"
]
}
},
"id": 1
}Parameters
| Name | Required | Description |
|---|---|---|
| chain | yes | Network slug |
Response Fields
| Field | Type |
|---|---|
data | object |
chain | string |
routerAddress | string |
routerStaticAddress | string |
supportedChains | string[] |
Supported Networks
getDefiSummary
Aggregates positions across 7 protocols in parallel. Returns per-protocol status (ok/error/unsupported) with positions or error details.
curl -X POST https://your-endpoint.simplystaking.xyz/v1 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "getDefiSummary",
"params": {
"chain": "ethereum",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
},
"id": 1
}'import { Spectrum } from '@spectrumnodes/sdk';
const spectrum = new Spectrum({ api: 'https://your-endpoint.simplystaking.xyz/YOUR_API_KEY/' });
const result = await spectrum.defi.getSummary('ethereum', '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045');
console.log(result);{
"jsonrpc": "2.0",
"result": {
"data": {
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"chain": "ethereum",
"timestamp": "2026-02-26T12:00:00.000Z",
"protocols": [
{
"protocol": "aave-v3",
"status": "ok",
"data": {
"totalCollateralUsd": 15230.42
}
},
{
"protocol": "compound-v3",
"status": "ok",
"data": {
"markets": []
}
}
]
}
},
"id": 1
}Parameters
| Name | Required | Description |
|---|---|---|
| chain | yes | Network slug |
| address | yes | Wallet address e.g. 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 |
Response Fields
| Field | Type |
|---|---|
data | object |
address | string |
chain | string |
timestamp | string |
protocols | object[] |
protocol | string |
status | string |
data | object |
totalCollateralUsd | number |