Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.privy.io/llms.txt

Use this file to discover all available pages before exploring further.

Redeem vault shares and return assets — plus any accrued yield — to the wallet using the withdraw endpoint. The returned amount reflects the original deposit plus yield earned.
View the full API reference for the withdraw endpoint.
If your app has gas sponsorship configured, usage of the /earn/ethereum/withdraw endpoint will be gas-sponsored by default. There is no need to specify additional parameters for sponsorship.

Withdrawal amount

Your app can withdraw any amount up to the wallet’s current assets_in_vault balance. To withdraw everything, query the wallet’s position first and pass the full assets_in_vault value as the raw_amount. Because yield accrues continuously, the redeemable balance may be slightly higher at withdrawal time than when the position was last queried.
For a full withdrawal, your app can read the wallet’s assets_in_vault from the position endpoint and pass that value directly. Any additional yield accrued between the query and the withdrawal will remain in the vault as residual shares.

Liquidity considerations

Withdrawals depend on available liquidity in the underlying vault. Your app should check the vault’s available_liquidity_usd from the get vault details endpoint before initiating large withdrawals.

Usage

Use the withdraw convenience method on the earn ethereum service to withdraw assets from a vault.
const response = await privy.wallets().earn().ethereum().withdraw('insert-wallet-id', {
  vault_id: '<your-vault-id>',
  amount: '1.05',
  authorization_context: {
    authorization_private_keys: ['<authorization-private-key>'],
  },
});
The method returns an EarnWithdrawActionResponse with the pending wallet action. Poll the status with get wallet action, or listen for the wallet_action.earn_withdraw.succeeded webhook.
Track the withdrawal by polling get wallet action or listening for the wallet_action.earn_withdraw.succeeded webhook.

Claim reward incentives

Some vaults distribute additional token incentives on top of base yield. Collect these with the claim endpoint. Claims operate at the chain level — pass a chain name rather than a vault ID. For apps with multiple vaults on the same chain, a single claim collects rewards across all vaults.

Usage

Use the claim convenience method on the earn ethereum incentive service to claim reward incentives.
const response = await privy.wallets().earn().ethereum().incentive().claim('insert-wallet-id', {
  chain: 'base',
  authorization_context: {
    authorization_private_keys: ['<authorization-private-key>'],
  },
});
The method returns an EarnIncentiveClaimActionResponse with the pending wallet action. Claims operate at the chain level and collect rewards across all vaults on the specified chain.
A rejected status means the action failed before any transaction was signed or broadcast — for example, due to insufficient balance or a policy violation. Your app can safely retry the request. A failed status means a transaction was broadcast but reverted onchain. Inspect the action’s steps for details.

Next steps

Claim rewards

Collect additional token incentives distributed by the vault.