curl -H "X-API-Key: YOUR_API_KEY" \
"https://api.0xradar.app/v1/positions/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?protocols=aave_v3,uniswap_v3"
import httpx
url = "https://api.0xradar.app/v1/positions/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
params = {"protocols": "aave_v3,uniswap_v3"}
headers = {"X-API-Key": "YOUR_API_KEY"}
data = httpx.get(url, params=params, headers=headers).json()
print(data["total_supplied_usd"])
const address = "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045";
const res = await fetch(
`https://api.0xradar.app/v1/positions/${address}?protocols=aave_v3,uniswap_v3`,
{ headers: { "X-API-Key": "YOUR_API_KEY" } }
);
const data = await res.json();
console.log(data.total_supplied_usd);
{
"address": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
"protocols_requested": ["aave_v3", "uniswap_v3"],
"total_supplied_usd": "42310.55",
"total_borrowed_usd": "18000.00",
"total_lp_value_usd": "9875.22",
"positions": [
{
"protocol": "aave_v3",
"chain": "ethereum",
"type": "lending",
"supplied": [
{
"symbol": "WETH",
"amount": "15.25",
"value_usd": "31440.73",
"apy": "0.82"
},
{
"symbol": "USDC",
"amount": "10869.82",
"value_usd": "10869.82",
"apy": "4.51"
}
],
"borrowed": [
{
"symbol": "USDC",
"amount": "18000.00",
"value_usd": "18000.00",
"apy": "5.22"
}
],
"health_factor": "2.35"
},
{
"protocol": "uniswap_v3",
"chain": "base",
"type": "lp",
"lp_positions": [
{
"token_id": 812043,
"pool": "0x4c36388be6f416a29c8d8eee81c771ce6be14b18",
"token0": "ETH",
"token1": "USDC",
"fee_tier": 500,
"tick_lower": -202900,
"tick_upper": -196400,
"current_tick": -199820,
"in_range": true,
"value_usd": "5312.44",
"uncollected_fees_usd": "47.18"
},
{
"token_id": 934217,
"pool": "0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640",
"token0": "WBTC",
"token1": "USDC",
"fee_tier": 3000,
"tick_lower": -65000,
"tick_upper": -62000,
"current_tick": -60100,
"in_range": false,
"value_usd": "4562.78",
"uncollected_fees_usd": "183.52"
}
]
}
],
"timestamp": "2026-05-28T09:15:00.000000"
}
Endpoints
DeFi Positions
GET
/
v1
/
positions
/
{address}
curl -H "X-API-Key: YOUR_API_KEY" \
"https://api.0xradar.app/v1/positions/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?protocols=aave_v3,uniswap_v3"
import httpx
url = "https://api.0xradar.app/v1/positions/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
params = {"protocols": "aave_v3,uniswap_v3"}
headers = {"X-API-Key": "YOUR_API_KEY"}
data = httpx.get(url, params=params, headers=headers).json()
print(data["total_supplied_usd"])
const address = "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045";
const res = await fetch(
`https://api.0xradar.app/v1/positions/${address}?protocols=aave_v3,uniswap_v3`,
{ headers: { "X-API-Key": "YOUR_API_KEY" } }
);
const data = await res.json();
console.log(data.total_supplied_usd);
{
"address": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
"protocols_requested": ["aave_v3", "uniswap_v3"],
"total_supplied_usd": "42310.55",
"total_borrowed_usd": "18000.00",
"total_lp_value_usd": "9875.22",
"positions": [
{
"protocol": "aave_v3",
"chain": "ethereum",
"type": "lending",
"supplied": [
{
"symbol": "WETH",
"amount": "15.25",
"value_usd": "31440.73",
"apy": "0.82"
},
{
"symbol": "USDC",
"amount": "10869.82",
"value_usd": "10869.82",
"apy": "4.51"
}
],
"borrowed": [
{
"symbol": "USDC",
"amount": "18000.00",
"value_usd": "18000.00",
"apy": "5.22"
}
],
"health_factor": "2.35"
},
{
"protocol": "uniswap_v3",
"chain": "base",
"type": "lp",
"lp_positions": [
{
"token_id": 812043,
"pool": "0x4c36388be6f416a29c8d8eee81c771ce6be14b18",
"token0": "ETH",
"token1": "USDC",
"fee_tier": 500,
"tick_lower": -202900,
"tick_upper": -196400,
"current_tick": -199820,
"in_range": true,
"value_usd": "5312.44",
"uncollected_fees_usd": "47.18"
},
{
"token_id": 934217,
"pool": "0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640",
"token0": "WBTC",
"token1": "USDC",
"fee_tier": 3000,
"tick_lower": -65000,
"tick_upper": -62000,
"current_tick": -60100,
"in_range": false,
"value_usd": "4562.78",
"uncollected_fees_usd": "183.52"
}
]
}
],
"timestamp": "2026-05-28T09:15:00.000000"
}
Returns open DeFi positions across 5 major protocols on 6 EVM chains. Covers lending supply/borrow, liquidity pool positions (including out-of-range Uniswap V3 ranges), and collateral health.
Heavy endpoint. Each call fans out to multiple on-chain data sources simultaneously. Free tier is rate-limited to 5 requests/minute. Consider upgrading to Pro for higher throughput and historical snapshots.
Auth
X-API-Key header required.
Path parameters
string
required
EVM wallet address (42-character hex, checksum or lowercase).
Query parameters
string
Comma-separated list of protocols to fetch. Defaults to all supported protocols.Supported values:
aave_v3, hyperlend, sentiment_v2, uniswap_v3, compound_v3Supported chains
ethereum, arbitrum, base, optimism, polygon, hyperevm
HyperEVM is supported for HyperLend positions only. Solana is not supported by this endpoint.
Response fields
string
Queried wallet address (lowercased)
string[]
Protocols included in this response
string
Total USD value supplied across all protocols
string
Total USD value borrowed across all protocols
string
Total USD value of liquidity positions
object
Per-protocol position breakdown.
Show Protocol position object
Show Protocol position object
string
Protocol identifier
string
Chain the position lives on
string
lending or lpobject[]
Assets supplied (lending positions)
object[]
Assets borrowed (lending positions)
string
Liquidation health factor (lending).
null if no borrow.object[]
Liquidity pool positions.
Show LP position
Show LP position
integer
NFT token ID (Uniswap V3)
string
Pool address
string
First token symbol
string
Second token symbol
integer
Fee tier in bps (e.g. 500 = 0.05%)
integer
Lower price tick
integer
Upper price tick
integer
Current pool tick
boolean
Whether position is currently earning fees
string
Total USD value of liquidity
string
Accrued uncollected fees in USD
string
ISO 8601 timestamp of data fetch
curl -H "X-API-Key: YOUR_API_KEY" \
"https://api.0xradar.app/v1/positions/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?protocols=aave_v3,uniswap_v3"
import httpx
url = "https://api.0xradar.app/v1/positions/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
params = {"protocols": "aave_v3,uniswap_v3"}
headers = {"X-API-Key": "YOUR_API_KEY"}
data = httpx.get(url, params=params, headers=headers).json()
print(data["total_supplied_usd"])
const address = "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045";
const res = await fetch(
`https://api.0xradar.app/v1/positions/${address}?protocols=aave_v3,uniswap_v3`,
{ headers: { "X-API-Key": "YOUR_API_KEY" } }
);
const data = await res.json();
console.log(data.total_supplied_usd);
{
"address": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
"protocols_requested": ["aave_v3", "uniswap_v3"],
"total_supplied_usd": "42310.55",
"total_borrowed_usd": "18000.00",
"total_lp_value_usd": "9875.22",
"positions": [
{
"protocol": "aave_v3",
"chain": "ethereum",
"type": "lending",
"supplied": [
{
"symbol": "WETH",
"amount": "15.25",
"value_usd": "31440.73",
"apy": "0.82"
},
{
"symbol": "USDC",
"amount": "10869.82",
"value_usd": "10869.82",
"apy": "4.51"
}
],
"borrowed": [
{
"symbol": "USDC",
"amount": "18000.00",
"value_usd": "18000.00",
"apy": "5.22"
}
],
"health_factor": "2.35"
},
{
"protocol": "uniswap_v3",
"chain": "base",
"type": "lp",
"lp_positions": [
{
"token_id": 812043,
"pool": "0x4c36388be6f416a29c8d8eee81c771ce6be14b18",
"token0": "ETH",
"token1": "USDC",
"fee_tier": 500,
"tick_lower": -202900,
"tick_upper": -196400,
"current_tick": -199820,
"in_range": true,
"value_usd": "5312.44",
"uncollected_fees_usd": "47.18"
},
{
"token_id": 934217,
"pool": "0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640",
"token0": "WBTC",
"token1": "USDC",
"fee_tier": 3000,
"tick_lower": -65000,
"tick_upper": -62000,
"current_tick": -60100,
"in_range": false,
"value_usd": "4562.78",
"uncollected_fees_usd": "183.52"
}
]
}
],
"timestamp": "2026-05-28T09:15:00.000000"
}
Out-of-range LP positions
Whenin_range: false on a Uniswap V3 position, the position has drifted outside its configured price range. It is no longer earning swap fees and is fully composed of one token. Use this signal to alert users to re-range or close stale positions.
Python — filter out-of-range
out_of_range = [
pos
for proto in data["positions"]
if proto["type"] == "lp"
for pos in proto.get("lp_positions", [])
if not pos["in_range"]
]