> ## Documentation Index
> Fetch the complete documentation index at: https://docs.enso.build/llms.txt
> Use this file to discover all available pages before exploring further.

# FAQ

> Find answers to common questions.

export const date_0 = "2025-09-18"

## Integration

### What networks does Enso support?

Enso supports multiple EVM-compatible networks. Check the [Supported Networks](/pages/build/reference/supported-networks) page for the latest list.

***

### What protocols does Enso support?

Enso supports 140+ protocols across various categories.
Use the [GET `/standards`](/api-reference/integration/standards) endpoint to get the latest list.
Here's a complete list of supported protocols:

<Accordion title="Supported Protocols" open={false} className="mb-4">
  * "bex"
  * "aave"
  * "radiant"
  * "zerolend"
  * "spark"
  * "angle"
  * "ankr"
  * "aura"
  * "avalon"
  * "balancer"
  * "burrbear"
  * "bancor"
  * "bedrock"
  * "beefy"
  * "beets"
  * "berachain-honey"
  * "compound-finance"
  * "venus"
  * "apeswap"
  * "flux-finance"
  * "iron-bank"
  * "moonwell"
  * "benqi"
  * "compound"
  * "convex"
  * "aura-lp"
  * "curve"
  * "dinero"
  * "erc20"
  * "erc4626"
  * "frax-finance"
  * "inverse-finance"
  * "gearbox"
  * "ethena"
  * "adapter-fi"
  * "mstable"
  * "idle"
  * "yieldnest"
  * "morpho"
  * "exactly"
  * "cian-protocol"
  * "reserve-protocol"
  * "d2-finance"
  * "mountain-protocol"
  * "gains-network"
  * "dolomite"
  * "concrete"
  * "acorn-wabtc"
  * "resolv"
  * "tokemak"
  * "liftdollar"
  * "rings"
  * "beraborrow"
  * "origami"
  * "the-honey-jar"
  * "dahlia"
  * "origin-protocol"
  * "infrared"
  * "yield-fi"
  * "etherfi"
  * "euler"
  * "fluid"
  * "frax"
  * "genesis-lrt"
  * "gmx"
  * "goldilocks"
  * "harvest-finance"
  * "inception-lrt"
  * "ipor"
  * "kelp"
  * "kelp-rseth-wrapped"
  * "kernel"
  * "kiln"
  * "kodiak"
  * "lido"
  * "locus"
  * "lorenzo"
  * "mantle"
  * "maverick"
  * "moby"
  * "molten"
  * "mozaic"
  * "pendle"
  * "permit2"
  * "pickle"
  * "polygon"
  * "pooltogether"
  * "primex"
  * "prisma"
  * "pumpbtc"
  * "renzo"
  * "reserve"
  * "reservoir"
  * "restake"
  * "rocketpool"
  * "origin"
  * "stakestone"
  * "satlayer"
  * "silo"
  * "sky"
  * "solv"
  * "sommelier"
  * "stability"
  * "stable-jack"
  * "stader"
  * "stakedao"
  * "stargate"
  * "steer"
  * "summer-fi"
  * "swell"
  * "symbiotic"
  * "shibaswap"
  * "verse"
  * "uniswap"
  * "unsheth"
  * "usual"
  * "vaultcraft"
  * "vector"
  * "veda"
  * "velodrome"
  * "aerodrome"
  * "vesper"
  * "wrapped-native"
  * "yearn"
  * "pancakeswap"
  * "sushiswap"
  * "pangolin"
  * "beradrome"
  * "camelot"
  * "trader-joe"
  * "pancakeswap-amm-v3"
  * "bakerdao"
  * "treehouse"
  * "shadow-exchange"
  * "swapx"
  * "vicuna"
  * "yeet"
  * "level
</Accordion>

***

### Is it safe and secure to use Enso as a third party service?

Enso prioritizes security in the following ways:

* Smart contract code is [audited](https://github.com/EnsoBuild/enso-audits).
* All transactions are simulated before execution, with actual values returned in the API response
* End users can independently simulate transactions using Tenderly before on-chain execution

***

### What is the default rate limit for the API?

<Note>Rate limits can be increased [on demand](https://t.me/enso_shortcuts).</Note>
The default rate limit is 10 requests per second (RPS).
When the limit is exceeded, you'll receive a `429 Too Many Requests` error.

***

### How do I request support for a new token or protocol?

We are constantly expanding our support for new assets and protocols.
If you'd like to request an integration, please reach out to our BD or DevRel team in [Telegram Dev Channel](https://t.me/enso_shortcuts) or our shared channel.

## API Basics

### What's the difference between `route` and `bundle` endpoints?

<Tip>
  **The `route` is optimally pre-populated `bundle`**
  The `route` API automatically creates a bundle of actions in order to find the optimal route for your desired outcome.
  The `bundle` API allows you to specify the exact actions and protocols you want to use in your transaction.
</Tip>

* The [POST `/shortcuts/route`](/api-reference/defi-shortcuts/optimal-route-between-two-tokens) API endpoint is used when:
  * You want an optimal path from any token `tokenIn` to any token `tokenOut`
  * You don't care about the specific actions and intermediary tokens on the route
  * You're using tokenized positions (for non-tokenized positions, use the `nontokenized` endpoint)
* The [POST `/shortcuts/bundle`](/api-reference/defi-shortcuts/bundle-a-list-of-actions) endpoint is used when:
  * You want to to bundle multiple actions into a single transaction
  * You want to use specific protocols for your route
  * You want to actions like `harvest` and `redeem`

***

### What's the difference between `route` and `nontokenized` endpoints?

* The [POST `/shortcuts/route`](/api-reference/defi-shortcuts/optimal-route-between-two-tokens) API endpoint is used for tokenized positions where you receive a token representing your position (like aTokens in Aave).
* The [GET `/shortcuts/route/nontokenized`](/api-reference/defi-shortcuts/routing-to-a-non-tokenized-position) endpoint is for non-tokenized positions, which are stored directly in a smart contract (usually a Smart Wallet).

***

### When do I need to use a Smart Wallet?

Use the Smart Wallet (mandatory `delegate` routing strategy) with either `shortcuts/route`, `shortcuts/bundle` and `shortcuts/route/nontokenized` when:

* You are using a Smart Wallet (like Argent or Gnosis Safe)
* You want a `POST /shortcuts/bundle` including [`harvest`](/pages/build/reference/actions#harvest) or [`redeem`](/pages/build/reference/actions#redeem) actions
* You want to use `GET /shortcuts/route/nontokenized` endpoint
* You want to specify a [`spender` address](/api-reference/defi-shortcuts/optimal-route-between-two-tokens-1#body-spender) for `redeem` actions

***

### What is the difference between `router` and `delegate` routing strategies?

Both routing strategies are used with `POST /shortcuts/route`, and `POST /shortcuts/bundle`, and `POST /shortcuts/route/nontokenized` endpoints:

* `router`: Standard routing strategy for EOAs (Externally Owned Accounts). With this strategy, prior to executing your route, you must approve Enso Router to spend input tokens. You can do so by using [`approve` API](/api-reference/defi-shortcuts/approve-enso-contract).
* `delegate`: Routing strategy for smart wallets, allowing for delegate calls. No approvals necessary prior to sending transaction. You also must use `delegate` for actions such as `borrow`, `harvest`, and `repay`.
  The routing strategy instructs the API on how to build the transaction calldata, and which of Enso's smart contracts to use for execution. The API response contains the calldata and the correct recipient in `tx.to` field, that points to [one of Enso's contracts](/pages/build/reference/deployments).
  Learn more about [routing strategies](/pages/build/reference/routing-strategies).

***

### How do I authenticate API requests?

API requests require an authentication token in the Authorization header:

```
-H 'Authorization: Bearer YOUR_API_KEY'
```

***

### How do I get and use the returned calldata?

The API returns transaction calldata that should be sent to the [`EnsoShortcutRouter`](https://etherscan.io/address/0x80EbA3855878739F4710233A8a19d89Bdd2ffB8E#code) contract.

## Routing Mechanics

### How does the routing work behind the scenes?

Enso's router functions as a configurable multicall that can execute multiple actions in a single transaction on a specific chain. It optimizes the route based on current market conditions to find the best path for your transaction, whether it's a swap, zap, deposit and so on.

***

### Does Enso support cross-chain transactions?

Both `route` and `bundle` API support crosschain routing.

***

### What contract does the calldata interact with?

The calldata should be sent to the [`EnsoShortcutRouter`](https://etherscan.io/address/0x80EbA3855878739F4710233A8a19d89Bdd2ffB8E#code) contract on the respective chain.

***

### How does Enso handle wallet types?

Enso recognizes two different [routing strategies](/pages/build/reference/routing-strategies).

* The standard `route` routing strategy is designed for EOAs (Externally Owned Accounts). To use a smart wallet, use `delegate` routing strategy.

***

### What happens if the user doesn't have sufficient funds?

The API will return a route, but transaction execution will fail if sufficient funds aren't available.

## OneStable (crosschain routing)

### How do I do complex multichain routing

For complex multichain routing, you can use nested bridge actions with callbacks, chaining operations across multiple chains in a single bundle.

[**Crosschain Routing**](/pages/build/get-started/crosschain-routing)

***

### Are there any limitations on callback complexity?

* **Maximum actions**: Bundles support up to 10 actions total (including those in callbacks)

***

### How do I ensure my funds are safe during cross-chain operations?

Always set both `receiver` and `refundReceiver` addresses when using bridge callbacks. The `refundReceiver` gets the refund if callback actions fail on the destination chain. If `refundReceiver` is not set, tokens go to the `receiver` address on failure.

***

### How do I estimate the total gas cost across multiple chains, including callback execution?

The bundle API returns the simulated gas it will use in the response. You can provide an additional `callbackGasLimit` parameter to control the maximum gas the transaction can spend on the destination chain to avoid excessive gas consumption.

***

### Can I query the status of a pending bridge transaction?

Yes. Enso provides protocol-specific status endpoints for Stargate, CCIP, and Relay bridges. Pass your source chain ID and transaction hash to check delivery progress, poll for completion, and verify callback execution.

See [Bridge Transaction Status](/pages/build/get-started/bridge-status) for endpoints, response details, and a polling implementation guide.

***

### What happens to my bridge callback actions if one fails midway?

If the transaction on the destination chain fails/reverts, the bridged tokens are sent to the refundReceiver address (or receiver if no refundReceiver is specified).Retry

***

### How do I know if a token has a valid pool on both source and destination chains?

The SDK provides the getLayerZeroPool() method to check if a pool exists for a token/chain combination. Additionally, when you make a bundle request, it will simulate the entire cross-chain transaction and fail if pools don't exist.

```typescript theme={null}
const poolsInfo = await client.getLayerZeroPool({
  chainId: 1,
  token: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
  destinationChainId: '8453',
  destinationToken: '0x...'
});
console.log(poolsInfo[0]);
```

***

### What happens if the destination pool doesn't have enough liquidity?

## Error Handling

### How can I test transactions before executing them?

You can simulate transactions using Tenderly before executing them on-chain.

## Enso Contracts

### Are the Enso smart contracts upgradable? What are the security implications?

Our core routing logic is handled by immutable, audited smart contracts to ensure maximum security.
We use a delegate proxy pattern to enable simplified interaction when signing via Smart Wallets, controlled by the [`routingStrategy` API parameter](#what-is-the-difference-between-router-and-delegate-routing-strategies).
All contract updates undergo rigorous internal testing and external audits before deployment.
Learn more about [Enso contracts](/pages/build/reference/deployments).

## Integration Patterns

### How should I implement recurring transactions?

Since routes are dynamic and market conditions change, the best approach for recurring transactions is to use an off-chain actor that calls the API periodically to get the latest optimal route.

***

### How can I integrate Enso with a custom smart contract?

You can create a custom contract that calls the [`EnsoShortcutRouter`](https://etherscan.io/address/0x80EbA3855878739F4710233A8a19d89Bdd2ffB8E#code) with the data returned from the API.

***

### Can I integrate Enso with a bot?

Yes, Enso's API is suitable for bot integration, such as for dutch auction fills, liquidation bots, or automated trading strategies.

***

### What types of DeFi operations does Enso support?

Enso supports a wide [range of DeFi operations](/pages/build/reference/actions) including swaps, deposits, lending, borrowing, staking into LSTs, and complex compositions of these actions.

## DeFi FAQ

### How is slippage handled in routes?

Slippage is specified in basis points as a parameter in API calls (e.g., 300 = 3%).
The response amount `tokenOut` accounts for any slippage, as the API simulates the transaction before returning the route.

***

### How do I know the price imapct of my route?

When using `POST /shortcuts/route`, `POST /shortcuts/bundle`, or `POST /shortcuts/route/nontokenized`, the API returns the `priceImpact` field. This value is obtained from a transaction simulation, and indicates the expected price impact.

***

### Does `redeem` action withdraw additional pool rewards?

The `redeem` action does not withdraw additional pool rewards.
It only redeems the underlying asset from the pool. To withdraw rewards, use the `harvest` action.

## Common Errors and Solutions

### "Could not build shortcuts for route" Error

This error in `/shortcuts/route` API indicates that Enso couldn't find a valid route between the specified tokens on the specified network.
Possible solutions:

* Verify token addresses are correct
* Check if the token pair is supported on the specified chain
* Verify the protocol integration is working
* Check if your operation demands a `redeem` or `harvest` action, which must be used via the `bundle` endpoint, using the `delegate` routing strategy.

<div className="text-right text-xs gray-200 font-semibold w-full" style={{marginTop: '0'}}>
  <p style={{
        color: "#b2b2b2"  
    }}>Updated {date_0}</p>
</div>
