OpenAPI Specification
openapi: 3.1.0
info:
title: Base JSON-RPC API
version: 1.0.0
description: Standard Ethereum JSON-RPC interface for the Base network, Coinbase's Ethereum Layer 2 built on the OP Stack and part of the Optimism Superchain. All calls are HTTP POST with a JSON-RPC 2.0 payload. The public endpoints are rate-limited and not recommended for production; teams typically front them with Alchemy, QuickNode, Infura, Coinbase Developer Platform, or self-hosted op-geth + op-node. Flashblocks endpoints provide preconfirmed block data with lower latency.
contact:
name: Base Documentation
url: https://docs.base.org/chain/network-information
servers:
- url: https://mainnet.base.org
description: Base Mainnet (chain ID 8453)
- url: https://mainnet-preconf.base.org
description: Base Mainnet Flashblocks (preconfirmations)
- url: https://sepolia.base.org
description: Base Sepolia testnet (chain ID 84532)
- url: https://sepolia-preconf.base.org
description: Base Sepolia Flashblocks (preconfirmations)
tags:
- name: JSON-RPC
description: Ethereum JSON-RPC 2.0 endpoint
paths:
/:
post:
tags:
- JSON-RPC
summary: JSON-RPC 2.0 request
description: Single endpoint that accepts any JSON-RPC 2.0 request. Supports the standard Ethereum namespaces (`eth_*`, `net_*`, `web3_*`) plus Optimism-specific extensions for fee estimation and L1 messaging. Batched requests (JSON arrays of request objects) are also supported.
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/JsonRpcRequest'
- type: array
items:
$ref: '#/components/schemas/JsonRpcRequest'
examples:
eth_blockNumber:
summary: Get the latest block number
value:
jsonrpc: '2.0'
id: 1
method: eth_blockNumber
params: []
eth_chainId:
summary: Get the chain ID
value:
jsonrpc: '2.0'
id: 1
method: eth_chainId
params: []
eth_getBalance:
summary: Get an account balance at the latest block
value:
jsonrpc: '2.0'
id: 1
method: eth_getBalance
params:
- '0x0000000000000000000000000000000000000000'
- latest
eth_call:
summary: Execute a read-only contract call
value:
jsonrpc: '2.0'
id: 1
method: eth_call
params:
- to: '0x0000000000000000000000000000000000000000'
data: 0x
- latest
eth_sendRawTransaction:
summary: Submit a signed transaction
value:
jsonrpc: '2.0'
id: 1
method: eth_sendRawTransaction
params:
- 0x...
responses:
'200':
description: JSON-RPC response (or array of responses for batched calls)
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/JsonRpcResponse'
- type: array
items:
$ref: '#/components/schemas/JsonRpcResponse'
'429':
description: Rate limit exceeded
5XX:
description: Upstream node error
components:
schemas:
JsonRpcRequest:
type: object
required:
- jsonrpc
- method
properties:
jsonrpc:
type: string
const: '2.0'
id:
oneOf:
- type: string
- type: integer
- type: 'null'
method:
type: string
description: JSON-RPC method name. Standard Ethereum methods include `eth_blockNumber`, `eth_chainId`, `eth_getBalance`, `eth_getTransactionByHash`, `eth_getTransactionReceipt`, `eth_call`, `eth_estimateGas`, `eth_sendRawTransaction`, `eth_getLogs`, `eth_getBlockByNumber`, `net_version`, `web3_clientVersion`.
params:
oneOf:
- type: array
- type: object
JsonRpcResponse:
type: object
required:
- jsonrpc
- id
properties:
jsonrpc:
type: string
const: '2.0'
id:
oneOf:
- type: string
- type: integer
- type: 'null'
result:
description: Method-specific result; present on success.
error:
$ref: '#/components/schemas/JsonRpcError'
JsonRpcError:
type: object
required:
- code
- message
properties:
code:
type: integer
message:
type: string
data:
description: Optional error data.