Bundler API
ERC-4337 UserOperation bundling service
Production-grade bundler for account abstraction. Submit, simulate, and track UserOperations across all ERC-4337 compatible chains with reliable transaction inclusion.
UserOp Bundling
Efficiently bundle multiple UserOperations into single transactions.
Fast Inclusion
Priority transaction submission for quick block inclusion.
Simulation
Pre-flight simulation to validate operations before submission.
Multi-chain Support
ERC-4337 bundling across Ethereum, Polygon, Arbitrum, and more.
Get Your API Key
Start building in under 5 minutes
No credit card required. Free tier includes 300M compute units/month.
Trusted by developers building:
Key Capabilities
Everything you need, nothing you don't.
UserOp Bundling
Efficiently bundle multiple UserOperations into single transactions.
Fast Inclusion
Priority transaction submission for quick block inclusion.
Simulation
Pre-flight simulation to validate operations before submission.
Multi-chain Support
ERC-4337 bundling across Ethereum, Polygon, Arbitrum, and more.
Auto-retry
Automatic retry with gas price adjustment for stuck operations.
Status Tracking
Real-time status updates from submission to confirmation.
Operation History
Query past UserOperations and their execution results.
Custom Mempools
Support for alternative mempools and private submission.
Analytics
Track success rates, gas usage, and operation metrics.
Simple to Integrate
Get started with just a few lines of code. SDKs for every language.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
import "@account-abstraction/contracts/interfaces/IEntryPoint.sol";
import "@account-abstraction/contracts/interfaces/UserOperation.sol";
contract UserOpHelper {
IEntryPoint public immutable entryPoint;
constructor(address _entryPoint) {
entryPoint = IEntryPoint(_entryPoint);
}
// Encode a simple ETH transfer for UserOp callData
function encodeTransfer(address to, uint256 value) external pure returns (bytes memory) {
return abi.encodeWithSignature("execute(address,uint256,bytes)", to, value, "");
}
// Encode ERC20 transfer for UserOp callData
function encodeERC20Transfer(
address token,
address to,
uint256 amount
) external pure returns (bytes memory) {
bytes memory tokenCall = abi.encodeWithSignature("transfer(address,uint256)", to, amount);
return abi.encodeWithSignature("execute(address,uint256,bytes)", token, 0, tokenCall);
}
// Encode batch execution for UserOp callData
function encodeBatch(
address[] calldata targets,
uint256[] calldata values,
bytes[] calldata datas
) external pure returns (bytes memory) {
return abi.encodeWithSignature(
"executeBatch(address[],uint256[],bytes[])",
targets, values, datas
);
}
// Get gas limits for simulation
function estimateGas(UserOperation calldata userOp) external returns (
uint256 preVerificationGas,
uint256 verificationGasLimit,
uint256 callGasLimit
) {
// Simulate execution to estimate gas
try entryPoint.simulateValidation(userOp) {}
catch (bytes memory result) {
// Parse simulation result for gas estimates
}
}
// Get current nonce for account
function getNonce(address account) external view returns (uint256) {
return entryPoint.getNonce(account, 0);
}
}Built For
Smart Wallet Apps
Power account abstraction wallets with reliable bundling.
Gasless Transactions
Enable sponsored transactions with paymaster integration.
Batch Operations
Execute multiple actions in a single user signature.
Session Keys
Support for temporary permissions and automated actions.
Supported Chains
Start Building with Bundler API
Get your free API key and ship your first request in under 5 minutes. No credit card required.