---
title: "Create DEX Swap Transaction"
method: POST
path: "/defi/v1/dex/swap"
tags: ["dex"]
---

# Create DEX Swap Transaction

`POST /defi/v1/dex/swap`

## Request

- Base URL: `https://svc.blockdaemon.com`
- URL: `https://svc.blockdaemon.com/defi/v1/dex/swap`
- Auth: API key in header `X-API-Key`

Enables users to perform token swaps on a DEX by supplying source tokens, desired output tokens, and other trade parameters. This endpoint calculates the optimal path (or uses a given path) across liquidity pools, then returns key details such as the route taken, final amounts, and any additional transaction data needed to finalize the swap on-chain. It is particularly useful for DeFi integrations that require seamless conversions between multiple ERC20 tokens within a single request.

> 💡 
**Compute Unit Value:** `55` (Fixed)

## Request body

- DexSwapRequest: The request body for a /defi/v1/dex/swap
  - `dexId` '1000' | '1001' | '1900' | '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' | '2600' | '2400' | '2401' | '1600' | '1602' | '1604' | '1605' | '1607' | '1608' | '1700' | '1701' | '1702' | '1703' | '1704' | '1706' | '1707' | '2200' | '2201' | '2202' | '2203' | '2204' | '2205' | '2206' | '3000' | '3001' | '3100' | '3300' | '3301' | '3500' | '3501' | '3400' | '3401' | '3600' | '3800' | '3700': 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).
  - `path` string[], required: Ordered array of token contract addresses defining the swap route. Provide [tokenInAddress, tokenOutAddress] for a direct swap. Example (WETH→USDC on Ethereum): ['0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'].
  - `amountIn` string, required: Amount of the input token to provide, specified in the token's smallest denomination (base units). Do not send human-readable decimal values. Examples: to swap 1 WETH (18 decimals), use "1000000000000000000"; to swap 1 USDC (6 decimals), use "1000000".
  - `amountOutMin` string: 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".
  - `to` string, required: Blockchain address of the token recipient. For EVM chains, use a checksummed hex address (e.g., 0xABCDEF...). Output tokens are delivered to this address after the swap.
  - `deadline` string, required: Transaction expiry time as a Unix timestamp in seconds (not milliseconds). The transaction will revert if not submitted before this time. Example: to set a 20-minute deadline, use current Unix timestamp + 1200.
  - `from` string, required: Blockchain address of the token sender. For EVM chains, use a checksummed hex address (e.g., 0xABCDEF...). This address must hold sufficient balance of the input token and will sign the transaction.
  - `gas` string: 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` string: Specifies the priority level for gas fees (e.g., 'low', 'medium', or 'high'), which influences the transaction speed and cost.
  - `slippage` string: Maximum acceptable slippage as a percentage of the swap value. Valid range: 0 to 100 (e.g., 1 = up to 1% slippage). Defaults to 1. The transaction reverts if the output deviates more than this percentage from the quoted price.
  - `enableFee` boolean: Flag to include a basis points fee transaction alongside the main transaction when set to true.
  - `batchOption` 'EIP-5792' | 'EIP-7702': Transaction batching standard to use. Supported values: 'EIP-5792' (wallet-level batching via wallet_sendCalls) or 'EIP-7702' (EOA code delegation via batcherContract). Requires batcherContract when using EIP-7702.
  - `batcherContract` string: The EOA address of the batcher that will be used to execute the transaction when using EIP-7702 batching. If not provided, the default batcher contract for the chain will be used.
  - `simulate` boolean: When true, dry-runs the transaction batch via eth_simulateV1 and returns a simulate field with status and error on each transaction.
  - `poolFees` string: Fee tier of the target liquidity pool in basis points (1 bp = 0.01%). Common values for Uniswap V3-style AMMs: 100 (0.01%), 500 (0.05%), 3000 (0.3%), 10000 (1%). If omitted, the pool yielding the highest output amount is selected automatically.

## Response `200`

Successful response

- object
  - `status` number: Numeric status code indicating success or failure of the API call
  - `msg` string: Human-readable message describing the API result or error
  - `data` union
    - object
      - `chainId` string, required: Blockchain network identifier (EVM chain ID, Solana chain name, etc.)
      - `from` string: Sender's wallet address
      - `to` string: Recipient's wallet address
      - `gas` string: Gas limit for the transaction
      - `value` string: Amount being transferred or involved in a transaction
      - `data` union: Main payload object or array returned by the API
        - string
        - string[]
      - `gasPrice` string: Price per gas unit for the transaction
      - `estimationCheck` union: Flag or value indicating transaction fee/estimate status
        - string
        - boolean
      - `referenceId` string, required: Unique ID for tracking a specific transaction or operation
      - `message` string: Message string related to an operation
      - `simulate` object: Present when the request used `simulate: true`; eth_simulateV1 summary (omitted when simulation was not run).
        - `status` 'success' | 'failure', required
        - `error` string, nullable, required: Failure reason when status is failure; null when status is success
    - object
      - `createFeeTxn` object, required
        - `chainId` string, required: Blockchain network identifier (EVM chain ID, Solana chain name, etc.)
        - `from` string, required: Sender's wallet address
        - `to` string, required: Recipient's wallet address
        - `value` string, required: Amount being transferred or involved in a transaction
        - `gasPrice` string: Price per gas unit for the transaction
        - `gas` string: Gas limit for the transaction
        - `simulate` object: Present when the request used `simulate: true` with `enableFee: true`; fee leg eth_simulateV1 summary.
          - `status` 'success' | 'failure', required
          - `error` string, nullable, required: Failure reason when status is failure; null when status is success
      - `swapTxn` object, required
        - `chainId` string, required: Blockchain network identifier (EVM chain ID, Solana chain name, etc.)
        - `from` string: Sender's wallet address
        - `to` string: Recipient's wallet address
        - `gas` string: Gas limit for the transaction
        - `value` string: Amount being transferred or involved in a transaction
        - `data` union: Main payload object or array returned by the API
          - string
          - string[]
        - `gasPrice` string: Price per gas unit for the transaction
        - `estimationCheck` union: Flag or value indicating transaction fee/estimate status
          - string
          - boolean
        - `referenceId` string, required: Unique ID for tracking a specific transaction or operation
        - `message` string: Message string related to an operation
        - `simulate` object: Present when the request used `simulate: true`; eth_simulateV1 summary (omitted when simulation was not run).
          - `status` 'success' | 'failure', required
          - `error` string, nullable, required: Failure reason when status is failure; null when status is success
    - object
      - `from` string, required
      - `chainId` string, required
      - `referenceId` string, required
      - `methodUsed` 'EIP-5792' | 'EIP-7702', required
      - `calls` object[], required
        - `to` string, required
        - `value` string, required
        - `data` string, required

---

[API](https://skmtc.dev/blockdaemon/apis/blockdaemon-defi-api.md) - [All operations](https://skmtc.dev/blockdaemon/apis/blockdaemon-defi-api/llms.txt) - [OpenAPI document](https://skmtc.dev/blockdaemon/apis/blockdaemon-defi-api/revisions/ec053b7c8041?raw)
