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

# Bundle a list of actions into a single transaction

`POST /api/v1/shortcuts/bundle`

## Query parameters

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

## Request body

- union[] — List of actions to bundle
  - union — Each item is a protocol action; items are executed sequentially
    - RouteActionDto
      - `protocol` string, required — Protocol
      - `action` string, required — Action
      - `args` RouteArgsDto, required
        - `tokenIn` string, required — Input token address
        - `tokenOut` string, required — Output token address
        - `amountIn` union, required — Amount to route in wei (or previous output reference)
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
        - `slippage` string — Slippage tolerance in basis points (100 = 1%)
        - `receiver` string — Receiver address if not the caller
        - `destinationChainId` integer — Destination chain ID for a cross-chain route
        - `refundReceiver` string — Address to receive refunded dust for a cross-chain route
        - `minAmountOut` union — Minimum acceptable amount or amounts out
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
          - union[]
            - union
              - …
        - `fee` union — Fee in basis points per amountIn. Use 1-100. All-zero fees are ignored. Collection is on the source chain unless a cross-chain route sets destinationFeeReceiver.
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
          - union[]
            - union
              - …
        - `feeReceiver` string — The Ethereum address that receives the source-chain fee and remains the fallback when destination collection does not apply. Required if fee is provided.
        - `destinationFeeReceiver` string — Optional destination-chain fee receiver. For a cross-chain route with destination execution, the requested fee is collected atomically from the delivered bridge asset on the destination chain. Otherwise feeReceiver remains the source-chain receiver.
        - `ignoreAggregators` string[] — Aggregators to ignore
        - `ignoreStandards` string[] — Standards to ignore
        - `ignoreBridges` string[] — Bridges to ignore. Only used for cross-chain route actions.
    - SwapActionDto
      - `protocol` string, required — Protocol
      - `action` string, required
      - `args` SwapArgsDto, required
        - `tokenIn` string, required — Input token address
        - `tokenOut` string, required — Output token address
        - `amountIn` union, required — Amount to swap (or previous output reference)
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
        - `primaryAddress` string, required — Router or pool contract address
        - `receiver` string — Receiver address
        - `slippage` string — Slippage in basis points
        - `poolFee` string — Pool fee in basis points
        - `tickSpacing` string — Tick spacing for concentrated liquidity pools
        - `hooks` string — Hook contract address
        - `poolId` string — Pool identifier (if protocol-specific)
        - `salt` string — Protocol-specific pool salt
        - `path` string[] — Token path for multi-hop protocol swaps
        - `args` object — Protocol-specific additional swap arguments
    - BridgeActionDto
      - `action` string, required — Action
      - `protocol` 'cctp' | 'stargate' | 'ccip' | 'relay', required — Protocol to use for bridging
      - `args` BridgeArgsDto, required
        - `tokenIn` string, required — Input token address
        - `amountIn` union, required — Amount to bridge (or previous output reference)
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
        - `primaryAddress` string, required — Bridging protocol contract address
        - `destinationChainId` number, required — Destination chain id
        - `receiver` string, required — Receiver address on destination chain
        - `callback` union[] — Optional callback bundle on destination chain (MUST start with balance action)
          - union
            - RouteActionDto
              - …
            - SwapActionDto
              - …
            - BridgeActionDto — recursive
            - BalanceActionDto
              - …
            - ApproveActionDto
              - …
            - TransferActionDto
              - …
            - TransferFromActionDto
              - …
            - PermitTransferFromActionDto
              - …
            - DepositActionDto
              - …
            - RedeemActionDto
              - …
            - DepositCLMMActionDto
              - …
            - RedeemCLMMActionDto
              - …
            - TokenizedSingleDepositActionDto
              - …
            - TokenizedMultiDepositActionDto
              - …
            - TokenizedSingleRedeemActionDto
              - …
            - TokenizedMultiRedeemActionDto
              - …
            - MultiOutSingleDepositActionDto
              - …
            - CallActionDto
              - …
            - FlashloanActionDto
              - …
            - WithdrawActionDto
              - …
            - SplitActionDto
              - …
            - MergeActionDto
              - …
            - MinAmountOutActionDto
              - …
            - SlippageActionDto
              - …
            - FeeActionDto
              - …
            - EnsoFeeActionDto
              - …
            - PaymasterFeeActionDto
              - …
            - RepayActionDto
              - …
            - BorrowActionDto
              - …
            - HarvestActionDto
              - …
            - SingleDepositActionDto
              - …
            - MultiDepositActionDto
              - …
            - SingleRedeemActionDto
              - …
            - MultiRedeemActionDto
              - …
            - MathActionDto
              - …
            - ComparisonActionDto
              - …
            - ConditionActionDto
              - …
            - ToggleActionDto
              - …
        - `protocolArgs` CctpBridgeProtocolArgsDto
          - `transferType` 'fast' | 'standard' — CCTP only. Preferred finality threshold. "fast" requires Circle-designated fast-source support; falls back to "standard" silently when unavailable.
          - `forwardFee` 'low' | 'med' | 'high' — CCTP only. Forwarding Service fee bracket (destination-chain gas buffer). Applies to all CCTP transfers — Forwarding is always used to guarantee destination execution. Defaults to `high`: headroom against fee drift between quote and forward execution (an under-budgeted maxFee strands the transfer until Circle re-attempts). Pass `med`/`low` to trade delivery headroom for a better quote.
          - `isHyperCoreTransfer` boolean — CCTP HyperCore only. When true, the CCTP burn delivers USDC into HyperCore via Circle's CctpForwarder instead of minting at `receiver` on HyperEVM. Requires `destinationChainId = 999` (HyperEVM) and a source chain other than HyperEVM. Most consumers should NOT set this directly — use the `callback: [enso:balance, hypercore-spot:deposit]` shape, or rely on `/route/nontokenized` with `positionOut = 0x2000…0000` to set it automatically.
    - BalanceActionDto
      - `protocol` string, required
      - `action` string, required
      - `args` BalanceArgsDto, required
        - `token` string, required — Token address to check balance
        - `estimate` string — Estimated balance amount (wei). Used for route building when the account may not have a balance yet.
        - `account` string — Account address to check balance of. Defaults to the shortcut wallet address.
    - ApproveActionDto
      - `protocol` 'erc20' | 'erc721', required — Protocol
      - `action` string, required
      - `args` ApproveArgsDto, required
        - `token` string, required — Token to approve
        - `spender` string, required — Spender address
        - `amount` union — Amount to approve in wei (or previous output reference). Required for erc20.
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
        - `tokenId` string — ERC721 token id to approve. Required for erc721.
    - TransferActionDto
      - `protocol` string, required — Protocol
      - `action` string, required
      - `args` TransferArgsDto, required
        - `token` string, required — Token address
        - `amount` union — Amount to transfer (or previous output reference). Required for erc20.
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
        - `receiver` string, required — Receiver address
        - `tokenId` string — ERC721 token id. Required for erc721; ignored otherwise.
    - TransferFromActionDto
      - `protocol` 'erc20' | 'erc721', required — Protocol
      - `action` string, required
      - `args` TransferFromArgsDto, required
        - `token` string, required — Token address
        - `sender` string — Sender address. Required for erc20; optional for erc721 (defaults to the executing wallet).
        - `receiver` string, required — Receiver address
        - `amount` union — Amount to transfer (or previous output reference). Required for erc20.
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
        - `tokenId` string — ERC721 token id. Required for erc721; ignored otherwise.
    - PermitTransferFromActionDto
      - `protocol` string, required — Protocol
      - `action` string, required
      - `args` PermitTransferFromArgsDto, required
        - `token` union, required — Token(s) to transfer
          - string
          - string[]
        - `amount` union, required — Amount(s) (or previous output references)
          - string
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
          - union[]
            - union
              - …
        - `sender` string, required — Sender address
        - `receiver` string, required — Receiver address
        - `nonce` string, required — Nonce for signature replay protection
        - `deadline` string, required — Deadline timestamp
        - `signature` string, required — EIP-2612 permit signature
    - DepositActionDto
      - `protocol` string, required — Protocol
      - `action` string, required
      - `args` DepositArgsDto, required
        - `onBehalfOf` string — Address that will own the resulting protocol position
        - `args` object — Protocol-specific additional action arguments
        - `tokenIn` union, required — Input token(s)
          - string
          - string[]
        - `tokenOut` union — Output token(s)
          - string
          - string[]
        - `amountIn` union, required — Amount(s) (or previous output reference)
          - string
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
          - union[]
            - union
              - …
        - `primaryAddress` string, required — Protocol contract address
        - `positionId` string — Position identifier for position-based protocols
        - `tokenId` string — Token identifier for token-based protocol positions
        - `receiver` string — Receiver address
    - RedeemActionDto
      - `protocol` string, required — Protocol
      - `action` string, required
      - `args` RedeemArgsDto, required
        - `onBehalfOf` string — Address that will own the resulting protocol position
        - `args` object — Protocol-specific additional action arguments
        - `tokenIn` string — Input token (shares) address
        - `tokenOut` union, required — Output token(s)
          - string
          - string[]
        - `amountIn` union, required — Amount to redeem (or previous output reference)
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
        - `primaryAddress` string, required — Protocol contract address
        - `receiver` string — Receiver address
        - `positionId` string — Position identifier for position-based protocols
        - `tokenId` string — Token identifier for token-based protocol positions
    - DepositCLMMActionDto
      - `protocol` string, required — Protocol
      - `action` string, required
      - `args` DepositCLMMArgsDto, required
        - `tokenIn` string[], required — Input token addresses
        - `tokenOut` string, required — Output token address
        - `amountIn` union[], required — Amounts (or previous output references)
          - union
            - string
            - CallOutput
              - …
        - `ticks` string[], required — Ticks for the position
        - `poolFee` string — Pool fee in basis points
        - `receiver` string — Receiver address
        - `tickSpacing` string — Tick spacing
        - `hook` string — Hook address
    - RedeemCLMMActionDto
      - `protocol` string, required — Protocol
      - `action` string, required
      - `args` RedeemCLMMArgsDto, required
        - `tokenIn` string, required — Input token address to redeem
        - `tokenOut` string[], required — Output token addresses
        - `liquidity` union, required — Liquidity to redeem (or previous output reference)
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
        - `tokenId` string, required — Token ID of the NFT position
        - `receiver` string — Receiver address
    - TokenizedSingleDepositActionDto
      - `protocol` string, required — Protocol
      - `action` string, required
      - `args` TokenizedSingleDepositArgsDto, required
        - `onBehalfOf` string — Address that will own the resulting protocol position
        - `args` object — Protocol-specific additional action arguments
        - `tokenIn` string, required — Input token address
        - `tokenOut` string, required — Output token address
        - `amountIn` union, required — Amount to deposit (or previous output reference)
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
        - `primaryAddress` string, required — Primary contract address
        - `receiver` string — Receiver address
    - TokenizedMultiDepositActionDto
      - `protocol` string, required — Protocol
      - `action` string, required
      - `args` TokenizedMultiDepositArgsDto, required
        - `onBehalfOf` string — Address that will own the resulting protocol position
        - `args` object — Protocol-specific additional action arguments
        - `tokenIn` string[], required — Input token addresses
        - `tokenOut` string, required — Output token address
        - `amountIn` union[], required — Amounts to deposit (or previous output references)
          - union
            - string
            - CallOutput
              - …
        - `primaryAddress` string, required — Primary contract address
        - `receiver` string — Receiver address
    - TokenizedSingleRedeemActionDto
      - `protocol` string, required — Protocol
      - `action` string, required
      - `args` TokenizedSingleRedeemArgsDto, required
        - `onBehalfOf` string — Address that will own the resulting protocol position
        - `args` object — Protocol-specific additional action arguments
        - `tokenIn` string, required — Input token address
        - `tokenOut` string, required — Output token address
        - `amountIn` union, required — Amount to redeem (or previous output reference)
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
        - `primaryAddress` string, required — Primary contract address
        - `receiver` string — Receiver address
    - TokenizedMultiRedeemActionDto
      - `protocol` string, required — Protocol
      - `action` string, required
      - `args` TokenizedMultiRedeemArgsDto, required
        - `onBehalfOf` string — Address that will own the resulting protocol position
        - `args` object — Protocol-specific additional action arguments
        - `tokenIn` string, required — Input token address
        - `tokenOut` string[], required — Output token addresses
        - `amountIn` union, required — Amount to redeem (or previous output reference)
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
        - `primaryAddress` string, required — Primary contract address
        - `receiver` string — Receiver address
    - MultiOutSingleDepositActionDto
      - `protocol` string, required — Protocol
      - `action` string, required
      - `args` MultiOutSingleDepositArgsDto, required
        - `onBehalfOf` string — Address that will own the resulting protocol position
        - `args` object — Protocol-specific additional action arguments
        - `tokenIn` string, required — Input token address
        - `tokenOut` string[], required — Output token addresses
        - `amountIn` union, required — Amount to deposit (or previous output reference)
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
        - `primaryAddress` string, required — Primary contract address
        - `receiver` string — Receiver address
    - CallActionDto
      - `action` string, required
      - `protocol` string, required — Protocol to interact with
      - `args` CallArgsDto, required
        - `tokenIn` string — Optional input token address
        - `tokenOut` string — Optional output token address
        - `address` string, required — Contract address to call
        - `method` string, required — Method name to call
        - `abi` string, required — Flattened function signature
        - `args` union[], required — Arguments for the method
          - union
            - string
            - number
            - boolean
            - CallOutput
              - …
            - union[]
              - …
        - `value` union — Native value to send (or previous output reference)
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
    - FlashloanActionDto
      - `protocol` string, required — Protocol
      - `action` 'flashloan', required
      - `args` FlashloanArgsDto, required
        - `flashloanToken` union, required — Token address or addresses to flashloan
          - string
          - string[]
        - `flashloanAmount` union, required — Flashloan amount or amounts in wei
          - string
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
          - union[]
            - union
              - …
        - `tokenIn` union — Additional user token address or addresses to combine with the flashloan
          - string
          - string[]
        - `amountIn` union — Amount or amounts for additional user tokens
          - string
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
          - union[]
            - union
              - …
        - `tokenOut` union, required — Token address or addresses expected after the callback
          - string
          - string[]
        - `callback` union[], required — Actions to execute within the flashloan callback
          - union
            - RouteActionDto
              - …
            - SwapActionDto
              - …
            - BridgeActionDto
              - …
            - BalanceActionDto
              - …
            - ApproveActionDto
              - …
            - TransferActionDto
              - …
            - TransferFromActionDto
              - …
            - PermitTransferFromActionDto
              - …
            - DepositActionDto
              - …
            - RedeemActionDto
              - …
            - DepositCLMMActionDto
              - …
            - RedeemCLMMActionDto
              - …
            - TokenizedSingleDepositActionDto
              - …
            - TokenizedMultiDepositActionDto
              - …
            - TokenizedSingleRedeemActionDto
              - …
            - TokenizedMultiRedeemActionDto
              - …
            - MultiOutSingleDepositActionDto
              - …
            - CallActionDto
              - …
            - FlashloanActionDto — recursive
            - WithdrawActionDto
              - …
            - SplitActionDto
              - …
            - MergeActionDto
              - …
            - MinAmountOutActionDto
              - …
            - SlippageActionDto
              - …
            - FeeActionDto
              - …
            - EnsoFeeActionDto
              - …
            - PaymasterFeeActionDto
              - …
            - RepayActionDto
              - …
            - BorrowActionDto
              - …
            - HarvestActionDto
              - …
            - SingleDepositActionDto
              - …
            - MultiDepositActionDto
              - …
            - SingleRedeemActionDto
              - …
            - MultiRedeemActionDto
              - …
            - MathActionDto
              - …
            - ComparisonActionDto
              - …
            - ConditionActionDto
              - …
            - ToggleActionDto
              - …
        - `receiver` string — Receiver address
        - `primaryAddress` string — Flashloan pool or lender contract address
    - WithdrawActionDto
      - `protocol` string, required — Protocol
      - `action` 'withdraw' | 'singlewithdraw' | 'singlewithdrawwithpositionid' | 'multiwithdraw', required
      - `args` WithdrawArgsDto, required
        - `tokenOut` union, required — Output token address or addresses
          - string
          - string[]
        - `amountOut` union, required — Amount or amounts to withdraw in wei
          - string
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
          - union[]
            - union
              - …
        - `primaryAddress` string, required — Protocol contract address
        - `receiver` string — Receiver address
        - `onBehalfOf` string — Address on whose behalf the withdrawal is made
        - `positionId` string — Position identifier for singlewithdrawwithpositionid
        - `args` object — Protocol-specific additional withdrawal arguments
    - SplitActionDto
      - `protocol` string, required
      - `action` string, required
      - `args` SplitArgsDto, required
        - `tokenIn` string, required — Token to split
        - `tokenOut` string[], required — Output token addresses
        - `amountIn` union, required — Amount to split (or previous output reference)
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
        - `receiver` string — Receiver address
    - MergeActionDto
      - `protocol` string, required
      - `action` string, required
      - `args` MergeArgsDto, required
        - `tokenIn` string[], required — Input token addresses
        - `tokenOut` string, required — Output token address
        - `amountIn` union[], required — Amounts to merge (or previous output reference)
          - union
            - string — Literal string value (e.g. wei amount)
            - CallOutput
              - …
        - `receiver` string — Receiver address
    - MinAmountOutActionDto
      - `protocol` string, required
      - `action` string, required
      - `args` MinAmountOutArgsDto, required
        - `amountOut` union, required — Expected output amount (previous output reference)
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
        - `minAmountOut` union, required — Minimum acceptable amount
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
    - SlippageActionDto
      - `protocol` string, required
      - `action` string, required
      - `args` SlippageArgsDto, required
        - `bps` string, required — Maximum slippage in basis points
        - `amountOut` union, required — Expected output amount reference
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
    - FeeActionDto
      - `protocol` string, required
      - `action` string, required
      - `args` FeeArgsDto, required
        - `receiver` string, required — Receiver of the fee
        - `token` string, required — Token to apply fee to
        - `amount` union, required — Amount (or previous output reference)
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
        - `bps` string, required — Fee in basis points
    - EnsoFeeActionDto
      - `protocol` string, required
      - `action` string, required
      - `args` EnsoFeeArgsDto, required
        - `token` string, required — Token to apply fee to
        - `amount` union, required — Amount (or previous output reference)
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
        - `bps` string, required — Fee in basis points
    - PaymasterFeeActionDto
      - `protocol` string, required
      - `action` string, required
      - `args` PaymasterFeeArgsDto, required
        - `token` string, required — Token to apply fee to
        - `amount` union, required — Amount (or previous output reference)
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
    - RepayActionDto
      - `action` string, required
      - `protocol` string, required — Protocol
      - `args` RepayArgsDto, required
        - `tokenIn` string, required — Token to repay with
        - `amountIn` union, required — Amount to repay (or previous output reference)
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
        - `primaryAddress` string, required — Lending pool contract address
        - `onBehalfOf` string — Address on whose behalf the debt is repaid
        - `positionId` string — Position identifier for position-based lending protocols
        - `tokenId` string — Token identifier for token-based lending positions
        - `args` object — Protocol-specific additional repay arguments
    - BorrowActionDto
      - `protocol` string, required — Protocol to borrow from
      - `action` string, required
      - `args` BorrowArgsDto, required
        - `collateral` union — Collateral token address or addresses
          - string
          - string[]
        - `tokenOut` string, required — Token to borrow
        - `amountOut` union, required — Amount to borrow in wei (or previous output reference)
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
        - `primaryAddress` string, required — Lending pool contract address
        - `receiver` string — Receiver address
        - `onBehalfOf` string — Address that will own the debt position
        - `positionId` string — Position identifier for position-based lending protocols
        - `tokenId` string — Token identifier for token-based lending positions
        - `args` object — Protocol-specific additional borrow arguments
    - HarvestActionDto
      - `action` string, required — Action
      - `protocol` string, required — Protocol
      - `args` HarvestArgsDto, required
        - `token` string, required — Token to harvest
        - `primaryAddress` string, required — Primary contract address
    - SingleDepositActionDto
      - `protocol` string, required — Protocol
      - `action` string, required
      - `args` SingleDepositArgsDto, required
        - `onBehalfOf` string — Address that will own the resulting protocol position
        - `args` object — Protocol-specific additional action arguments
        - `tokenIn` string, required — Input token
        - `tokenOut` string — Output token
        - `amountIn` union, required — Amount (or previous output reference)
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
        - `primaryAddress` string, required — Primary contract
        - `receiver` string — Receiver address
    - MultiDepositActionDto
      - `protocol` string, required — Protocol
      - `action` string, required
      - `args` MultiDepositArgsDto, required
        - `onBehalfOf` string — Address that will own the resulting protocol position
        - `args` object — Protocol-specific additional action arguments
        - `tokenIn` string[], required — Input tokens
        - `tokenOut` string — Output token
        - `amountIn` union[], required — Amounts (or previous output references)
          - union
            - string
            - CallOutput
              - …
        - `primaryAddress` string, required — Primary contract
        - `receiver` string — Receiver address
    - SingleRedeemActionDto
      - `protocol` string, required — Protocol
      - `action` string, required
      - `args` SingleRedeemArgs2Dto, required
        - `onBehalfOf` string — Address that will own the resulting protocol position
        - `args` object — Protocol-specific additional action arguments
        - `tokenIn` string — Input token
        - `tokenOut` string, required — Output token
        - `amountIn` union, required — Amount (or previous output reference)
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
        - `primaryAddress` string, required — Primary contract
        - `receiver` string — Receiver address
    - MultiRedeemActionDto
      - `protocol` string, required — Protocol
      - `action` string, required
      - `args` MultiRedeemArgs2Dto, required
        - `onBehalfOf` string — Address that will own the resulting protocol position
        - `args` object — Protocol-specific additional action arguments
        - `tokenIn` string — Input token
        - `tokenOut` string[], required — Output tokens
        - `amountIn` union, required — Amount (or previous output reference)
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
        - `primaryAddress` string, required — Primary contract
        - `receiver` string — Receiver address
    - MathActionDto
      - `protocol` 'math', required
      - `action` 'add' | 'sub' | 'mul' | 'div' | 'min' | 'max', required
      - `args` BinaryOperationArgsDto, required
        - `amountA` union, required — First operand (or previous output reference)
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
        - `amountB` union, required — Second operand (or previous output reference)
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
    - ComparisonActionDto
      - `protocol` 'helpers', required
      - `action` 'isequal' | 'islessthan' | 'isequalorlessthan' | 'isgreaterthan' | 'isequalorgreaterthan', required
      - `args` BinaryOperationArgsDto, required
        - `amountA` union, required — First operand (or previous output reference)
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
        - `amountB` union, required — Second operand (or previous output reference)
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
    - ConditionActionDto
      - `protocol` 'helpers', required
      - `action` 'not' | 'check', required
      - `args` ConditionArgsDto, required
        - `condition` union, required — Boolean condition (or previous output reference)
          - boolean
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
    - ToggleActionDto
      - `protocol` 'helpers', required
      - `action` 'toggle', required
      - `args` ToggleArgsDto, required
        - `condition` union, required — Boolean condition (or previous output reference)
          - boolean
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
        - `amountA` union, required — Value when condition is true (or previous output reference)
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number
        - `amountB` union, required — Value when condition is false (or previous output reference)
          - string — Literal string value (e.g. wei amount)
          - CallOutput
            - `useOutputOfCallAt` number, required
            - `index` number

## Response `200`

- BundleShortcutTransaction
  - `bundle` ActionToBundle[], required
    - `protocol` string, required — Protocol to interact with
    - `action` 'approve' | 'borrow' | 'borrowwithpositionid' | 'bridge' | 'deposit' | 'singledeposit' | 'singledepositwithpositionid' | 'multideposit' | 'multidepositwithpositionid' | 'tokenizedsingledeposit' | 'tokenizedmultideposit' | 'multioutsingledeposit' | 'depositclmm' | 'depositwithestimate' | 'encodedswap' | 'flashloan' | 'singletokenflashloan' | 'multitokenflashloan' | 'harvest' | 'nftborrow' | 'nftdeposit' | 'nftmultideposit' | 'nftmultiredeem' | 'nftredeem' | 'nftrepay' | 'permittransferfrom' | 'redeem' | 'singleredeem' | 'singleredeemwithpositionid' | 'multiredeem' | 'tokenizedsingleredeem' | 'tokenizedmultiredeem' | 'redeemclmm' | 'redeemwithestimate' | 'repay' | 'repaywithpositionid' | 'swap' | 'transfer' | 'transferfrom' | 'withdraw' | 'singlewithdraw' | 'singlewithdrawwithpositionid' | 'multiwithdraw' | 'route' | 'call' | 'split' | 'merge' | 'ondosplit' | 'ondomerge' | 'balance' | 'minamountout' | 'slippage' | 'fee' | 'ensofee' | 'paymasterfee' | 'depositposition' | 'add' | 'sub' | 'mul' | 'div' | 'min' | 'max' | 'isequal' | 'islessthan' | 'isequalorlessthan' | 'isgreaterthan' | 'isequalorgreaterthan' | 'not' | 'check' | 'toggle', required
    - `args` object, required
  - `gas` string — Gas estimate for the transaction
  - `amountsOut` object — Expected output amounts by token address
  - `route` Hop[] — The route the shortcut will use
    - `tokenIn` string[], required
    - `tokenOut` string[], required
    - `protocol` string, required
    - `action` 'approve' | 'borrow' | 'borrowwithpositionid' | 'bridge' | 'deposit' | 'singledeposit' | 'singledepositwithpositionid' | 'multideposit' | 'multidepositwithpositionid' | 'tokenizedsingledeposit' | 'tokenizedmultideposit' | 'multioutsingledeposit' | 'depositclmm' | 'depositwithestimate' | 'encodedswap' | 'flashloan' | 'singletokenflashloan' | 'multitokenflashloan' | 'harvest' | 'nftborrow' | 'nftdeposit' | 'nftmultideposit' | 'nftmultiredeem' | 'nftredeem' | 'nftrepay' | 'permittransferfrom' | 'redeem' | 'singleredeem' | 'singleredeemwithpositionid' | 'multiredeem' | 'tokenizedsingleredeem' | 'tokenizedmultiredeem' | 'redeemclmm' | 'redeemwithestimate' | 'repay' | 'repaywithpositionid' | 'swap' | 'transfer' | 'transferfrom' | 'withdraw' | 'singlewithdraw' | 'singlewithdrawwithpositionid' | 'multiwithdraw' | 'route' | 'call' | 'split' | 'merge' | 'ondosplit' | 'ondomerge' | 'balance' | 'minamountout' | 'slippage' | 'fee' | 'ensofee' | 'paymasterfee' | 'depositposition' | 'add' | 'sub' | 'mul' | 'div' | 'min' | 'max' | 'isequal' | 'islessthan' | 'isequalorlessthan' | 'isgreaterthan' | 'isequalorgreaterthan' | 'not' | 'check' | 'toggle', required
    - `primaryAddress` string
    - `internalRoutes` string[]
    - `args` object
    - `sources` string[]
    - `poolAddresses` string[]
    - `estimatedAmountOut` string[] — Only available for split actions returned by the pathfinder routing engine. Display estimates use the planned split input, are ordered to match tokenOut, and are not execution guarantees
    - `chainId` number
    - `sourceChainId` number
    - `destinationChainId` number
    - `positionOut` string[] — Non-tokenized position ID for deposit actions
    - `via` 'cctp-forwarder' — Off-chain settler for this hop. Set when the hop is descriptive metadata rather than a weiroll call in `tx.data` — execution happens asynchronously via the named external system (e.g. Circle's CctpForwarder credits HyperCore on CCTP message receipt). Absent on hops that are actual on-chain weiroll calls.
  - `metadata` ShortcutResponseMetadata, required
    - `bridgeRefundAssets` BridgeRefundAsset[], required — Protocol-specific refund destinations for bridge principal in the returned transaction. An entry does not guarantee that every bridge failure is refundable.
      - `protocol` 'cctp' | 'stargate' | 'ccip' | 'relay', required
      - `chainId` number, required
      - `token` string, required — Address of the bridge principal token that may be refunded
      - `recipient` string, required — Address that would receive the bridge principal refund
      - `symbol` string — Token symbol when metadata is available
  - `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
  - `minAmountsOut` object — Expected minimal output amounts by token address
  - `priceImpact` number, nullable — Price impact in basis points, null if USD price not found
  - `feeAmount` object — Fees by token address
  - `userOp` UserOperation
    - `callData` string, required
    - `callGasLimit` string, required
    - `factory` string
    - `factoryData` string
    - `maxFeePerGas` string, required
    - `maxPriorityFeePerGas` string, required
    - `nonce` string, required
    - `paymaster` string
    - `paymasterData` string
    - `paymasterPostOpGasLimit` string
    - `paymasterVerificationGasLimit` string
    - `preVerificationGas` string, required
    - `sender` string, required
    - `signature` string, required
    - `verificationGasLimit` string, required
  - `approvals` BundleApprovalTransaction[] — External approvals required before bundle execution. Each approval should be sent as a transaction by the listed `from` account.
    - `to` string, required
    - `from` string, required
    - `data` string, required
    - `description` string
  - `bridgingEstimates` BridgeLatencyEstimate[] — Estimated bridging durations for any bridge hops
    - `fromChainId` number, required
    - `toChainId` number, required
    - `token` string, required — Token bridged to the destination chain
    - `estimatedSeconds` number, required — Estimated bridge latency in seconds
    - `sendConfirmations` number — Send confirmations used for the estimation
    - `receiveConfirmations` number — Receive confirmations
    - `sendBlockTimeSeconds` number — Average block time assumed for the source chain (seconds)
    - `receiveBlockTimeSeconds` number — Average block time assumed for the destination chain (seconds)
    - `bridge` string — Bridge implementation or provider that produced the estimate
    - `source` 'defaults' | 'override' | 'fallback' — Source of the data (defaults, override, fallback)
    - `note` string — Optional note describing overrides or fallbacks applied
  - `validUntil` number — Unix timestamp (seconds) after which this quote expires. Transactions submitted after this time may revert.

---

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