---
title: "Bundle a list of actions"
method: POST
path: "/api/v1/shortcuts/bundle"
tags: ["DeFi Shortcuts"]
---

# Bundle a list of actions

`POST /api/v1/shortcuts/bundle`

Returns a single transaction bundling the submitted actions. For available actions, see `/actions` endpoint.

## Query parameters

- `chainId` number
- `fromAddress` string, required
- `routingStrategy` 'ensowallet' | 'router' | 'delegate' | 'router-legacy' | 'delegate-legacy', nullable
- `receiver` string
- `spender` string
- `ignoreAggregators` string[], nullable
- `referralCode` string
- `refundReceiver` string
- `skipQuote` boolean

## Request body

- ActionToBundle[]
  - `protocol` string, required — Protocol to interact with
  - `action` 'approve' | 'borrow' | 'borrowwithpositionid' | 'bridge' | 'deposit' | 'singledeposit' | 'singledepositwithpositionid' | 'multideposit' | 'tokenizedsingledeposit' | 'tokenizedmultideposit' | 'multioutsingledeposit' | 'depositclmm' | 'harvest' | 'permittransferfrom' | 'redeem' | 'singleredeem' | 'singleredeemwithpositionid' | 'multiredeem' | 'tokenizedsingleredeem' | 'tokenizedmultiredeem' | 'redeemclmm' | 'repay' | 'repaywithpositionid' | 'swap' | 'transfer' | 'transferfrom' | 'route' | 'call' | 'split' | 'merge' | 'balance' | 'minamountout' | 'slippage' | 'fee' | 'ensofee' | 'paymasterfee', required
  - `args` union, required — Arguments specific to the action type. See the [action types](https://docs.enso.finance/reference/actions) for more details.
    - object — Arguments for the approve action
      - `token` string, required — The token address
      - `spender` string, required — The spender address
      - `amount` string, required — The amount to approve
    - object — Arguments for the borrow action
      - `collateral` union, required — Address of token used for collateral
        - string
        - string[]
      - `tokenOut` string, required — Address of token to borrow
      - `amountOut` string, required — The amount to receive
      - `primaryAddress` string, required — Address of smart contract to interact with
    - object — Arguments for the bridge action
      - `primaryAddress` string, required — Address of the source bridge pool
      - `destinationChainId` number, required — Chain ID of the destination network
      - `tokenIn` string, required — Address of token to bridge from source chain
      - `amountIn` union, required
        - string — Amount to bridge with full decimals
        - OutputReference
          - `useOutputOfCallAt` integer, required — Index of the previous action whose output should be used
          - `index` integer — For actions that return multiple values, specifies which index to use
      - `receiver` string, required — Address to receive bridged tokens on destination chain
      - `callback` object[] — Array of actions to execute on the destination chain after bridging. CCTP currently supports only the [enso:balance, hypercore-spot:deposit] callback shape for USDC to HyperCore; other CCTP callbacks are rejected.
      - `protocolArgs` object — Protocol-specific bridge args. For CCTP, use transferType, forwardFee, and isHyperCoreTransfer.
        - `transferType` 'fast' | 'standard' — CCTP only. Preferred finality threshold. Fast falls back to standard when unavailable.
        - `forwardFee` 'low' | 'med' | 'high' — CCTP only. Forwarding Service fee bracket. Defaults to high.
        - `isHyperCoreTransfer` boolean — CCTP HyperCore only. Prefer the [enso:balance, hypercore-spot:deposit] callback shape unless building protocol-level integrations.
    - object — Arguments for the deposit action
      - `tokenIn` union, required — Address of token to deposit
        - string
        - string[]
      - `tokenOut` string, nullable — Address of token to receive
      - `amountIn` union, required — The amount to send
        - string
        - string[]
      - `primaryAddress` string, required — Address of smart contract to interact with
      - `receiver` string, nullable — The receiver account
    - object — Arguments for the single deposit action
      - `tokenIn` string, required — Address of token to deposit
      - `tokenOut` string, nullable — Address of token to receive
      - `amountIn` string, required — The amount to send
      - `primaryAddress` string, required — Address of smart contract to interact with
      - `receiver` string, nullable — The receiver account
    - object — Arguments for the multi deposit action
      - `tokenIn` string[], required — Addresses of tokens to deposit
      - `tokenOut` string, nullable — Address of token to receive
      - `amountIn` string[], required — The amounts to send
      - `primaryAddress` string, required — Address of smart contract to interact with
      - `receiver` string, nullable — The receiver account
    - object — Arguments for the tokenized single deposit action
      - `tokenIn` string, required — Address of token to deposit
      - `tokenOut` string, required — Address of token to receive
      - `amountIn` string, required — The amount to send
      - `primaryAddress` string, required — Address of smart contract to interact with
      - `receiver` string, nullable — The receiver account
    - object — Arguments for the tokenized multi deposit action
      - `tokenIn` string[], required — Addresses of tokens to deposit
      - `tokenOut` string, required — Address of token to receive
      - `amountIn` string[], required — The amounts to send
      - `primaryAddress` string, required — Address of smart contract to interact with
      - `receiver` string, nullable — The receiver account
    - object — Arguments for the multi out single deposit action
      - `tokenIn` string, required — Address of token to send
      - `tokenOut` string[], required — Addresses of tokens to receive
      - `amountIn` string, required — The amount to deposit
      - `primaryAddress` string, required — Address of smart contract to interact with
      - `receiver` string, nullable — The receiver account
    - object — Arguments for the deposit CLMM action
      - `tokenIn` string[], required — Addresses of tokens to deposit
      - `tokenOut` string, required — Address of token to receive
      - `amountIn` string[], required — The amounts to send
      - `ticks` string[], required — Ticks for the deposit
      - `poolFee` string, required — The fee for the pool to deposit into
      - `receiver` string, nullable — The receiver account
    - object — Arguments for the harvest action
      - `token` string, required — Address of token
      - `primaryAddress` string, required — Address of smart contract to interact with
    - object — Arguments for the permit transfer from action
      - `token` union, required — Address of token to approve
        - string
        - string[]
      - `amount` union, required — The amount to approve
        - string
        - string[]
      - `sender` string, required — The sender account
      - `receiver` string, required — The receiver account
      - `nonce` string, required — The nonce to prevent signature replays
      - `deadline` string, required — The deadline on the permit signature
      - `signature` string, required — The permit signature
    - object — Arguments for the redeem action
      - `tokenIn` string, nullable — Address of token to send
      - `tokenOut` union, required — Address of token to receive
        - string
        - string[]
      - `amountIn` string, required — The amount to deposit
      - `primaryAddress` string, required — Address of smart contract to interact with
      - `receiver` string, nullable — The receiver account
    - object — Arguments for the single redeem action
      - `tokenIn` string, nullable — Address of token to send
      - `tokenOut` string, required — Address of token to receive
      - `amountIn` string, required — The amount to deposit
      - `primaryAddress` string, required — Address of smart contract to interact with
      - `receiver` string, nullable — The receiver account
    - object — Arguments for the multi redeem action
      - `tokenIn` string, nullable — Address of token to send
      - `tokenOut` string[], required — Address of token to receive
      - `amountIn` string, required — The amount to deposit
      - `primaryAddress` string, required — Address of smart contract to interact with
      - `receiver` string, nullable — The receiver account
    - object — Arguments for the tokenized single redeem action
      - `tokenIn` string, required — Address of token to send
      - `tokenOut` string, required — Address of token to receive
      - `amountIn` string, required — The amount to deposit
      - `primaryAddress` string, required — Address of smart contract to interact with
      - `receiver` string, nullable — The receiver account
    - object — Arguments for the tokenized multi redeem action
      - `tokenIn` string, required — Address of token to send
      - `tokenOut` string[], required — Address of token to receive
      - `amountIn` string, required — The amount to deposit
      - `primaryAddress` string, required — Address of smart contract to interact with
      - `receiver` string, nullable — The receiver account
    - object — Arguments for the redeem CLMM action
      - `tokenIn` string, required — Address of token to send
      - `tokenOut` string[], required — Address of token to receive
      - `liquidity` string, required — The amount of liquidity to redeem
      - `tokenId` string, required — The token ID
      - `receiver` string, nullable — The receiver account
    - object — Arguments for the repay action
      - `tokenIn` string, required — Address of token to repay
      - `amountIn` string, required — The amount to send
      - `primaryAddress` string, required — Address of smart contract to interact with
    - object — Arguments for the swap action
      - `tokenIn` string, required — Address of token to send
      - `tokenOut` string, required — Address of token to receive
      - `amountIn` string, required — The amount to deposit
      - `primaryAddress` string, nullable — The receiver account
      - `receiver` string, required — Address of smart contract to interact with
      - `slippage` string, nullable — Amount of slippage in BPS
      - `poolFee` string, nullable — The fee that the liquidity pool uses
    - object — Arguments for the transfer action
      - `token` string, required — Address of token
      - `amount` string, required — The amount to transfer
      - `receiver` string, required — The receiver account
      - `id` string, nullable — The ERC721 or ERC1155 id
    - object — Arguments for the transfer from action
      - `token` string, required — Address of token
      - `amount` string, required — The amount to transfer
      - `receiver` string, required — The receiver account
      - `sender` string, required — The sender account
      - `id` string, nullable — The ERC721 or ERC1155 id
    - object — Arguments for the route action
      - `tokenIn` string, required — Address of token to send
      - `tokenOut` string, required — Address of token to receive
      - `amountIn` string, required — The amount to deposit
      - `primaryAddress` string, nullable — The receiver account
      - `receiver` string, required — Address of smart contract to interact with
      - `slippage` string, nullable — Amount of slippage in BPS
      - `poolFee` string, nullable — The fee that the liquidity pool uses
    - object — Arguments for setting slippage tolerance for an output amount
      - `amountOut` union, required
        - string — Expected output amount with full decimals
        - OutputReference
          - `useOutputOfCallAt` integer, required — Index of the previous action whose output should be used
          - `index` integer — For actions that return multiple values, specifies which index to use
      - `bps` string, required — Maximum acceptable slippage in basis points (1 bps = 0.01%)
    - object — Arguments for the borrow with position ID action
      - `collateral` union, required — Address of token used for collateral
        - string
        - string[]
      - `tokenOut` string, required — Address of token to borrow
      - `amountOut` string, required — The amount to receive
      - `primaryAddress` string, required — Address of smart contract to interact with
      - `positionId` string, required — The position ID to borrow against
    - object — Arguments for the single deposit with position ID action
      - `tokenIn` string, required — Address of token to deposit
      - `tokenOut` string, nullable — Address of token to receive
      - `amountIn` string, required — The amount to send
      - `primaryAddress` string, required — Address of smart contract to interact with
      - `receiver` string, nullable — The receiver account
      - `positionId` string, required — The position ID to deposit into
    - object — Arguments for the single redeem with position ID action
      - `tokenIn` string, nullable — Address of token to send
      - `tokenOut` string, required — Address of token to receive
      - `amountIn` string, required — The amount to deposit
      - `primaryAddress` string, required — Address of smart contract to interact with
      - `receiver` string, nullable — The receiver account
      - `positionId` string, required — The position ID to redeem from
    - object — Arguments for the repay with position ID action
      - `tokenIn` string, required — Address of token to repay
      - `amountIn` string, required — The amount to send
      - `primaryAddress` string, required — Address of smart contract to interact with
      - `positionId` string, required — The position ID to repay
    - object — Arguments for the generic call action
      - `target` string, required — The contract address to call
      - `data` string, required — The encoded function call data
      - `value` string — The amount of ETH to send with the call
    - object — Arguments for splitting a token amount into multiple portions
      - `token` string, required — Token address to split
      - `amount` union, required
        - string — Total amount to split with full decimals
        - OutputReference
          - `useOutputOfCallAt` integer, required — Index of the previous action whose output should be used
          - `index` integer — For actions that return multiple values, specifies which index to use
      - `portions` object[], required — Array of split portions with percentages and receivers
        - `percentage` string, required — Percentage in basis points (1 bps = 0.01%)
        - `receiver` string, required — Address to receive this portion
    - object — Arguments for merging multiple token amounts
      - `token` string, required — Token address to merge
      - `amounts` union[], required — Array of amounts to merge
        - union
          - string
          - OutputReference
            - `useOutputOfCallAt` integer, required — Index of the previous action whose output should be used
            - `index` integer — For actions that return multiple values, specifies which index to use
      - `receiver` string, required — Address to receive the merged amount
    - object — Arguments for checking token balance
      - `token` string, required — Token address to check balance for
      - `account` string, required — Account address to check balance of
    - object — Arguments for setting minimum output amount
      - `token` string, required — Token address for minimum amount check
      - `minAmount` string, required — Minimum acceptable amount with full decimals
    - object — Arguments for applying a custom fee to a token amount
      - `token` string, required — Token address to apply the fee to
      - `amount` union, required
        - string — Amount to apply the fee to with full decimals
        - OutputReference
          - `useOutputOfCallAt` integer, required — Index of the previous action whose output should be used
          - `index` integer — For actions that return multiple values, specifies which index to use
      - `bps` string, required — Fee percentage in basis points (1 bps = 0.01%)
      - `receiver` string, required — Address to receive the fee

## Response `200`

- BundleShortcutTransaction
  - `bundle` ActionToBundle[], required
    - `protocol` string, required — Protocol to interact with
    - `action` 'approve' | 'borrow' | 'borrowwithpositionid' | 'bridge' | 'deposit' | 'singledeposit' | 'singledepositwithpositionid' | 'multideposit' | 'tokenizedsingledeposit' | 'tokenizedmultideposit' | 'multioutsingledeposit' | 'depositclmm' | 'harvest' | 'permittransferfrom' | 'redeem' | 'singleredeem' | 'singleredeemwithpositionid' | 'multiredeem' | 'tokenizedsingleredeem' | 'tokenizedmultiredeem' | 'redeemclmm' | 'repay' | 'repaywithpositionid' | 'swap' | 'transfer' | 'transferfrom' | 'route' | 'call' | 'split' | 'merge' | 'balance' | 'minamountout' | 'slippage' | 'fee' | 'ensofee' | 'paymasterfee', required
    - `args` union, required — Arguments specific to the action type. See the [action types](https://docs.enso.finance/reference/actions) for more details.
      - object — Arguments for the approve action
        - `token` string, required — The token address
        - `spender` string, required — The spender address
        - `amount` string, required — The amount to approve
      - object — Arguments for the borrow action
        - `collateral` union, required — Address of token used for collateral
          - string
          - string[]
        - `tokenOut` string, required — Address of token to borrow
        - `amountOut` string, required — The amount to receive
        - `primaryAddress` string, required — Address of smart contract to interact with
      - object — Arguments for the bridge action
        - `primaryAddress` string, required — Address of the source bridge pool
        - `destinationChainId` number, required — Chain ID of the destination network
        - `tokenIn` string, required — Address of token to bridge from source chain
        - `amountIn` union, required
          - string — Amount to bridge with full decimals
          - OutputReference
            - `useOutputOfCallAt` integer, required — Index of the previous action whose output should be used
            - `index` integer — For actions that return multiple values, specifies which index to use
        - `receiver` string, required — Address to receive bridged tokens on destination chain
        - `callback` object[] — Array of actions to execute on the destination chain after bridging. CCTP currently supports only the [enso:balance, hypercore-spot:deposit] callback shape for USDC to HyperCore; other CCTP callbacks are rejected.
        - `protocolArgs` object — Protocol-specific bridge args. For CCTP, use transferType, forwardFee, and isHyperCoreTransfer.
          - `transferType` 'fast' | 'standard' — CCTP only. Preferred finality threshold. Fast falls back to standard when unavailable.
          - `forwardFee` 'low' | 'med' | 'high' — CCTP only. Forwarding Service fee bracket. Defaults to high.
          - `isHyperCoreTransfer` boolean — CCTP HyperCore only. Prefer the [enso:balance, hypercore-spot:deposit] callback shape unless building protocol-level integrations.
      - object — Arguments for the deposit action
        - `tokenIn` union, required — Address of token to deposit
          - string
          - string[]
        - `tokenOut` string, nullable — Address of token to receive
        - `amountIn` union, required — The amount to send
          - string
          - string[]
        - `primaryAddress` string, required — Address of smart contract to interact with
        - `receiver` string, nullable — The receiver account
      - object — Arguments for the single deposit action
        - `tokenIn` string, required — Address of token to deposit
        - `tokenOut` string, nullable — Address of token to receive
        - `amountIn` string, required — The amount to send
        - `primaryAddress` string, required — Address of smart contract to interact with
        - `receiver` string, nullable — The receiver account
      - object — Arguments for the multi deposit action
        - `tokenIn` string[], required — Addresses of tokens to deposit
        - `tokenOut` string, nullable — Address of token to receive
        - `amountIn` string[], required — The amounts to send
        - `primaryAddress` string, required — Address of smart contract to interact with
        - `receiver` string, nullable — The receiver account
      - object — Arguments for the tokenized single deposit action
        - `tokenIn` string, required — Address of token to deposit
        - `tokenOut` string, required — Address of token to receive
        - `amountIn` string, required — The amount to send
        - `primaryAddress` string, required — Address of smart contract to interact with
        - `receiver` string, nullable — The receiver account
      - object — Arguments for the tokenized multi deposit action
        - `tokenIn` string[], required — Addresses of tokens to deposit
        - `tokenOut` string, required — Address of token to receive
        - `amountIn` string[], required — The amounts to send
        - `primaryAddress` string, required — Address of smart contract to interact with
        - `receiver` string, nullable — The receiver account
      - object — Arguments for the multi out single deposit action
        - `tokenIn` string, required — Address of token to send
        - `tokenOut` string[], required — Addresses of tokens to receive
        - `amountIn` string, required — The amount to deposit
        - `primaryAddress` string, required — Address of smart contract to interact with
        - `receiver` string, nullable — The receiver account
      - object — Arguments for the deposit CLMM action
        - `tokenIn` string[], required — Addresses of tokens to deposit
        - `tokenOut` string, required — Address of token to receive
        - `amountIn` string[], required — The amounts to send
        - `ticks` string[], required — Ticks for the deposit
        - `poolFee` string, required — The fee for the pool to deposit into
        - `receiver` string, nullable — The receiver account
      - object — Arguments for the harvest action
        - `token` string, required — Address of token
        - `primaryAddress` string, required — Address of smart contract to interact with
      - object — Arguments for the permit transfer from action
        - `token` union, required — Address of token to approve
          - string
          - string[]
        - `amount` union, required — The amount to approve
          - string
          - string[]
        - `sender` string, required — The sender account
        - `receiver` string, required — The receiver account
        - `nonce` string, required — The nonce to prevent signature replays
        - `deadline` string, required — The deadline on the permit signature
        - `signature` string, required — The permit signature
      - object — Arguments for the redeem action
        - `tokenIn` string, nullable — Address of token to send
        - `tokenOut` union, required — Address of token to receive
          - string
          - string[]
        - `amountIn` string, required — The amount to deposit
        - `primaryAddress` string, required — Address of smart contract to interact with
        - `receiver` string, nullable — The receiver account
      - object — Arguments for the single redeem action
        - `tokenIn` string, nullable — Address of token to send
        - `tokenOut` string, required — Address of token to receive
        - `amountIn` string, required — The amount to deposit
        - `primaryAddress` string, required — Address of smart contract to interact with
        - `receiver` string, nullable — The receiver account
      - object — Arguments for the multi redeem action
        - `tokenIn` string, nullable — Address of token to send
        - `tokenOut` string[], required — Address of token to receive
        - `amountIn` string, required — The amount to deposit
        - `primaryAddress` string, required — Address of smart contract to interact with
        - `receiver` string, nullable — The receiver account
      - object — Arguments for the tokenized single redeem action
        - `tokenIn` string, required — Address of token to send
        - `tokenOut` string, required — Address of token to receive
        - `amountIn` string, required — The amount to deposit
        - `primaryAddress` string, required — Address of smart contract to interact with
        - `receiver` string, nullable — The receiver account
      - object — Arguments for the tokenized multi redeem action
        - `tokenIn` string, required — Address of token to send
        - `tokenOut` string[], required — Address of token to receive
        - `amountIn` string, required — The amount to deposit
        - `primaryAddress` string, required — Address of smart contract to interact with
        - `receiver` string, nullable — The receiver account
      - object — Arguments for the redeem CLMM action
        - `tokenIn` string, required — Address of token to send
        - `tokenOut` string[], required — Address of token to receive
        - `liquidity` string, required — The amount of liquidity to redeem
        - `tokenId` string, required — The token ID
        - `receiver` string, nullable — The receiver account
      - object — Arguments for the repay action
        - `tokenIn` string, required — Address of token to repay
        - `amountIn` string, required — The amount to send
        - `primaryAddress` string, required — Address of smart contract to interact with
      - object — Arguments for the swap action
        - `tokenIn` string, required — Address of token to send
        - `tokenOut` string, required — Address of token to receive
        - `amountIn` string, required — The amount to deposit
        - `primaryAddress` string, nullable — The receiver account
        - `receiver` string, required — Address of smart contract to interact with
        - `slippage` string, nullable — Amount of slippage in BPS
        - `poolFee` string, nullable — The fee that the liquidity pool uses
      - object — Arguments for the transfer action
        - `token` string, required — Address of token
        - `amount` string, required — The amount to transfer
        - `receiver` string, required — The receiver account
        - `id` string, nullable — The ERC721 or ERC1155 id
      - object — Arguments for the transfer from action
        - `token` string, required — Address of token
        - `amount` string, required — The amount to transfer
        - `receiver` string, required — The receiver account
        - `sender` string, required — The sender account
        - `id` string, nullable — The ERC721 or ERC1155 id
      - object — Arguments for the route action
        - `tokenIn` string, required — Address of token to send
        - `tokenOut` string, required — Address of token to receive
        - `amountIn` string, required — The amount to deposit
        - `primaryAddress` string, nullable — The receiver account
        - `receiver` string, required — Address of smart contract to interact with
        - `slippage` string, nullable — Amount of slippage in BPS
        - `poolFee` string, nullable — The fee that the liquidity pool uses
      - object — Arguments for setting slippage tolerance for an output amount
        - `amountOut` union, required
          - string — Expected output amount with full decimals
          - OutputReference
            - `useOutputOfCallAt` integer, required — Index of the previous action whose output should be used
            - `index` integer — For actions that return multiple values, specifies which index to use
        - `bps` string, required — Maximum acceptable slippage in basis points (1 bps = 0.01%)
      - object — Arguments for the borrow with position ID action
        - `collateral` union, required — Address of token used for collateral
          - string
          - string[]
        - `tokenOut` string, required — Address of token to borrow
        - `amountOut` string, required — The amount to receive
        - `primaryAddress` string, required — Address of smart contract to interact with
        - `positionId` string, required — The position ID to borrow against
      - object — Arguments for the single deposit with position ID action
        - `tokenIn` string, required — Address of token to deposit
        - `tokenOut` string, nullable — Address of token to receive
        - `amountIn` string, required — The amount to send
        - `primaryAddress` string, required — Address of smart contract to interact with
        - `receiver` string, nullable — The receiver account
        - `positionId` string, required — The position ID to deposit into
      - object — Arguments for the single redeem with position ID action
        - `tokenIn` string, nullable — Address of token to send
        - `tokenOut` string, required — Address of token to receive
        - `amountIn` string, required — The amount to deposit
        - `primaryAddress` string, required — Address of smart contract to interact with
        - `receiver` string, nullable — The receiver account
        - `positionId` string, required — The position ID to redeem from
      - object — Arguments for the repay with position ID action
        - `tokenIn` string, required — Address of token to repay
        - `amountIn` string, required — The amount to send
        - `primaryAddress` string, required — Address of smart contract to interact with
        - `positionId` string, required — The position ID to repay
      - object — Arguments for the generic call action
        - `target` string, required — The contract address to call
        - `data` string, required — The encoded function call data
        - `value` string — The amount of ETH to send with the call
      - object — Arguments for splitting a token amount into multiple portions
        - `token` string, required — Token address to split
        - `amount` union, required
          - string — Total amount to split with full decimals
          - OutputReference
            - `useOutputOfCallAt` integer, required — Index of the previous action whose output should be used
            - `index` integer — For actions that return multiple values, specifies which index to use
        - `portions` object[], required — Array of split portions with percentages and receivers
          - `percentage` string, required — Percentage in basis points (1 bps = 0.01%)
          - `receiver` string, required — Address to receive this portion
      - object — Arguments for merging multiple token amounts
        - `token` string, required — Token address to merge
        - `amounts` union[], required — Array of amounts to merge
          - union
            - string
            - OutputReference
              - …
        - `receiver` string, required — Address to receive the merged amount
      - object — Arguments for checking token balance
        - `token` string, required — Token address to check balance for
        - `account` string, required — Account address to check balance of
      - object — Arguments for setting minimum output amount
        - `token` string, required — Token address for minimum amount check
        - `minAmount` string, required — Minimum acceptable amount with full decimals
      - object — Arguments for applying a custom fee to a token amount
        - `token` string, required — Token address to apply the fee to
        - `amount` union, required
          - string — Amount to apply the fee to with full decimals
          - OutputReference
            - `useOutputOfCallAt` integer, required — Index of the previous action whose output should be used
            - `index` integer — For actions that return multiple values, specifies which index to use
        - `bps` string, required — Fee percentage in basis points (1 bps = 0.01%)
        - `receiver` string, required — Address to receive the fee
  - `gas` string — Gas estimate for the transaction
  - `amountsOut` object — Expected output amounts by token address
  - `route` Hop[], required — The route the shortcut will use
    - `tokenIn` string[], required
    - `tokenOut` string[], required
    - `protocol` string, required
    - `action` string, required
    - `primary` string, required
    - `internalRoutes` string[], required
    - `args` object, required
    - `chainId` number
    - `sourceChainId` number
    - `destinationChainId` number
  - `createdAt` number, required — Block number the transaction was created on
  - `tx` Transaction, required
    - `data` string, required
    - `to` string, required
    - `from` string, required
    - `value` string, required
  - `priceImpact` number, nullable, required — Price impact in basis points, null if USD price not found
  - `feeAmount` object, required

---

[API](https://skmtc.dev/enso/apis/enso-api.md) · [All operations](https://skmtc.dev/enso/apis/enso-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/enso/enso-api/revisions/249f471fdafd/schema)
