Skip to main content

POST /v1/yield/discover

Pricing policy — $0.01 per call via x402 when payment enforcement is enabled. Current pre-prod deployment keeps x402 disabled.
Discover and rank yield vaults. Returns scored vault candidates with APY, risk, TVL, and Sharpe data. Use this endpoint to browse available vaults before committing to a deposit. Pass the returned vaultId to POST /v1/yield/prepare to deposit into a specific vault.

Parameters

chain
string
Target chain key. Must be active in configuration.Default: "base"
asset
string
Filter by underlying asset symbol (e.g. "USDC", "WETH"). Omit for all assets.
strategy
enum
Preset scoring mode that controls how vaults are ranked. These are fixed presets — custom ranking weights are not supported.Allowed values: maximize_apy, minimize_risk, balancedDefault: "balanced"
riskTolerance
enum
Filter vaults by risk level. "low" excludes moderate/high risk vaults.Allowed values: low, medium, high
minApy
number
Minimum current APY filter (e.g. 10 for 10%).
limit
number
Maximum number of vaults to return (1-20).Default: 5

Example

curl -X POST https://api.staging.rhaios.com/v1/yield/discover \
  -H "Content-Type: application/json" \
  -d '{
    "chain": "base",
    "asset": "USDC",
    "strategy": "balanced",
    "minApy": 10,
    "limit": 3
  }'

Response

{
  "chain": "base",
  "chainId": 8453,
  "strategy": "balanced",
  "count": 3,
  "vaults": [
    {
      "vaultId": "42",
      "vaultAddress": "0x1234...abcd",
      "name": "Aave V3 USDC",
      "protocol": "aave",
      "asset": "USDC",
      "chain": "base",
      "apy": { "now": 11.8, "week": 11.2, "month": 10.5 },
      "risk": { "score": 0.15, "level": "low", "rating": "A" },
      "sharpe": { "week": 2.1, "month": 1.8 },
      "tvlUsd": 45000000,
      "tier": "S",
      "compositeScore": 87.3
    }
  ]
}

Workflow

  1. Call POST /v1/yield/discover to browse vaults
  2. Pick a vault from the results
  3. Call POST /v1/yield/prepare with the chosen vaultId to prepare execution calldata
  4. Sign and submit via POST /v1/yield/execute