API Reference
Analyze wallet
POST endpoint that takes an Ethereum or Solana wallet address, computes its RWA exposure, and returns positions plus a four-axis risk score.
Request
POST /api/v1/analyze/wallet. Body is JSON.
NameTypeDescription
address*
string
Ethereum 0x… or Solana base58 address
chains
string[] of "ethereum" | "solana"
Defaults to inferring from address shape
language
"en" | "ru" | "pl"
Locale for the AI explanation when requested
Example
curl -X POST https://radar.oxar.app/api/v1/analyze/wallet \
-H "Authorization: Bearer rdr_live_..." \
-H "Content-Type: application/json" \
-d '{
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"chains": ["ethereum"]
}'POST
ReadyPOST /api/v1/analyze/walletLive previewDemo wallet
radar.oxar.app/analyze
Run the request to see the response from radar.oxar.app.
Response
200 OK
{
"totalValueUsd": 153400,
"weightedApyBps": 612,
"positions": [
{
"protocolSlug": "ondo-usdy",
"protocolName": "Ondo USDY",
"chain": "ethereum",
"balance": 90000,
"valueUsd": 99000,
"yieldApyBps": 480
}
],
"concentrationByProtocol": { "ondo-usdy": 0.645, "maple-finance": 0.355 },
"concentrationByChain": { "ethereum": 1.0, "solana": 0 },
"riskScore": {
"overall": 6,
"counterpartyRisk": "medium",
"concentrationRisk": "medium",
"smartContractRisk": "medium",
"liquidityRisk": "medium"
},
"analyzedAt": 1779020201264
}Risk axes
The risk score is composed of four independent dimensions, each one of low / medium / high / critical.
- Counterparty risk — solvency of the issuer. BlackRock and US-treasury-backed issuers sit at the low end.
- Concentration risk — share of the portfolio in a single protocol or single issuer.
- Smart contract risk — audit coverage, upgrade authority, time live, pause/freeze powers.
- Liquidity risk — redemption mechanics. Daily-redemption stables sit at the low end, weekly NAV-only withdrawals at the high.
Caching
Wallet analyses are cached for 5 minutes per address. A repeat request inside that window returns the same response without hitting Alchemy or Helius.
Cache is per-wallet plus per-chain set. Asking for chains: ["ethereum"] and then chains: ["ethereum", "solana"] are two separate cache entries.