positions array defining your yield allocation strategy. You can source positions from the quote endpoint or specify them manually.
Create a portfolio wallet
| Field | Required | Description |
|---|---|---|
requestId | Yes | UUID v4 idempotency key |
label | Yes | Human-readable wallet name |
positions | Yes | Array of { positionKey, targetWeightBps }. Weights must sum to 10,000 bps. |
Wallet statuses
| Status | Meaning |
|---|---|
creating | Wallet is being provisioned (deposit addresses being generated) |
active | Ready to receive deposits and process withdrawals |
disabled | Suspended — deposits and withdrawals are blocked |
archived | Permanently closed |
creating to active once deposit addresses are provisioned (typically a few seconds).
Wallet response
| Field | Description |
|---|---|
balance.totalUsd | Total wallet value (principal + yield) across all positions |
balance.withdrawableUsd | Unreserved balance available for withdrawal |
balance.earnedUsd | Cumulative yield earned |
depositAddresses | Per-chain deposit addresses (supported chains) |
strategy.allocations | Target allocations (positionKey + pct percentage) |
strategy.status | aligned (holdings match targets) or rebalancing (drift correction in progress) |
positions | Current holdings with USD values per yield source |
Rebalancing and drift
Portfolio wallets use best-effort target weights. Over time (or after deposits/withdrawals), holdings can drift from targets. Thestrategy.status field shows whether the wallet is aligned or rebalancing.
The system periodically rebalances to bring positions back toward target weights. The drift trigger threshold is 200 bps.
For more on cash positions and how undeployed funds are handled, see Balances and Yield. For the relationship between bridge domains and withdrawal sourcing, see Bridge domains.
List wallets
Look up a wallet
Look up a wallet byrequestId or label:
Sandbox notes
In sandbox,depositAddresses.ethereum is a Sepolia address and depositAddresses.solana is a Solana devnet address. Position keys and request shapes are identical to production.
usdz is simulated in sandbox because USDZ is not available on testnets. The positionKey remains usdz for integration parity.
Next steps
- Deposits — fund the wallet and track deposit status
- Balances and Yield — monitor holdings, earnings, and activity
- Update Strategy — change the yield allocation after creation