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"]
  }'
POSTPOST /api/v1/analyze/walletLive preview
Ready
Demo 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.