Base RPC node & API — chain ID 8453
Last updated:
Get API key Read the documentation
Network details
| Network | Base mainnet (OP Stack L2 on Ethereum) |
|---|---|
| Chain ID | 8453 |
| Currency | ETH |
| RPC URL | https://triport.io/rpc/base |
| WebSocket URL | wss://triport.io/ws/base (from Basic, scope base:ws) |
| Flashblocks feed | wss://triport.io/ws/base-feed (Pro+, scope base:feed, address filter required) |
| Authentication | x-token: $TRIPORT_API_KEY (Authorization: Bearer also accepted) |
| Keyed URL for wallets | https://triport.io/r/<API_KEY>/rpc/base |
What works today
| Capability | Status | Notes |
|---|---|---|
| JSON-RPC reads | Available | eth_getLogs <= 10000 blocks |
| Transaction submission | Acceptance unverified | Routing is confirmed; acceptance of a valid transaction is not verified. |
| WebSocket newHeads | Available | — |
| Flashblocks feed | Limited | An address filter is required; latency figures are not published. |
Reads cover the standard EVM surface — balances, code and storage, blocks and receipts, transactions, gas and fee history. eth_getLogs is capped at 10,000 blocks per query; a wider range returns -32005 block_range_exceeds_10000, so split the range or read whole blocks with eth_getBlockReceipts. JSON-RPC batches are accepted and every element counts as one request.
Under investigation
WebSocket logs — we are not promising this surface while the defect is open, and it carries no CTA anywhere on the site. Until it is closed, poll eth_getLogs in 10,000-block windows instead of subscribing. The status here changes when the registry entry changes, not when the copy is rewritten.
Flashblocks, and what we do not claim about it
Base produces Flashblocks — preconfirmation blocks published ahead of the full L2 block. Triport relays that stream on wss://triport.io/ws/base-feed from Pro with the base:feed scope. An address filter is mandatory: a connection without one is refused with filter_required. We publish no latency numbers for this feed, because we have not measured them end to end through our own path — see Flashblocks.
Published but not sold yet
| Capability | Status | Notes |
|---|---|---|
| Block with receipts (recipe) | Prepared | Not a JSON-RPC method: call eth_getBlockByNumber and eth_getBlockReceipts. |
| Proofs, debug and trace | Prepared | Availability is being confirmed; not sold as working yet. |
| Synchronous submission | Prepared | — |
| Simulation | Prepared | — |
| Bundles | Provider key required | Requires a provider credential; on request. |
| Private transactions | On request | — |
| Account abstraction (ERC-4337) | On request | — |
| Transaction status | Prepared | — |
| Pending transactions | Prepared | — |
| Auction feed | Provider key required | Requires a provider key and a redistribution entitlement. |
Transaction submission is published as accept_unverified: the route is implemented and confirmed, but acceptance of a valid transaction has not been verified end to end. See transactions.
Not supported on Base
admin_peers, engine_newPayloadV3, estimateUserOperationGas, eth_clientVersion, eth_sendPrivateRawTransaction, eth_sendRawTransactionConditional, optimism_outputAtBlock, optimism_rollupConfig, optimism_syncStatus, rollup_getInfo, txpool_content, txpool_inspect, txpool_status are not served. Asking for them returns an error rather than a silent fallback — see what is missing.
Limits and plans
| Capability | Free trial (7 days) | Basic | Pro | Business | Enterprise |
|---|---|---|---|---|---|
| Reads | 10 | 20 | 100 | 250 | 250 |
| Submission | 3 | 5 | 30 | 80 | 80 |
| Proofs, debug and trace (prepared) | — | — | 2 | 5 | 5 |
| Simulation (prepared) | — | — | 2 | 5 | 5 |
| WebSocket connections | — | 1 × 10 subs | 2 × 10 subs | 4 × 10 subs | 4 × 10 subs |
| Flashblocks feed streams | — | — | 1 | 2 | 2 |
| Auction feed | — | — | — | 1 (provider key) | 1 (provider key) |
Enterprise carries the same 250 RPS read ceiling as Business on Base — the difference is contractual, not a higher number. Plans: Basic $20, Pro $249, Business $499, Enterprise from $999 per month. Free is a 7-day trial with a single key in the EU region, not a permanent plan. See Base limits.
Every plan with its limits on every network, and what a plan costs at its cap: RPC pricing.
Quickstart
# curl
curl https://triport.io/rpc/base \
-H 'x-token: $TRIPORT_API_KEY' -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'
# viem
import { createPublicClient, http } from "viem";
import { base } from "viem/chains";
const client = createPublicClient({
chain: base,
transport: http("https://triport.io/r/<API_KEY>/rpc/base"),
});
# Hardhat / Foundry
networks: { base: { url: "https://triport.io/r/<API_KEY>/rpc/base", chainId: 8453 } }
rpc_endpoints = { base = "https://triport.io/r/<API_KEY>/rpc/base" }FAQ
- What is the Base RPC URL?
- https://triport.io/rpc/base for JSON-RPC over HTTPS and wss://triport.io/ws/base for newHeads subscriptions. Authenticate with the x-token header, or use the keyed URL form https://triport.io/r/<API_KEY>/rpc/base where a header is impossible.
- What is chain ID 8453?
- 8453 is Base mainnet, an Ethereum L2 built on the OP Stack that pays gas in ETH. Standard eth_* JSON-RPC and the usual EVM tooling (viem, ethers, Hardhat, Foundry) work against it.
- Is there a block range limit on eth_getLogs?
- Yes: 10,000 blocks per query. A wider range returns -32005 block_range_exceeds_10000. Split the range client-side, or read whole blocks with eth_getBlockReceipts.
- Are WebSocket logs subscriptions available on Base?
- newHeads works from Basic. The logs subscription is currently degraded and under investigation, so we do not promise it — poll eth_getLogs in 10,000-block windows until the defect is closed.
- What is the Flashblocks feed?
- A WebSocket stream of Base Flashblocks, available from Pro with the base:feed scope. An address filter is required — a connection without one is refused with filter_required. We publish no latency figures for it.
- Can I send transactions on Base through Triport?
- eth_sendRawTransaction is routed and the route is confirmed, but acceptance of a valid transaction has not been verified end to end, so it is published as accept_unverified. Conditional submission is not supported on Base.
- Are debug_traceTransaction and trace_* available on Base?
- Not as a sold capability. Proofs, the four debug_* methods and the Parity-style trace_* methods are published as prepared: availability is being confirmed and we do not bill or promise them yet.
- What are the Base rate limits?
- Reads 10/20/100/250 RPS on the 7-day Free trial, Basic, Pro and Business, and submission 3/5/30/80. Enterprise carries the same 250 read ceiling as Business. These are per-category RPS limits, not measured upstream capacity.
Base read methods
- eth_blockNumber
- eth_call
- eth_chainId
- eth_estimateGas
- eth_feeHistory
- eth_gasPrice
- eth_getBalance
- eth_getBlockByHash
- eth_getBlockByNumber
- eth_getBlockReceipts
- eth_getBlockTransactionCountByHash
- eth_getBlockTransactionCountByNumber
- eth_getCode
- eth_getLogs
- eth_getStorageAt
- eth_getTransactionByBlockHashAndIndex
- eth_getTransactionByBlockNumberAndIndex
- eth_getTransactionByHash
- eth_getTransactionCount
- eth_getTransactionReceipt
- eth_maxPriorityFeePerGas
- eth_syncing
- net_version
- web3_clientVersion