TriportRPC

Base chain ID, RPC URL and network config

Last updated:

Base network identifiers

Base mainnet identifiers
IdentifierValueSource
Chain ID8453 (0x2105)
eth_chainId returns the hex form.
Base docs: connecting to Base
Network ID8453
Returned by net_version (checked on mainnet.base.org, 23.09.2026).
ethereum.org JSON-RPC API (net_version)
CAIP-2 IDeip155:8453
The chain identifier multichain wallets and WalletConnect use.
CAIP-2 eip155 namespace
Currency symbolETHTriport chain registry

The chain ID is signed into every transaction (EIP-155); the network ID is what net_version reports. They are separate values that happen to match on most chains — see chain ID vs network ID and the chain ID glossary entry.

Base RPC URLs

Base mainnet RPC endpoints
Triport RPC URL (header auth)https://triport.io/rpc/base
Triport RPC URL (keyed)https://triport.io/r/<API_KEY>/rpc/base
Triport WebSocket URL (keyed)wss://triport.io/ws/base/<API_KEY>
Required scopebase:rpc
Public RPC by Basehttps://mainnet.base.org
Rate-limited public endpoint: Base's docs say its RPCs "are rate-limited, they are not suitable for production apps". Base docs: run a Base node · Base docs: connecting to Base

Public-endpoint limits are as each operator publishes them, checked 23 September 2026.

Plans and per-category rate limits: pricing. Network overview: Base RPC; method reference: Base documentation.

Add Base to MetaMask, viem, Hardhat or Foundry

wallet_addEthereumChain (EIP-3085) requires only chainId, as a hex string — 0x2105, not 8453. The MetaMask block below also fills chainName, nativeCurrency (name, symbol, decimals) and rpcUrls, which a wallet uses to display and reach the network. A wallet cannot send the x-token header, so rpcUrls holds the keyed URL with your API key in the path — paste your key below; the placeholder URL answers 401 until you do.

MetaMask

{
  "method": "wallet_addEthereumChain",
  "params": [{
    "chainId": "0x2105",
    "chainName": "Base",
    "nativeCurrency": { "name": "ETH", "symbol": "ETH", "decimals": 18 },
    "rpcUrls": ["https://triport.io/r/<API_KEY>/rpc/base"]
  }]
}

viem

import { createPublicClient, defineChain, http } from "viem";

export const base = defineChain({
  id: 8453,
  name: "Base",
  nativeCurrency: { name: "ETH", symbol: "ETH", decimals: 18 },
  rpcUrls: { default: { http: ["https://triport.io/r/<API_KEY>/rpc/base"], webSocket: ["wss://triport.io/ws/base/<API_KEY>"] } },
});

export const client = createPublicClient({ chain: base, transport: http() });

ethers v6

import { JsonRpcProvider, Network } from "ethers";

const network = Network.from({ name: "base", chainId: 8453 });
export const provider = new JsonRpcProvider("https://triport.io/r/<API_KEY>/rpc/base", network, { staticNetwork: network });

Hardhat

// hardhat.config.ts
export default {
  networks: {
    base: { url: "https://triport.io/r/<API_KEY>/rpc/base", chainId: 8453 },
  },
};

Foundry

# foundry.toml
[rpc_endpoints]
base = "https://triport.io/r/<API_KEY>/rpc/base"

wagmi

import { createConfig, http } from "wagmi";
import { base } from "./base-chain";

export const config = createConfig({
  chains: [base],
  transports: { [base.id]: http("https://triport.io/r/<API_KEY>/rpc/base") },
});

curl (header auth)

curl https://triport.io/rpc/base \
  -H "x-token: <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'

Keys in URLs vs headers

A keyed URL is the same credential as a header, in a less private place: it lands in shell history, CI logs and screenshots. Use it only where a header is impossible (wallets, hardhat.config, foundry.toml), send x-token from server code, and rotate a key that leaked.

Verify you are on Base mainnet

Call eth_chainId first. It must return 0x2105 — a client whose configured chain ID disagrees with the reply refuses to connect, which explains most failures when adding a network by hand.

curl https://triport.io/rpc/base \
  -H "x-token: <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'

Sources: the chain's own documentation and the CAIP-2 namespace specs cited in the tables above; EVM chain IDs come from Triport's chain registry and match them.

FAQ

What is the Base chain ID?
8453 in decimal, 0x2105 in hex — eth_chainId returns the hex form. The CAIP-2 ID is eip155:8453.
Is Base mainnet chain ID 8453?
Yes. Base mainnet is chain ID 8453 (0x2105), as listed in Base's own documentation. Base Sepolia is a separate testnet with its own chain ID.
What is the Base network ID?
net_version returns 8453, the same number as the chain ID. Sign with the chain ID from eth_chainId: under EIP-155 the chain ID is part of the transaction signature, the network ID is not.
What is the Base RPC URL?
On Triport: https://triport.io/rpc/base with your API key in the x-token header, or https://triport.io/r/<API_KEY>/rpc/base where a header is impossible (wallets, config files). WebSocket: wss://triport.io/ws/base. Base also runs a public endpoint, https://mainnet.base.org; it is rate-limited, and the limits its operator publishes are cited in the RPC URL table.
How do I add Base to MetaMask?
Call wallet_addEthereumChain (EIP-3085) with chainId "0x2105" — a hex string, not the decimal 8453 — chainName "Base", nativeCurrency ETH with 18 decimals, and your keyed RPC URL in rpcUrls. The MetaMask block on this page is the exact request.
Is my API key sent to Triport when I use this page?
No. Snippets are generated in your browser: the key is never submitted, never stored and never written into the page URL, which is why this page has no shareable link.