---
title: "Check if tokens and permits need to be approved to add liquidity"
method: POST
path: "/lp/approve"
tags: ["Liquidity"]
---

# Check if tokens and permits need to be approved to add liquidity

`POST /lp/approve`

Checks if the wallet address has the required approvals. If the wallet address does not have the required approval, then the response will include the transactions to approve the tokens. If the wallet address has the required approval, then the response will be empty for the corresponding tokens. If the parameter `simulateTransaction` is set to `true`, then the response will include the gas fees for the approval transactions.

Note that approval is required for both creating and removing positions in V2 pools. Approval is only required for creating positions in V3 and V4 pools.

## Request body

- CheckApprovalLPRequest
  - `protocol` 'V2' | 'V3' | 'V4' | 'UNISWAPX' | 'UNISWAPX_V2' | 'UNISWAPX_V3' — The protocol to use for the swap/order.
  - `token0` string — The token which will be sent, specified by its token address. For a list of supported tokens, see the [FAQ](https://uniswap-docs.readme.io/reference/faqs).
  - `token1` string — The token which will be sent, specified by its token address. For a list of supported tokens, see the [FAQ](https://uniswap-docs.readme.io/reference/faqs).
  - `positionToken` string — The address of the NFT representing the position. Required when requesting approval for removing liquidity from a V2 position (provide address of V2 NFT). Required when requesting approval for migrating a V3 position to a V4 position (provide address of V3 NFT).
  - `chainId` 1 | 10 | 56 | 130 | 137 | 324 | 480 | 1868 | 8453 | 10143 | 42161 | 42220 | 43114 | 81457 | 7777777 | 1301 | 84532 | 11155111 | 143 | 196 — The unique ID of the blockchain. For a list of supported chains see the [FAQ](https://uniswap-docs.readme.io/reference/faqs).
  - `walletAddress` string
  - `amount0` string — The amount of token0 to be added or removed from the position. To estimate the amount of token0 needed when adding a new position, use the /lp/create endpoint to simulate the position creation.
  - `amount1` string — The amount of token1 to be added or removed from the position. To estimate the amount of token1 needed when adding a new position, use the /lp/create endpoint to simulate the position creation.
  - `generatePermitAsTransaction` boolean — Dictates whether you receive permits to sign or permit approval transactions to submit onchain for your wallet in order to swap or LP. If set to true, the response will include an approval transaction depending on your allowance. If set to false you would receive a permit to sign depending on your allowance. The default is false.
  - `positionAmount` string — Only required when getting approval for removing a V2 position. Populated with the amount of the V2 position to be removed (eg. amount0*amount1).
  - `simulateTransaction` boolean

## Response `200`

Approve LP successful.

- CheckApprovalLPResponse
  - `requestId` string — A unique ID for the request.
  - `token0Approval` TransactionRequest
    - `to` string, required — The wallet address which will receive the token.
    - `from` string, required — The wallet address which will be used to send the token.
    - `data` string, required — The calldata for the transaction.
    - `value` string, required — The quantity of ETH tokens approved for spending by the transaction, denominated in wei. Note that by default Uniswap Labs sets this to the maximum approvable spend.
    - `gasLimit` string — The maximum units of gas that will be consumed by this transaction.
    - `chainId` 1 | 10 | 56 | 130 | 137 | 324 | 480 | 1868 | 8453 | 10143 | 42161 | 42220 | 43114 | 81457 | 7777777 | 1301 | 84532 | 11155111 | 143 | 196, required — The unique ID of the blockchain. For a list of supported chains see the [FAQ](https://uniswap-docs.readme.io/reference/faqs).
    - `maxFeePerGas` string — The sum of the base fee and priority fee. Subtracting `maxPriorityFeePerGas` from this value will yield the base fee to be paid for this transaction.
    - `maxPriorityFeePerGas` string — The maximum tip to the block builder. Adjusted based upon the urgency specified in the request.
    - `gasPrice` string — The cost per unit of gas.
  - `token1Approval` TransactionRequest
    - `to` string, required — The wallet address which will receive the token.
    - `from` string, required — The wallet address which will be used to send the token.
    - `data` string, required — The calldata for the transaction.
    - `value` string, required — The quantity of ETH tokens approved for spending by the transaction, denominated in wei. Note that by default Uniswap Labs sets this to the maximum approvable spend.
    - `gasLimit` string — The maximum units of gas that will be consumed by this transaction.
    - `chainId` 1 | 10 | 56 | 130 | 137 | 324 | 480 | 1868 | 8453 | 10143 | 42161 | 42220 | 43114 | 81457 | 7777777 | 1301 | 84532 | 11155111 | 143 | 196, required — The unique ID of the blockchain. For a list of supported chains see the [FAQ](https://uniswap-docs.readme.io/reference/faqs).
    - `maxFeePerGas` string — The sum of the base fee and priority fee. Subtracting `maxPriorityFeePerGas` from this value will yield the base fee to be paid for this transaction.
    - `maxPriorityFeePerGas` string — The maximum tip to the block builder. Adjusted based upon the urgency specified in the request.
    - `gasPrice` string — The cost per unit of gas.
  - `token0Cancel` TransactionRequest
    - `to` string, required — The wallet address which will receive the token.
    - `from` string, required — The wallet address which will be used to send the token.
    - `data` string, required — The calldata for the transaction.
    - `value` string, required — The quantity of ETH tokens approved for spending by the transaction, denominated in wei. Note that by default Uniswap Labs sets this to the maximum approvable spend.
    - `gasLimit` string — The maximum units of gas that will be consumed by this transaction.
    - `chainId` 1 | 10 | 56 | 130 | 137 | 324 | 480 | 1868 | 8453 | 10143 | 42161 | 42220 | 43114 | 81457 | 7777777 | 1301 | 84532 | 11155111 | 143 | 196, required — The unique ID of the blockchain. For a list of supported chains see the [FAQ](https://uniswap-docs.readme.io/reference/faqs).
    - `maxFeePerGas` string — The sum of the base fee and priority fee. Subtracting `maxPriorityFeePerGas` from this value will yield the base fee to be paid for this transaction.
    - `maxPriorityFeePerGas` string — The maximum tip to the block builder. Adjusted based upon the urgency specified in the request.
    - `gasPrice` string — The cost per unit of gas.
  - `token1Cancel` TransactionRequest
    - `to` string, required — The wallet address which will receive the token.
    - `from` string, required — The wallet address which will be used to send the token.
    - `data` string, required — The calldata for the transaction.
    - `value` string, required — The quantity of ETH tokens approved for spending by the transaction, denominated in wei. Note that by default Uniswap Labs sets this to the maximum approvable spend.
    - `gasLimit` string — The maximum units of gas that will be consumed by this transaction.
    - `chainId` 1 | 10 | 56 | 130 | 137 | 324 | 480 | 1868 | 8453 | 10143 | 42161 | 42220 | 43114 | 81457 | 7777777 | 1301 | 84532 | 11155111 | 143 | 196, required — The unique ID of the blockchain. For a list of supported chains see the [FAQ](https://uniswap-docs.readme.io/reference/faqs).
    - `maxFeePerGas` string — The sum of the base fee and priority fee. Subtracting `maxPriorityFeePerGas` from this value will yield the base fee to be paid for this transaction.
    - `maxPriorityFeePerGas` string — The maximum tip to the block builder. Adjusted based upon the urgency specified in the request.
    - `gasPrice` string — The cost per unit of gas.
  - `positionTokenApproval` TransactionRequest
    - `to` string, required — The wallet address which will receive the token.
    - `from` string, required — The wallet address which will be used to send the token.
    - `data` string, required — The calldata for the transaction.
    - `value` string, required — The quantity of ETH tokens approved for spending by the transaction, denominated in wei. Note that by default Uniswap Labs sets this to the maximum approvable spend.
    - `gasLimit` string — The maximum units of gas that will be consumed by this transaction.
    - `chainId` 1 | 10 | 56 | 130 | 137 | 324 | 480 | 1868 | 8453 | 10143 | 42161 | 42220 | 43114 | 81457 | 7777777 | 1301 | 84532 | 11155111 | 143 | 196, required — The unique ID of the blockchain. For a list of supported chains see the [FAQ](https://uniswap-docs.readme.io/reference/faqs).
    - `maxFeePerGas` string — The sum of the base fee and priority fee. Subtracting `maxPriorityFeePerGas` from this value will yield the base fee to be paid for this transaction.
    - `maxPriorityFeePerGas` string — The maximum tip to the block builder. Adjusted based upon the urgency specified in the request.
    - `gasPrice` string — The cost per unit of gas.
  - `permitData` NullablePermit, nullable — the permit2 message object for the customer to sign to permit spending by the permit2 contract.
    - `domain` object
    - `values` object
    - `types` object
  - `token0PermitTransaction` TransactionRequest
    - `to` string, required — The wallet address which will receive the token.
    - `from` string, required — The wallet address which will be used to send the token.
    - `data` string, required — The calldata for the transaction.
    - `value` string, required — The quantity of ETH tokens approved for spending by the transaction, denominated in wei. Note that by default Uniswap Labs sets this to the maximum approvable spend.
    - `gasLimit` string — The maximum units of gas that will be consumed by this transaction.
    - `chainId` 1 | 10 | 56 | 130 | 137 | 324 | 480 | 1868 | 8453 | 10143 | 42161 | 42220 | 43114 | 81457 | 7777777 | 1301 | 84532 | 11155111 | 143 | 196, required — The unique ID of the blockchain. For a list of supported chains see the [FAQ](https://uniswap-docs.readme.io/reference/faqs).
    - `maxFeePerGas` string — The sum of the base fee and priority fee. Subtracting `maxPriorityFeePerGas` from this value will yield the base fee to be paid for this transaction.
    - `maxPriorityFeePerGas` string — The maximum tip to the block builder. Adjusted based upon the urgency specified in the request.
    - `gasPrice` string — The cost per unit of gas.
  - `token1PermitTransaction` TransactionRequest
    - `to` string, required — The wallet address which will receive the token.
    - `from` string, required — The wallet address which will be used to send the token.
    - `data` string, required — The calldata for the transaction.
    - `value` string, required — The quantity of ETH tokens approved for spending by the transaction, denominated in wei. Note that by default Uniswap Labs sets this to the maximum approvable spend.
    - `gasLimit` string — The maximum units of gas that will be consumed by this transaction.
    - `chainId` 1 | 10 | 56 | 130 | 137 | 324 | 480 | 1868 | 8453 | 10143 | 42161 | 42220 | 43114 | 81457 | 7777777 | 1301 | 84532 | 11155111 | 143 | 196, required — The unique ID of the blockchain. For a list of supported chains see the [FAQ](https://uniswap-docs.readme.io/reference/faqs).
    - `maxFeePerGas` string — The sum of the base fee and priority fee. Subtracting `maxPriorityFeePerGas` from this value will yield the base fee to be paid for this transaction.
    - `maxPriorityFeePerGas` string — The maximum tip to the block builder. Adjusted based upon the urgency specified in the request.
    - `gasPrice` string — The cost per unit of gas.
  - `positionTokenPermitTransaction` TransactionRequest
    - `to` string, required — The wallet address which will receive the token.
    - `from` string, required — The wallet address which will be used to send the token.
    - `data` string, required — The calldata for the transaction.
    - `value` string, required — The quantity of ETH tokens approved for spending by the transaction, denominated in wei. Note that by default Uniswap Labs sets this to the maximum approvable spend.
    - `gasLimit` string — The maximum units of gas that will be consumed by this transaction.
    - `chainId` 1 | 10 | 56 | 130 | 137 | 324 | 480 | 1868 | 8453 | 10143 | 42161 | 42220 | 43114 | 81457 | 7777777 | 1301 | 84532 | 11155111 | 143 | 196, required — The unique ID of the blockchain. For a list of supported chains see the [FAQ](https://uniswap-docs.readme.io/reference/faqs).
    - `maxFeePerGas` string — The sum of the base fee and priority fee. Subtracting `maxPriorityFeePerGas` from this value will yield the base fee to be paid for this transaction.
    - `maxPriorityFeePerGas` string — The maximum tip to the block builder. Adjusted based upon the urgency specified in the request.
    - `gasPrice` string — The cost per unit of gas.
  - `gasFeeToken0Approval` string — The total estimated gas cost of this transaction (eg. `gasLimit` multiplied by `maxFeePerGas`) in the base unit of the chain.
  - `gasFeeToken1Approval` string — The total estimated gas cost of this transaction (eg. `gasLimit` multiplied by `maxFeePerGas`) in the base unit of the chain.
  - `gasFeePositionTokenApproval` string — The total estimated gas cost of this transaction (eg. `gasLimit` multiplied by `maxFeePerGas`) in the base unit of the chain.
  - `gasFeeToken0Cancel` string — The total estimated gas cost of this transaction (eg. `gasLimit` multiplied by `maxFeePerGas`) in the base unit of the chain.
  - `gasFeeToken1Cancel` string — The total estimated gas cost of this transaction (eg. `gasLimit` multiplied by `maxFeePerGas`) in the base unit of the chain.
  - `gasFeeToken0Permit` string — The total estimated gas cost of this transaction (eg. `gasLimit` multiplied by `maxFeePerGas`) in the base unit of the chain.
  - `gasFeeToken1Permit` string — The total estimated gas cost of this transaction (eg. `gasLimit` multiplied by `maxFeePerGas`) in the base unit of the chain.
  - `gasFeePositionTokenPermit` string — The total estimated gas cost of this transaction (eg. `gasLimit` multiplied by `maxFeePerGas`) in the base unit of the chain.

## Other responses

- `400` — RequestValidationError, Bad Input
- `401` — UnauthorizedError eg. Account is blocked.
- `404` — ResourceNotFound eg. Token allowance not found or Gas info not found.
- `419` — Ratelimited
- `500` — Unexpected error
- `504` — Request duration limit reached.

---

[API](https://skmtc.net/uniswap/apis/token-trading.md) · [All operations](https://skmtc.net/uniswap/apis/token-trading/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/uniswap/token-trading/versions/55533f9bd1ab/schema)
