{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/blockdaemon/main/json-schema/blockdaemon-dex-removeliquidity-request-schema.json",
  "title": "_dex_removeliquidity_Request",
  "description": "The request body for a /defi/v1/dex/removeliquidity",
  "x-generated": "2026-10-14",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/blockdaemon-defi-api-openapi.yml#/components/schemas/_dex_removeliquidity_Request",
  "type": "object",
  "properties": {
    "dexId": {
      "type": "string",
      "description": "The unique ID to specify the decentralized exchange (DEX) within a particular blockchain. Find more [here](https://docs.blockdaemon.com/docs/defi-api-supported-protocols#supported-dexs-protocols).",
      "enum": [
        "1000",
        "1001",
        "1300",
        "1301",
        "1305",
        "1306",
        "1307",
        "1308",
        "1309",
        "1310",
        "1100",
        "1101",
        "1200",
        "1201",
        "2900",
        "2901",
        "2800",
        "2808",
        "2809",
        "1500",
        "1400",
        "1402",
        "2300",
        "2100",
        "2101",
        "2500",
        "2501",
        "2700",
        "2400",
        "2401",
        "3000",
        "3001",
        "3300",
        "3301",
        "3500",
        "3501",
        "3400",
        "3401",
        "3600"
      ]
    },
    "tokenA": {
      "type": "string",
      "description": "Address of the first token being removed."
    },
    "tokenB": {
      "type": "string",
      "description": "Address of the second token being removed."
    },
    "liquidity": {
      "type": "string",
      "description": "Amount of liquidity pool (LP) tokens to remove, specified in the token's smallest denomination (base units). Examples: 1 LP token (18 decimals) = \"1000000000000000000\"."
    },
    "amountAMin": {
      "type": "string",
      "description": "Minimum acceptable amount of token A in the token's smallest denomination (base units). Provides slippage protection — the transaction reverts if the deposited amount falls below this value. Set to \"0\" to disable slippage protection."
    },
    "amountBMin": {
      "type": "string",
      "description": "Minimum acceptable amount of token B in the token's smallest denomination (base units). Provides slippage protection — the transaction reverts if the deposited amount falls below this value. Set to \"0\" to disable slippage protection."
    },
    "deadline": {
      "type": "string",
      "description": "Deadline for the transaction to be executed (UNIX Timestamp)."
    },
    "to": {
      "type": "string",
      "description": "Address of the recipient of the token."
    },
    "from": {
      "type": "string",
      "description": "Address of the sender of the token."
    },
    "gas": {
      "type": "string",
      "description": "Maximum number of gas units to allocate for the transaction, as an integer string (e.g., '200000'). If omitted, gas is estimated automatically. Note: this is gas units, not wei or gwei."
    },
    "gasPriority": {
      "type": "string",
      "description": "Specifies the priority level for gas fees (e.g., 'low', 'medium', or 'high'), which influences the transaction speed and cost."
    },
    "slippage": {
      "type": "string",
      "description": "Percentage of total value allowed for slippage. Default is 1. Range: 0 <= slippage <= 100."
    },
    "enableFee": {
      "type": "boolean",
      "description": "Flag to include a basis points fee transaction alongside the main transaction when set to true."
    },
    "tokenId": {
      "type": "string",
      "description": "The token ID for Uniswap V3 liquidity position."
    },
    "amountAMax": {
      "type": "string",
      "description": "Maximum amount of token A in the token's smallest denomination (base units)."
    },
    "amountBMax": {
      "type": "string",
      "description": "Maximum amount of token B in the token's smallest denomination (base units)."
    },
    "recipient": {
      "type": "string",
      "description": "Recipient for sweep tokens."
    },
    "amountADesired": {
      "type": "string",
      "description": "Desired amount of token A to add as liquidity, specified in the token's smallest denomination (base units). Do not send human-readable decimal values. Examples: 1 WETH (18 decimals) = \"1000000000000000000\"; 1 USDC (6 decimals) = \"1000000\"."
    },
    "amountBDesired": {
      "type": "string",
      "description": "Desired amount of token B to add as liquidity, specified in the token's smallest denomination (base units). Do not send human-readable decimal values. Examples: 1 WETH (18 decimals) = \"1000000000000000000\"; 1 USDC (6 decimals) = \"1000000\"."
    },
    "path": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Array of token contract addresses for the liquidity pool. Provide [tokenAAddress, tokenBAddress]. Example (LINK/USDC): ['0x514910771AF9Ca656af840dff83E8264EcF986CA', '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48']."
    },
    "amountIn": {
      "type": "string",
      "description": "Amount of tokens to add as liquidity, specified in the token's smallest denomination (base units). Do not send human-readable decimal values. Examples: 1 WETH (18 decimals) = \"1000000000000000000\"; 1 USDC (6 decimals) = \"1000000\"."
    },
    "amountOut": {
      "type": "string",
      "description": "Amount of the output token to receive, specified in the token's smallest denomination (base units). Do not send human-readable decimal values. Examples: 1 WETH (18 decimals) = \"1000000000000000000\"; 1 USDC (6 decimals) = \"1000000\"."
    },
    "toInternalBalance": {
      "type": "string",
      "description": "True if receiving tokens as internal token balances. False if receiving as ERC20."
    },
    "binStep": {
      "type": "string",
      "description": "Difference between two consecutive bins."
    },
    "ids": {
      "type": "string",
      "description": "Bin IDs that liquidity should be removed from."
    },
    "amounts": {
      "type": "string",
      "description": "Array of token amounts to remove as liquidity, each specified in the token's smallest denomination (base units). Examples: 1 WETH (18 decimals) = \"1000000000000000000\"; 1 USDC (6 decimals) = \"1000000\"."
    },
    "positionNFT": {
      "type": "string",
      "description": "LP token that represents a position in a pool."
    },
    "poolAddress": {
      "type": "string",
      "description": "The address of the pool."
    },
    "amountOutMin": {
      "type": "string",
      "description": "Minimum acceptable output amount in the token's smallest denomination (base units). Provides slippage protection — the transaction reverts if the output falls below this value. Set to \"0\" to disable slippage protection. Examples: to require at least 0.99 USDC (6 decimals), use \"990000\"; to require at least 0.99 WETH (18 decimals), use \"990000000000000000\"."
    },
    "poolFees": {
      "type": "string",
      "description": "Different pool based on the fees. By default, it is selected as 2500."
    }
  },
  "required": [
    "tokenA",
    "tokenB",
    "liquidity",
    "amountAMin",
    "amountBMin",
    "deadline",
    "to",
    "from",
    "tokenId",
    "amountADesired",
    "amountBDesired",
    "path",
    "gas",
    "amountIn",
    "amountOut",
    "toInternalBalance",
    "binStep",
    "ids",
    "amounts",
    "positionNFT",
    "poolAddress"
  ]
}