V4 DEX Remove Liquidity
Remove liquidity from Uniswap V4 position NFTs. Supports partial removal (1-100%), full removal with NFT burning, and native ETH withdrawal. Specify position by token ID. Ideal for: exiting V4 positions, partial withdrawals, closing positions, native ETH retrieval.
Catalog action EVM Onchain wallet Gas send
Remove liquidity from Uniswap V4 position NFTs. Supports partial removal (1-100%), full removal with NFT burning, and native ETH withdrawal. Specify position by token ID. Ideal for: exiting V4 positions, partial withdrawals, closing positions, native ETH retrieval.
This action can require a wallet connector, gas, token movement, or an external side effect. Test with simulation or a controlled amount before using it in a live workflow.
At a Glance
| Field | Value |
|---|---|
| Action ID | v4-remove-liquidity |
| Category | EVM Onchain |
| Connector | wallet |
| Requires gas | Yes |
| Funds movement | send |
| Tags | blockchain, evm, dex, liquidity, lp, amm, defi, v4, uniswap, nft, withdraw |
Payload Schema
| Field | Type | Required | Description |
|---|---|---|---|
chainId | number | Yes | Chain |
tokenId | string | Yes | The NFT position token ID to remove liquidity from |
liquidityPercentage | number | No | Percentage of liquidity to remove (1-100). Default: 100 (remove all) |
amount0Min | string | No | Minimum amount of currency0 to receive. If not provided, calculated from slippage. |
amount1Min | string | No | Minimum amount of currency1 to receive. If not provided, calculated from slippage. |
slippageBps | number | No | Slippage tolerance in basis points (100 = 1%). Default: 50 (0.5%). Used when amount0Min/amount1Min not provided. |
deadlineMinutes | number | No | Transaction deadline in minutes from now. Default: 20 |
burnNft | boolean | No | Whether to burn the NFT after removing all liquidity. Default: false. Only works when removing 100% liquidity. |
positionManagerAddress | string | No | Optional custom PositionManager address. If not provided, uses default for the chain. |
Result Schema
| Field | Type | Required | Description |
|---|---|---|---|
status | string | Yes | - |
transactionHash | string | Yes | The transaction hash |
tokenId | string | No | NFT position token ID |
liquidityRemoved | string | No | Amount of liquidity removed |
burned | boolean | No | Whether the NFT was burned |
Examples
json{ "type": "v4-remove-liquidity", "payload": { "tokenId": "1", "chainId": 8453 }, "children": [], "connector": { "type": "wallet", "id": "conn_wallet" }}
bashcurl -X POST "https://api.b3os.org/v1/actions/v4-remove-liquidity/test" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "inputs": { "tokenId": "1", "chainId": 8453 }}'
Payload fields can use workflow expressions such as {{$trigger.body.amount}}, {{$nodes.fetch.result.price}}, and {{$props.asset}} when the value should come from a trigger, prior node, or reusable workflow prop.
