Bundler Endpoints
All bundler endpoints follow the JSON-RPC 2.0 specification and are available at:
https://api.openfort.io/rpc/{chainId}Include your Openfort publishable key in the Authorization header:
Authorization: Bearer YOUR_OPENFORT_PUBLISHABLE_KEYeth_sendUserOperation
Submits a UserOperation to be included on-chain. Returns the userOpHash if successful.
Request (EntryPoint v0.8 & v0.9)
{
"jsonrpc": "2.0",
"method": "eth_sendUserOperation",
"params": [
{
"sender": "0x5a6b47F4131bf1feAFA56A05573314BcF44C9149",
"nonce": "0x845ADB2C711129D4F3966735ED98A9F09FC4CE5700000000000000000000",
"factory": "0xd703aaE79538628d27099B8c4f621bE4CCd142d5",
"factoryData": "0xc5265d5d...",
"callData": "0xe9ae5c53...",
"callGasLimit": "0x13880",
"verificationGasLimit": "0x60B01",
"preVerificationGas": "0xD3E3",
"maxPriorityFeePerGas": "0x3B9ACA00",
"maxFeePerGas": "0x7A5CF70D5",
"paymaster": "0x...",
"paymasterVerificationGasLimit": "0x0",
"paymasterPostOpGasLimit": "0x0",
"paymasterData": "0x...",
"signature": "0xa6cc6589..."
},
"0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108"
],
"id": 1
}Request (EntryPoint v0.6)
{
"jsonrpc": "2.0",
"method": "eth_sendUserOperation",
"params": [
{
"sender": "0xb341FEAFaF71b09089d03B7D114599f8F491EE45",
"nonce": "0x0",
"initCode": "0x5de4839a76cf55d0c90e2061ef4386d962E15ae3...",
"callData": "0x51945447...",
"callGasLimit": "0x115b5c0",
"verificationGasLimit": "0x249f0",
"preVerificationGas": "0xeb11",
"maxPriorityFeePerGas": "0x12a05f200",
"maxFeePerGas": "0x5b08082fa",
"paymasterAndData": "0x",
"signature": "0xa6cc6589..."
},
"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789"
],
"id": 1
}Response
{
"jsonrpc": "2.0",
"id": 1,
"result": "0x4c31ae84205a9c862dd8d0822f427fb516448451850ee6f65351951f6a2b2154"
}Parameters
| Parameter | Type | Description |
|---|---|---|
sender | Address | The account making the operation |
nonce | Hex | Unique identifier for the request |
factory | Address | (v0.8+) Factory contract for account deployment |
factoryData | Hex | (v0.8+) Data for factory contract |
initCode | Hex | (v0.6) Initialization code for the smart account |
callData | Hex | Data to pass during main execution |
callGasLimit | Hex | Gas for main execution |
verificationGasLimit | Hex | Gas for verification step |
preVerificationGas | Hex | Gas for pre-verification |
maxFeePerGas | Hex | Maximum fee per gas (EIP-1559) |
maxPriorityFeePerGas | Hex | Maximum priority fee per gas |
paymaster | Address | (v0.8+) Paymaster contract address |
paymasterVerificationGasLimit | Hex | (v0.8+) Gas for paymaster verification |
paymasterPostOpGasLimit | Hex | (v0.8+) Gas for paymaster post-op |
paymasterData | Hex | (v0.8+) Data for paymaster |
paymasterAndData | Hex | (v0.6) Combined paymaster address and data |
signature | Hex | Signature authorizing the operation |
eth_estimateUserOperationGas
Estimates gas values for a UserOperation. Returns the estimated preVerificationGas, verificationGasLimit, and callGasLimit.
Request
{
"jsonrpc": "2.0",
"method": "eth_estimateUserOperationGas",
"params": [
{
"sender": "0x...",
"nonce": "0x0",
"callData": "0x...",
"signature": "0x..."
},
"0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108"
],
"id": 1
}Response
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"preVerificationGas": "0xd3e3",
"verificationGasLimit": "0x60b01",
"callGasLimit": "0x13880"
}
}eth_getUserOperationReceipt
Returns the receipt of a UserOperation after it has been included on-chain.
Request
{
"jsonrpc": "2.0",
"method": "eth_getUserOperationReceipt",
"params": [
"0x4c31ae84205a9c862dd8d0822f427fb516448451850ee6f65351951f6a2b2154"
],
"id": 1
}Response
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"userOpHash": "0x4c31ae84205a9c862dd8d0822f427fb516448451850ee6f65351951f6a2b2154",
"entryPoint": "0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108",
"sender": "0x5a6b47F4131bf1feAFA56A05573314BcF44C9149",
"nonce": "0x0",
"paymaster": "0x...",
"actualGasCost": "0x5208",
"actualGasUsed": "0x5208",
"success": true,
"logs": [],
"receipt": {
"transactionHash": "0x...",
"blockNumber": "0x...",
"blockHash": "0x..."
}
}
}eth_getUserOperationByHash
Retrieves a UserOperation by its hash.
Request
{
"jsonrpc": "2.0",
"method": "eth_getUserOperationByHash",
"params": [
"0x4c31ae84205a9c862dd8d0822f427fb516448451850ee6f65351951f6a2b2154"
],
"id": 1
}Response
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"userOperation": {
"sender": "0x...",
"nonce": "0x0",
"callData": "0x..."
},
"entryPoint": "0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108",
"blockNumber": "0x...",
"blockHash": "0x...",
"transactionHash": "0x..."
}
}eth_supportedEntryPoints
Returns the list of EntryPoint contracts supported on the current chain.
Request
{
"jsonrpc": "2.0",
"method": "eth_supportedEntryPoints",
"params": [],
"id": 1
}Response
{
"jsonrpc": "2.0",
"id": 1,
"result": [
"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789",
"0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108",
"0x433709009B8330FDa32311DF1C2AFA402eD8D009"
]
}