Integration
What networks does Enso support?
Enso supports multiple EVM-compatible networks. Check the Supported Networks page for the latest list.What protocols does Enso support?
Enso supports 140+ protocols across various categories. Use the GET/standards endpoint to get the latest list.
Here’s a complete list of supported protocols:
Supported Protocols
Supported Protocols
- “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
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.
- 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?
Rate limits can be increased on demand.
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 or our shared channel.API Basics
What’s the difference between route and bundle endpoints?
- The POST
/shortcuts/routeAPI endpoint is used when:- You want an optimal path from any token
tokenInto any tokentokenOut - 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
nontokenizedendpoint)
- You want an optimal path from any token
- The POST
/shortcuts/bundleendpoint 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
harvestandredeem
What’s the difference between route and nontokenized endpoints?
- The POST
/shortcuts/routeAPI endpoint is used for tokenized positions where you receive a token representing your position (like aTokens in Aave). - The GET
/shortcuts/route/nontokenizedendpoint 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 (mandatorydelegate 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/bundleincludingharvestorredeemactions - You want to use
GET /shortcuts/route/nontokenizedendpoint - You want to specify a
spenderaddress forredeemactions
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 usingapproveAPI.delegate: Routing strategy for smart wallets, allowing for delegate calls. No approvals necessary prior to sending transaction. You also must usedelegatefor actions such asborrow,harvest, andrepay. 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 intx.tofield, that points to one of Enso’s contracts. Learn more about routing strategies.
How do I authenticate API requests?
API requests require an authentication token in the Authorization header:How do I get and use the returned calldata?
The API returns transaction calldata that should be sent to theEnsoShortcutRouter 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?
Bothroute and bundle API support crosschain routing.
What contract does the calldata interact with?
The calldata should be sent to theEnsoShortcutRouter contract on the respective chain.
How does Enso handle wallet types?
Enso recognizes two different routing strategies.- The standard
routerouting strategy is designed for EOAs (Externally Owned Accounts). To use a smart wallet, usedelegaterouting 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 RoutingAre 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 bothreceiver 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 additionalcallbackGasLimit 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?
You can use the LayerZero Scan API to track bridge transaction status by passing the transaction hash: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).RetryHow 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.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 theroutingStrategy API parameter.
All contract updates undergo rigorous internal testing and external audits before deployment.
Learn more about Enso contracts.
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 theEnsoShortcutRouter 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 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 amounttokenOut 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 usingPOST /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
redeemorharvestaction, which must be used via thebundleendpoint, using thedelegaterouting strategy.
Updated
