> ## 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?

Submit the returned transaction exactly as provided. Use its `tx.to`, `tx.data`, and `tx.value`; the target depends on the selected routing strategy and chain.

## 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 execution contract depends on the chain and routing strategy. Submit the transaction using the `tx.to` returned by the API. See [Deployments](/pages/build/reference/deployments) to inspect contract addresses.

***

### 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?

* **Top-level actions:** 50 maximum
* **Total actions including callbacks:** 100 maximum
* **Actions per callback:** 10 maximum
* **Callback nesting depth:** 5 maximum

***

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

Use current bridge discovery data, set the documented receiver fields for the selected endpoint, respect quote expiry, and monitor both source delivery and destination execution. Recovery and refund behavior is provider-specific; do not assume every callback failure automatically transfers funds to a common fallback address.

***

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

The Bundle API estimates source execution and bridge callback fees for the selected route. Callback gas is calculated by the backend; `callbackGasLimit` is not a public Bundle parameter. Rebuild an expired quote rather than modifying the returned transaction.

***

### 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?

The destination callback transaction reverts atomically, but it cannot revert a finalized source-chain bridge. Recovery and refund behavior depends on the bridge provider and route. Set the documented receiver/refund fields, then use [Bridge Status](/pages/build/get-started/bridge-status) to inspect delivery and callback execution.

***

### 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>
