portal.yield.yieldxyz API. This guide covers discovering yield opportunities, entering positions, managing existing positions, and exiting yield opportunities.
Overview
The yield functionality allows users to:- Discover available yield opportunities across different protocols and networks
- Enter yield positions by depositing tokens into yield opportunities
- Manage existing positions (claim rewards, voting, etc.)
- Exit yield positions to withdraw aggregated tokens and rewards
- Track yield balances and historical yield actions
Prerequisites
Before using yield operations, ensure you have:- A properly initialized Portal client
- An active wallet with the required token(s) on the target network (see Create a wallet)
- Yield.xyz integration enabled in your Portal Dashboard (see Yield.xyz Integration)
Discovering Yield Opportunities
Use thediscover method to find available yield opportunities.
For complete API documentation, see the Yield.xyz API reference.
Entering Yield Positions
To enter a yield position, first discover the specific yield, then use theenter method.
For complete API documentation, see the Yield.xyz enter yield reference.
For the example below, we will use the yield opportunity with the ID "ethereum-sepolia-link-aave-v3-lending". Fund your Portal client with the required LINK token to enter the position.
Checking Yield Balances
Retrieve current yield positions and balances. For complete API documentation, see the Yield.xyz get balances reference.We recommend always specifying a
yieldId on each balance query. When yieldId is provided, Yield.xyz can resolve balances directly, so you don’t need to call the track endpoint after entering or exiting positions.Exiting Yield Positions
Use theexit method to withdraw from yield positions.
For complete API documentation, see the Yield.xyz exit yield reference.
High-Level Methods
Usedeposit and withdraw when you want one call for the full flow: resolve the yield, build the action, sign and send each transaction in order, wait between steps when configured, and report hashes to Yield.xyz.
Specify the position with yieldId, or with chain (CAIP-2) + token (must match your Portal yield defaults). Both methods require amount and address. Optionally set arguments.
Signatures
Essential parameters
Second argument
YieldSubmitOptions:
Return value
Handling Results
Always check thestatus field to determine the outcome:
hashes array does NOT guarantee success. Always check status.
Strict confirmation semantics:
Yield operations use strict confirmation. Only waitForConfirmation(...) === true is considered success. The behavior for each confirmation result is:
true→ Transaction confirmed successfully. Execution continues to next step.false→ Transaction failed on-chain (e.g., receiptstatus: "0x0"indicates revert). Execution stops immediately and returnsstatus: 'FAILED'.- Throws or times out → Execution stops safely and returns
status: 'PARTIAL_SUCCESS'(if some transactions were confirmed) orstatus: 'FAILED'(if no transactions completed).
hashes— Transaction hashes submitted up to the point execution stopped.status— One ofSUCCESS,PARTIAL_SUCCESS, orFAILED.
portal.waitForConfirmation (or a custom implementation), the SDK detects on-chain failures by checking the transaction receipt:
status: "0x0") is never reported as SUCCESS.
Example (deposit with progress and poller tuning)
withdraw the same way with identical parameter shapes.
Example (custom confirmation logic)
Example (custom signer)
Get Validators
UsegetValidators() to fetch the validator addresses for a specific yieldId.These addresses are used for token approval flows.
React Native Example
Managing Yield Positions
If your Portal client has entered into a yield balance, they may have a yield balance that has an availablependingActions. You can use the manage method to perform actions on existing yield positions. For example, if the balance has a pendingAction of WITHDRAW or CLAIM_REWARDS, you can use the manage method to withdraw or claim rewards from the yield balance.
For complete API documentation, see the Yield.xyz manage yield reference.
Getting Historical Actions
Retrieve the history of yield actions for an address. For complete API documentation, see the Yield.xyz get actions reference.Transaction processing (low-level enter / exit / manage)
If you use deposit() or withdraw(), skip this section—the SDK already sequences transactions, waits between steps, and calls Yield.xyz tracking.
For manual flows that return raw transactions from enter, exit, or manage: process steps in order, and wait for inclusion before sending the next transaction (multi-step actions depend on prior txs mining; the high-level methods use portal.waitForConfirmation or your override between steps).
Use portal.waitForConfirmation(txHash, network) instead of reimplementing receipt polling. After the wait step, call portal.yield.yieldxyz.track(transactionId, txHash).
For complete API documentation, see the Yield.xyz submit transaction hash reference and get transaction details reference.
Getting Transaction Details
You can retrieve details about a specific transaction using thegetTransaction method:
Best Practices
- Always check the
statusfield in deposit/withdraw results to determine operation outcome (SUCCESS,PARTIAL_SUCCESS, orFAILED) - Always check yield availability before attempting to enter positions
- Prefer
deposit()/withdraw()when you want Portal to handle signing, confirmation between steps, and tracking—avoid copying receipt-poll loops from older examples - Process low-level transactions sequentially when using
enter/exit/managedirectly; later steps depend on earlier transactions being mined - Handle network errors gracefully and provide user feedback
- Monitor transaction status and provide progress updates to users (
onProgresson high-level methods) - Validate user balances before initiating yield operations
- Check for pending actions in balances before calling the manage method
- Test on testnets first (e.g., Sepolia) before moving to mainnet
Supported Networks
The yield functionality supports various networks including:- Monad (
eip155:143) - Monad Testnet (
eip155:10143) - Arbitrum (
eip155:42161) - Avalanche C (
eip155:43114) - Base (
eip155:8453) - Base Sepolia (
eip155:84532) - Celo (
eip155:42220) - Core (
eip155:1116) - Ethereum (
eip155:1) - Ethereum Sepolia (
eip155:11155111) - Fantom (
eip155:250) - Gnosis (
eip155:100) - Harmony (
eip155:1666600000) - Hyperevm (
eip155:999) - Katana (
eip155:747474) - Linea (
eip155:59144) - Moonriver (
eip155:1285) - Optimism (
eip155:10) - Optimism Sepolia (
eip155:11155420) - Plasma (
eip155:9745) - Polygon (
eip155:137) - Polygon Amoy (
eip155:80002) - Sonic (
eip155:146) - Unichain (
eip155:130) - Viction (
eip155:88) - zkSync (
eip155:324) - Solana (
solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp) - Solana Devnet (
solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1) - Stellar (
stellar:pubnet) - Stellar Testnet (
stellar:testnet) - Tron (
tron:mainnet)
Next Steps
- Learn about managing wallet lifecycle states
- Explore transaction simulation
- Check out Portal API methods