Available yield sources
Fetch the current catalog withGET /v2/portfolio-wallets/yield-sources:
| Position key | Type | Chain | Liquidity | Description |
|---|---|---|---|---|
usdz | stablecoinYield | Arbitrum | Instant (PT0H) | USDZ — an M0 wM extension token collateralized by T-bills |
syrupUsdc | overcollateralizedLending | Ethereum | Instant (PT0H) | Maple Syrup overcollateralized lending |
rlp | deltaNeutralStrategy | Ethereum | Up to 24h (PT24H) | Resolv delta-neutral strategy |
Rate semantics
currentRateBpsis a best-effort 30-day APR (simple annualization) derived from the yield source’s oracle NAV/share history.rateUpdatedAtis when the server last refreshed the computed rate.usdzis currently treated as a static rate (3.3%) until a dedicated rate oracle is introduced.
NAV freshness
syrupUsdcis valued from an onchain ERC-4626 conversion read at request time, so displayed value is typically as fresh as the latest Ethereum block.rlpis valued from Resolv’s oracle feed; fundamental oracle values update every ~24 hours, so displayed NAV can be up to ~24 hours old.- Neither source should be treated as a guaranteed 1:1 USDC peg at every instant; small valuation differences can occur from oracle/NAV timing.
maxProcessingTime and ISO 8601 durations
Braid represents liquidity speed as ISO 8601 duration strings. These are durations (how long something may take), not timestamps and not an SLA.
| Duration | Meaning |
|---|---|
PT0H | Immediate (0 hours) |
PT0S | Zero seconds (step-level timing) |
PT20S | ~20 seconds |
PT2M | ~2 minutes |
PT1H | ~1 hour |
PT1H30M | ~1 hour 30 minutes |
PT24H | Up to ~24 hours |
P1D | 1 day |
D, H, M, S. No calendar-ambiguous units (months/years).
maxProcessingTime describes yield-source unwind time only. End-to-end time-to-receive can be longer when cross-chain delivery (e.g. CCTP) is involved. Use withdrawal time estimates for end-to-end planning.
Quote a strategy
Use the quote endpoint to generate a suggested allocation given your constraints.Request fields
| Field | Required | Description |
|---|---|---|
requestId | Yes | UUID v4 idempotency key |
minApyTargetBps | No | Minimum blended APY in basis points |
liquidityConstraints | No | Array of { maxProcessingTime, minWeightBps } — treated as “up to” constraints |
yieldSourceTypes | No | Filter by yield source type |
exclusions | No | Exclude specific yield sources by positionKey |
withdrawalDestination | No | Attach end-to-end withdrawal time estimates to results |
Response
strategyConfig.positionsis returned ordered from lowestcurrentApyto highest for stable client rendering.- Use the returned
strategyConfig.positionsas thepositionsinput toPOST /v2/portfolio-wallets. - If
withdrawalDestinationis provided, the response includeswithdrawalTimeEstimateswith per-position end-to-end estimates.
Estimate withdrawal times
If you already know which positions you want, estimate end-to-end withdrawal times directly:Request fields
| Field | Required | Description |
|---|---|---|
destinationToken | Yes | Destination token (only usdc today) |
destinationChain | Yes | Destination chain (ethereum, arbitrum, base, polygon, optimism, avalanche) |
positions | Yes | Array of positions (same shape as POST /v2/portfolio-wallets) |
Response
unwind_liquidity, convert_to_usdc, bridge_cctp, payout_transfer_and_finality) with p50, p90, and max durations. fullSettlementTime is the aggregate.
Reading an estimate: "p90": "PT1H30M" means “90th percentile is about 1 hour 30 minutes”. These are best-effort estimates, not an SLA.