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
| Network | Chain ID | Type | Archive |
|---|
| Mainnet | 8453 | Production | Yes |
| Sepolia | 84532 | Testnet | Yes |
Endpoints
| Tier | HTTP | WSS |
|---|
| Standard | https://mainnet.base.org | wss://mainnet.base.org |
| Flashblocks | https://mainnet-preconf.base.org | wss://mainnet-preconf.base.org |
| Tier | HTTP | WSS |
|---|
| Standard | https://sepolia.base.org | wss://sepolia.base.org |
| Flashblocks | https://sepolia-preconf.base.org | wss://sepolia-preconf.base.org |
The public endpoints above are rate-limited and not suitable for production traffic. For production use, connect through a node provider.
What is the Flashblocks Tier?
Flashblocks endpoints are fully EVM-equivalent; every standard eth_ method works identically. The difference is in what the pending block tag returns:
- On Standard endpoints,
pending reflects the transaction pool (unmined state).
- On Flashblocks endpoints,
pending 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. All methods work on both Standard and Flashblocks endpoints.
Methods marked ✓ support the "pending" block tag on Flashblocks endpoints.
| 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 are only available on Flashblocks endpoints and 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 |