> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rhaios.com/llms.txt
> Use this file to discover all available pages before exploring further.

# POST /v1/yield/discover

> Discover and rank yield vaults with APY, risk, and TVL data.

# POST /v1/yield/discover

<Note>**Pricing policy** — \$0.01 per call via x402 when payment enforcement is enabled. Current pre-prod deployment keeps x402 disabled.</Note>

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

<ParamField body="chain" type="string" optional>
  Target chain key. Must be active in configuration.

  Default: `"base"`
</ParamField>

<ParamField body="asset" type="string" optional>
  Filter by underlying asset symbol (e.g. `"USDC"`, `"WETH"`). Omit for all assets.
</ParamField>

<ParamField body="strategy" type="enum" optional>
  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`, `balanced`

  Default: `"balanced"`
</ParamField>

<ParamField body="riskTolerance" type="enum" optional>
  Filter vaults by risk level. `"low"` excludes moderate/high risk vaults.

  Allowed values: `low`, `medium`, `high`
</ParamField>

<ParamField body="minApy" type="number" optional>
  Minimum current APY filter (e.g. `10` for 10%).
</ParamField>

<ParamField body="limit" type="number" optional>
  Maximum number of vaults to return (1-20).

  Default: `5`
</ParamField>

## Example

```bash theme={null}
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

```json theme={null}
{
  "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`
