Bundler JSON-RPC
Discover the active ERC-4337 chain and EntryPoint through DALP's bundler-compatible JSON-RPC endpoint.
The bundler endpoint gives account abstraction clients an ERC-4337-style JSON-RPC surface for network discovery. Wallets and SDKs can read the active chain ID or EntryPoint address before building a UserOperation flow.
For paymaster deposits, sponsorship settings, and signer-key rotation, see System paymasters. For the broader REST API, see API reference.
Endpoint
| Endpoint | Protocol | Content type | Use it for |
|---|---|---|---|
POST /api/v2/bundler | JSON-RPC 2.0 | application/json | Discover the active chain and ERC-4337 EntryPoint. |
The endpoint accepts a JSON-RPC 2.0 request object. Include an id when you expect a JSON response. Requests that omit id are handled as JSON-RPC notifications and return 204 No Content.
{
"jsonrpc": "2.0",
"id": 1,
"method": "eth_supportedEntryPoints",
"params": []
}A successful response echoes the same id and places the method result in result:
{
"jsonrpc": "2.0",
"result": ["0x1111111111111111111111111111111111111111"],
"id": 1
}Supported methods
| Method | Parameters | Result type | Use it for |
|---|---|---|---|
eth_chainId | none | hex string | Read the active network chain ID. |
eth_supportedEntryPoints | none | address array | Read the ERC-4337 EntryPoint supported by the platform. |
eth_chainId
Returns the active chain ID as a hexadecimal string, matching the Ethereum JSON-RPC convention used by wallets.
curl --request POST \
"$DALP_API_URL/api/v2/bundler" \
--header "Content-Type: application/json" \
--data '{
"jsonrpc": "2.0",
"id": 1,
"method": "eth_chainId",
"params": []
}'Example response:
{
"jsonrpc": "2.0",
"result": "0x89",
"id": 1
}eth_supportedEntryPoints
Returns the EntryPoint address DALP resolves for the active network. The response is an array so ERC-4337 clients can consume it through the standard bundler method shape.
curl --request POST \
"$DALP_API_URL/api/v2/bundler" \
--header "Content-Type: application/json" \
--data '{
"jsonrpc": "2.0",
"id": 2,
"method": "eth_supportedEntryPoints",
"params": []
}'Example response:
{
"jsonrpc": "2.0",
"result": ["0x1111111111111111111111111111111111111111"],
"id": 2
}If the network Directory contract is not configured, or if the EntryPoint registration has not been indexed yet, the endpoint returns a JSON-RPC error response. Retry after the network configuration is complete and indexing has caught up.
UserOperation methods
The endpoint recognizes JSON-RPC method names through the standard dispatcher. UserOperation submission and lookup methods are not available from this API surface. When the request includes an id, these calls return method not found. When the request omits id, DALP treats it as a JSON-RPC notification and returns 204 No Content without an error body.
| Method | Response with id |
|---|---|
eth_sendUserOperation | Method not found |
eth_estimateUserOperationGas | Method not found |
eth_getUserOperationByHash | Method not found |
eth_getUserOperationReceipt | Method not found |
Example response for a request with id:
{
"jsonrpc": "2.0",
"error": {
"code": -32601,
"message": "Method not found: eth_sendUserOperation. See ERC-4337 bundler documentation for supported methods."
},
"id": 3
}Error responses
The endpoint returns JSON-RPC error envelopes with HTTP 200 for parse, validation, and method errors, so bundler clients can handle failures through JSON-RPC semantics.
| Code | Meaning | When it appears |
|---|---|---|
-32700 | Parse error | The request body is not valid JSON. |
-32600 | Invalid request | The request is not a JSON-RPC 2.0 object, has no string method, or uses an invalid id type. |
-32601 | Method not found | The requested method is not supported by this endpoint. |
404 | Not found | The EntryPoint has not been indexed for the active network. |
503 | Unavailable | The network Directory contract is not configured for EntryPoint discovery. |
-32603 | Internal error | A supported method failed without a more specific JSON-RPC or DALP status code. |
Validation and method-resolution errors use this shape:
{
"jsonrpc": "2.0",
"error": {
"code": -32600,
"message": "Invalid JSON-RPC request",
"data": {
"dapiError": {
"id": "DALP-0085",
"category": "client",
"status": 400,
"retryable": false,
"message": "Invalid JSON-RPC request",
"why": "The JSON-RPC request is missing required fields or uses an unsupported shape.",
"fix": "Send a valid JSON-RPC 2.0 request with the required method, id, and params fields."
}
}
},
"id": 1
}For invalid JSON, DALP cannot read a request id, so the response uses id: null. Unsupported method responses use the JSON-RPC error envelope without data.dapiError because the method dispatcher can return a specific method-not-found message directly.
Integration notes
- Send
paramsas an array. The supported methods do not require parameters, so[]is sufficient. - Use request IDs when the caller needs a response. Omit
idonly for fire-and-forget JSON-RPC notifications. - Treat the returned EntryPoint as network-specific. Private and local networks can return an EntryPoint address registered for that environment instead of a hardcoded canonical address.
- Use the REST paymaster endpoints for funding and sponsorship operations; this JSON-RPC endpoint is for bundler-compatible discovery.
System paymasters
List system paymasters, check funding, manage sponsorship configuration, and rotate paymaster signer keys through the DALP API.
Token lifecycle
Visual flowcharts showing the complete token lifecycle from creation through minting, transfers, and burns with required API calls and permissions.