Check LP token approvals
npx skills add uniswap/uniswap-ai --skill liquidity-plannerPlan LP positions with deep links. Works with Claude Code, Cursor, and other AI coding tools.
Authorization
x-api-keystringrequiredheaderHeaders
x-agent-infostringOptional attribution hint for AI-agent traffic; send it if an AI agent built or operates your integration. The value is a JSON object with up to three fields: decision_origin (required, exactly autonomous or human_mediated, case-sensitive), integration_name (optional string naming your integration, e.g. my-trading-bot), and version (optional string identifying your integration's version). Any other key is dropped, never rejected. The raw value must be at most 1024 bytes of printable US-ASCII (0x20-0x7E), so send non-ASCII text as JSON \u escapes; integration_name and version are each limited to 256 UTF-16 code units and may not contain control characters, U+2028, U+2029, or U+FFFD. Send the header once: repeated header lines are joined with , and the joined string is what gets parsed, so two complete objects fail as invalid JSON while a single object split across two lines still parses. The header is analytics-only and never affects the request: omitting it, sending it, or sending a value that fails these rules never changes the response status, body, or swap behavior. A value that fails to parse is dropped and reported by the x-agent-info-status response header. Never put a user ID, wallet address, email, session token, or API key in these fields.
Body
application/jsonwalletAddressstringrequiredprotocolenumrequiredThe protocol of the pool.
chainIdenumrequireddefault:1The unique ID of the blockchain. For a list of supported chains see the FAQ.
actionenumrequiredThe LP operation that the approval is needed for.
includeGasInfobooleanIf true, the response will include gas fee estimates for each approval transaction.
simulateTransactionbooleanIf true, approval transactions will be simulated to verify they succeed.
generatePermitAsTransactionbooleanIf true, permits are returned as on-chain transactions rather than off-chain signatures.
urgencyenumThe urgency level for gas price estimation. Higher urgency results in higher gas price and faster transaction inclusion. Defaults to URGENT if not provided.
v3NftTokenIdintegerThe V3 NFT position token ID. Required when approving a V3 position for migration.
Response
LP approval check successful.
requestIdstringrequiredA unique ID for the request.
transactionsobject[]The approval transactions needed. Empty if all approvals are already in place.
v4BatchPermitDataobjectBatch permit data for V4 positions, if applicable.
v3NftPermitDataobjectNFT permit data for V3 positions, if applicable.
/lp/check_approvalcurl --request POST \
--url 'https://liquidity.api.uniswap.org/lp/check_approval' \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '{
"walletAddress": "<string>",
"protocol": "<enum>",
"chainId": 1,
"lpTokens": "<object[]>",
"action": "<enum>"
}'{ "requestId": "<string>", "transactions": [ { "transaction": { "to": "<string>", "from": "<string>", "data": "<string>", "value": "<string>", "gasLimit": "<string>", "chainId": "<number>", "maxFeePerGas": "<string>", "maxPriorityFeePerGas": "<string>", "gasPrice": "<string>" }, "cancelApproval": "<boolean>", "action": "<string>", "gasFee": "<string>" } ], "v4BatchPermitData": { "domain": {}, "values": {}, "types": {} }, "v3NftPermitData": { "domain": {}, "values": {}, "types": {} }}