V3 DEX Add Liquidity
Add concentrated liquidity to Uniswap V3 pools by minting a position NFT. Specify custom price ranges via tick bounds for capital efficiency. Multiple fee tiers (0.01%, 0.05%, 0.3%, 1%). Returns position NFT token ID. Ideal for: concentrated liquidity strategies, range orders, active LP management, fee optimization.
Catalog action EVM Onchain wallet Gas send
Add concentrated liquidity to Uniswap V3 pools by minting a position NFT. Specify custom price ranges via tick bounds for capital efficiency. Multiple fee tiers (0.01%, 0.05%, 0.3%, 1%). Returns position NFT token ID. Ideal for: concentrated liquidity strategies, range orders, active LP management, fee optimization.
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 | v3-add-liquidity |
| Category | EVM Onchain |
| Connector | wallet |
| Requires gas | Yes |
| Funds movement | send |
| Tags | blockchain, evm, dex, liquidity, lp, amm, defi, v3, uniswap, nft |
Payload Schema
| Field | Type | Required | Description |
|---|---|---|---|
chainId | number | Yes | Chain |
token0 | string | Yes | First token address. Will be sorted with token1 to determine actual token0/token1 order. Use 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE for native ETH. |
amount0Desired | string | No | Desired amount of token0 to add (in wei/smallest unit). At least one of amount0Desired or amount1Desired must be provided. |
token1 | string | Yes | Second token address. Will be sorted with token0 to determine actual token0/token1 order. Use 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE for native ETH. |
amount1Desired | string | No | Desired amount of token1 to add (in wei/smallest unit). At least one of amount0Desired or amount1Desired must be provided. |
fee | number | Yes | Pool fee tier in hundredths of a bip. Valid values: 100 (0.01%), 500 (0.05%), 3000 (0.3%), 10000 (1%) |
tickLower | number | No | Lower tick of the position. If not provided, uses full range. Must be a multiple of tick spacing for the fee tier. |
tickUpper | number | No | Upper tick of the position. If not provided, uses full range. Must be a multiple of tick spacing for the fee tier. |
slippageBps | number | No | Slippage tolerance in basis points (100 = 1%). Default: 50 (0.5%) |
deadlineMinutes | number | No | Transaction deadline in minutes from now. Default: 20 |
positionManagerAddress | string | No | Optional custom NonfungiblePositionManager 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 |
liquidity | string | No | Amount of liquidity minted |
amount0 | string | No | Actual amount of token0 added to the position |
amount1 | string | No | Actual amount of token1 added to the position |
tickLower | number | No | Lower tick of the position |
tickUpper | number | No | Upper tick of the position |
poolAddress | string | No | Address of the V3 pool |
Examples
json{ "type": "v3-add-liquidity", "payload": { "token0": "ETH", "token1": "ETH", "fee": 100, "chainId": 8453 }, "children": [], "connector": { "type": "wallet", "id": "conn_wallet" }}
bashcurl -X POST "https://api.b3os.org/v1/actions/v3-add-liquidity/test" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "inputs": { "token0": "ETH", "token1": "ETH", "fee": 100, "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.
