---
title: "Find optimal route between token and nontokenized position"
method: GET
path: "/api/v1/shortcuts/route/nontokenized"
tags: ["shortcuts"]
---

# Find optimal route between token and nontokenized position

`GET /api/v1/shortcuts/route/nontokenized`

## Request

- Base URL: `https://api.enso.finance`
- URL: `https://api.enso.finance/api/v1/shortcuts/route/nontokenized`
- Auth: HTTP bearer

## Query parameters

- `chainId` number
- `fromAddress` string, required
- `routingStrategy` 'router' | 'delegate' | 'delegate-legacy' | 'checkout', nullable
- `referralCode` string
- `destinationChainId` number
- `tokenIn` string[], required
- `positionOut` string, required
- `slippage` string
- `ignoreAggregators` string[], nullable
- `ignoreBridges` string[], nullable
- `ignoreStandards` string[], nullable
- `amountIn` string[], required
- `receiver` string, required
- `spender` string
- `refundReceiver` string

## Response `200`

- NontokenizedRouteShortcutTransaction
  - `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' | 'layerzero-teller' | 'arbitrum-native' | 'mayan', 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
    - `bridgeFees` BridgeFee[]: Bridge protocol and intent execution fees
      - `protocol` string, required: Bridge protocol associated with the fee
      - `component` 'bridge' | 'intentExecution', required
      - `chainId` number, required: Chain on which the fee is paid
      - `destinationChainId` number, required: Destination chain of the bridge action
      - `token` string, required: Token used to pay the bridge fee
      - `type` 'maximum' | 'quoted', required: Whether amount is a maximum reserved for execution or a quote-time fee breakdown
      - `deductedFromAmountOut` boolean, required: Whether the fee has already reduced the candidate amountOut and must not be subtracted again when scoring.
      - `amount` string, required: Bridge fee in the token base unit.
      - `amountUsd` string, nullable: Bridge fee in USD when includeTransactionCost=true and pricing is available
    - `bridgeFeeUsd` string, nullable: USD sum of the reported bridge protocol and intent execution fee amounts when includeTransactionCost=true. May include maximum fee reserves. Null when any non-zero fee cannot be priced.
  - `createdAt` number, required: Block number the transaction was created on
  - `gas` string, required
  - `amountDeposited` union, required: Amount deposited into the position. Balanced multi-token deposits return an array ordered to match the deposit tokens in the route.
    - string
    - string[]
  - `amountOut` string: Amount out in the destination protocol precision. Only available for hypercore-spot deposits, where it represents the amount in 8-decimal HyperCore precision.
  - `priceImpact` number, nullable: Price impact in basis points (1/10000) between the initial route value and the positionAmount. For example, 50 = 0.50%. Returns null if price impact calculation is not available.
  - `tx` Transaction, required
    - `data` string, required
    - `to` string, required
    - `from` string, required
    - `value` string, required
  - `route` Hop[], required: The route the shortcut will use
    - `tokenIn` string[], required
    - `tokenOut` string[], required
    - `protocol` string, required
    - `action` 'approve' | 'borrow' | 'borrowwithpositionid' | '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' | 'requestredeem' | 'swap' | 'transfer' | 'transferfrom' | 'withdraw' | 'singlewithdraw' | 'singlewithdrawwithpositionid' | 'multiwithdraw' | 'bridge' | '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.
  - `feeAmount` string[]
  - `ensoFeeAmount` string[]
  - `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
  - `bridgingEstimates` BridgeLatencyEstimate[]: Estimated bridge durations when the flow contains bridges
    - `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` 'protocol' | 'measured' | 'model' | 'defaults' | 'override' | 'fallback': Source of the data (protocol, measured, model, 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.

## Other responses

- `400`

## Changes

- **2026-11-02** `d43e21a824af`: 1 warning, 1 info
  - added the new `mayan` enum value to the `metadata/bridgeRefundAssets/items/protocol` response property for the response status `200`
  - added the enum value `mayan` to the property `items/` of the `query` request parameter `ignoreBridges`
- **2026-10-20** `5e19cbf17e08`: 1 info
  - added the enum value `akka` to the property `items/` of the `query` request parameter `ignoreAggregators`
- **2026-10-07** `44c6107ea06a`: 1 warning
  - added the new `requestredeem` enum value to the `route/items/action` response property for the response status `200`
- **2026-10-05** `16c7389acd8b`: 3 warning
  - deleted the `query` request parameter `destinationFeeReceiver`
  - deleted the `query` request parameter `fee`
  - deleted the `query` request parameter `feeReceiver`
- **2026-09-26** `3e0d90f517ed`: 1 warning, 1 info
  - added the new `arbitrum-native` enum value to the `metadata/bridgeRefundAssets/items/protocol` response property for the response status `200`
  - added the enum value `arbitrum-native` to the property `items/` of the `query` request parameter `ignoreBridges`

[Operation history](https://skmtc.dev/enso/apis/enso-api-2/changes/api/v1/shortcuts/route/nontokenized/get.md)

---

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