Base exposes a single, fully EVM-compatible JSON-RPC API across two performance tiers. You can move from 2-second block confirmations to 200ms pre-confirmations by switching one URL and one block tag.
Networks
For network details, RPC endpoints, and wallet setup, see Connecting to Base.
The public Base endpoints are HTTP only. WebSocket RPC connections (eth_subscribe, newHeads, logs) are not available on public Base endpoints — use a node provider such as Alchemy or QuickNode for WebSocket support.
Flashblocks
All Base public endpoints are Flashblocks-enabled. Every standard eth_ method works identically, and the pending block tag reflects the current pre-confirmed block in progress, updated every ~200ms with new batches of sequencer-ordered transactions.
Calls like eth_getBalance, eth_getStorageAt, and eth_call run against real sequencer state up to 1.8 seconds before the block seals, with sub-second latency.
API Reference
Ethereum JSON-RPC API
Core Ethereum protocol methods for account queries, block and transaction data, gas estimation, and log filtering.
Methods marked ✓ support the "pending" block tag, which reflects the current pre-confirmed Flashblock in progress.
| Method | Description | Flashblocks pending |
|---|
| eth_blockNumber | Current block number | — |
| eth_getBalance | Account ETH balance | ✓ |
| eth_getTransactionCount | Account nonce / tx count | ✓ |
| eth_getCode | Deployed contract bytecode | ✓ |
| eth_getStorageAt | Contract storage slot value | ✓ |
| eth_call | Execute read-only call | ✓ |
| eth_getBlockByNumber | Block data by number | ✓ |
| eth_getBlockByHash | Block data by hash | — |
| eth_getBlockReceipts | All receipts for a block | ✓ |
| eth_getBlockTransactionCountByNumber | Tx count by block number | ✓ |
| eth_getBlockTransactionCountByHash | Tx count by block hash | — |
| eth_getTransactionByHash | Transaction data by hash | — |
| eth_getTransactionByBlockHashAndIndex | Tx by block hash and index | — |
| eth_getTransactionByBlockNumberAndIndex | Tx by block number and index | — |
| eth_getTransactionReceipt | Receipt for a mined tx | — |
| eth_sendRawTransaction | Submit signed transaction | — |
| eth_gasPrice | Current gas price | — |
| eth_maxPriorityFeePerGas | Max priority fee estimate | — |
| eth_feeHistory | Historical base fee and rewards | — |
| eth_estimateGas | Estimate gas for a tx | ✓ |
| eth_getLogs | Query event logs by filter | ✓ |
| eth_chainId | Network chain ID | — |
| eth_syncing | Node sync status | — |
| net_version | Network version ID | — |
| web3_clientVersion | Client version string | — |
| eth_subscribe | Subscribe to events (WSS) | ✓ |
| eth_unsubscribe | Cancel a subscription (WSS) | — |
Flashblocks API
Pre-confirmation methods for sub-second transaction signals on Base. These methods enable reading state, simulating bundles, and streaming events up to ~1.8 seconds before a block seals.
| Method | Description |
|---|
| eth_simulateV1 | Simulate transaction bundles against pre-confirmed state |
| base_transactionStatus | Check if a transaction has been received by the mempool |
| newFlashblockTransactions | Subscribe to individual pre-confirmed transactions |
| pendingLogs | Subscribe to filtered logs from pre-confirmed transactions |
| newFlashblocks | Subscribe to full Flashblock payload stream |
Debug API
Development and debugging utilities for deep transaction inspection and block replay. Debug methods replay transactions and are computationally expensive — availability and rate limits vary by node provider.
| Method | Description |
|---|
| debug_traceTransaction | Full EVM execution trace for a transaction |
| debug_traceBlockByHash | EVM traces for all transactions in a block by hash |
| debug_traceBlockByNumber | EVM traces for all transactions in a block by number |
All requests are HTTP POST with Content-Type: application/json.
| Field | Type | Description |
|---|
jsonrpc | string | Always "2.0" |
method | string | The RPC method name |
params | array | Method parameters in order |
id | number | string | Identifier echoed back in the response |
Request:
{
"jsonrpc": "2.0",
"method": "eth_getBalance",
"params": ["0x742d35Cc6634C0532925a3b8D4C9dD0b4f3BaEa", "pending"],
"id": 1
}
Success response:
{
"jsonrpc": "2.0",
"id": 1,
"result": "0x1a055690d9db80000"
}
Error response:
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32602,
"message": "Invalid params"
}
}
Error Codes
| Code | Name | Description |
|---|
-32700 | Parse error | Invalid JSON |
-32600 | Invalid request | Not a valid JSON-RPC 2.0 object |
-32601 | Method not found | Method does not exist or is unavailable |
-32602 | Invalid params | Invalid method parameters |
-32603 | Internal error | Internal JSON-RPC error |
-32000 | Server error | Node-specific error (see message) |
Block Parameters
| Value | Standard | Flashblocks |
|---|
"latest" | Most recently sealed block | Most recently sealed block |
"pending" | Unmined transaction pool state | Current Flashblock in progress (~200ms resolution) |
"safe" | Latest safe block | Latest safe block |
"finalized" | Latest finalized block | Latest finalized block |
"earliest" | Genesis block | Genesis block |
"0x<n>" | Specific block by number | Specific block by number |