Introduction
BoltRPC is a production-grade RPC node service giving developers instant access to 20+ blockchain networks through a single, unified API. Whether you're building DeFi protocols, NFT platforms, wallets, or indexers - BoltRPC handles the infrastructure so you don't have to.
Quick Start
Get your first response in under 60 seconds.
Get your API key
Sign up at dashboard.boltrpc.io. Free 14-day trial, instant key delivery, no credit card.
Get free API keyMake your first request
Replace YOUR_API_KEY in the endpoint URL and send a JSON-RPC request to any supported network.
Step 2: Make your first request
curl -s -X POST \
"https://endpoints.boltrpc.io/rpc/YOUR_API_KEY/ethereum" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'Response
{
"jsonrpc": "2.0",
"id": 1,
"result": "0x14a5f3b"
}ethereum in the URL with any network slug from the Supported Networks table to switch chains instantly.Authentication
Your API key is embedded directly in the endpoint URL. No extra headers required.
https://endpoints.boltrpc.io/rpc/YOUR_API_KEY/{network}
wss://endpoints.boltrpc.io/ws/YOUR_API_KEY/{network}BOLTRPC_URL=https://endpoints.boltrpc.io/rpc/YOUR_API_KEY/ethereumSupported Networks
All networks below are available via both HTTPS and WebSocket unless noted.
| Network | Slug | Chain ID | HTTPS | WebSocket |
|---|---|---|---|---|
| Ethereum Mainnet | ethereum | 1 | ✓ | ✓ |
| Ethereum Sepolia Testnet | ethereum-sepolia | 11155111 | ✓ | ✓ |
| Ethereum Hoodi Testnet | ethereum-hoodi | 560048 | ✓ | ✓ |
| Ethereum Beacon Chain | ethereum-beacon | — | ✓ | — |
| Ethereum Sepolia Beacon | ethereum-sepolia-beacon | — | ✓ | — |
| Ethereum Hoodi Beacon | ethereum-hoodi-beacon | — | ✓ | — |
| Arbitrum One | arbitrum | 42161 | ✓ | ✓ |
| Base Mainnet | base | 8453 | ✓ | ✓ |
| Optimism Mainnet | optimism | 10 | ✓ | ✓ |
| Polygon Mainnet | polygon | 137 | ✓ | ✓ |
| Polygon Amoy (Testnet) | polygon-amoy | 80002 | ✓ | ✓ |
| BNB Chain | bsc | 56 | ✓ | ✓ |
| Avalanche C-Chain | avax | 43114 | ✓ | ✓ |
| zkSync Era | zksync | 324 | ✓ | ✓ |
| Scroll Mainnet | scroll | 534352 | ✓ | ✓ |
| Linea | linea | 59144 | ✓ | ✓ |
| ApeChain | ape | 33139 | ✓ | ✓ |
| Monad Mainnet | monad | 143 | ✓ | ✓ |
| Ink Mainnet | ink | 57073 | ✓ | ✓ |
| Sonic | sonic | 146 | ✓ | ✓ |
| XLayer | xlayer | 196 | ✓ | ✓ |
| Starknet Mainnet | starknet | SN_MAIN | ✓ | ✓ |
| Solana Mainnet | solana | 101 | ✓ | ✓ |
| Enjin Matrix Chain | — | — | public | public |
| Enjin Relay Chain | — | — | public | public |
Hyperliquid support coming soon.
Connecting
EVM Networks
All EVM chains share the same URL pattern. Only the network slug changes.
HTTPS endpoint
https://endpoints.boltrpc.io/rpc/YOUR_API_KEY/{network}WebSocket endpoint
wss://endpoints.boltrpc.io/ws/YOUR_API_KEY/{network}One request that works across every EVM chain
# Set your target network
BOLTRPC_URL="https://endpoints.boltrpc.io/rpc/YOUR_API_KEY/base"
curl -s -X POST "$BOLTRPC_URL" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'Ethereum testnets
# Sepolia — dApp development & smart contract testing
https://endpoints.boltrpc.io/rpc/YOUR_API_KEY/ethereum-sepolia
# Hoodi — validator infrastructure & staking
https://endpoints.boltrpc.io/rpc/YOUR_API_KEY/ethereum-hoodiBeacon Chain REST API
The Ethereum Beacon Chain API is a REST API, not a JSON-RPC interface. It exposes consensus layer data: validators, slots, epochs, finality checkpoints, and withdrawal information. It does not support eth_* methods.
Authentication: Beacon endpoints authenticate the same way as EVM endpoints: the API key is embedded in the URL path, with the REST path appended after the network slug.
| Network | Base URL |
|---|---|
| Mainnet Beacon | ...boltrpc.io/rpc/YOUR_API_KEY/ethereum-beacon |
| Sepolia Beacon | ...boltrpc.io/rpc/YOUR_API_KEY/ethereum-sepolia-beacon |
| Hoodi Beacon | ...boltrpc.io/rpc/YOUR_API_KEY/ethereum-hoodi-beacon |
WebSocket: not available. Beacon Chain API is REST only.
Check sync status
curl "https://endpoints.boltrpc.io/rpc/YOUR_API_KEY/ethereum-beacon/eth/v1/node/syncing"Get finality checkpoints
curl "https://endpoints.boltrpc.io/rpc/YOUR_API_KEY/ethereum-beacon/eth/v1/beacon/states/finalized/finality_checkpoints"Common Beacon API paths
| Path | Description |
|---|---|
GET /eth/v1/node/syncing | Node sync status and head slot |
GET /eth/v1/beacon/headers/head | Latest beacon block header |
GET /eth/v2/beacon/blocks/{block_id} | Full beacon block including execution payload |
GET /eth/v1/beacon/states/{state_id}/finality_checkpoints | Justified and finalized epochs |
GET /eth/v1/beacon/states/head/validators/{index} | Single validator status and balance |
GET /eth/v1/beacon/states/head/validators?status=active_ongoing | Filtered validator set |
Starknet
| Environment | HTTPS | WebSocket |
|---|---|---|
| Mainnet | ...boltrpc.io/rpc/YOUR_API_KEY/starknet | ...boltrpc.io/ws/YOUR_API_KEY/starknet |
Example: get block number
curl -X POST "https://endpoints.boltrpc.io/rpc/YOUR_API_KEY/starknet" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"starknet_blockNumber","params":[],"id":1}'WebSocket subscription
{"jsonrpc":"2.0","id":1,"method":"starknet_subscribe","params":["newHeads"]}Enjin public · no key
Both Enjin endpoints are public. No API key required.
| Chain | HTTPS | WebSocket |
|---|---|---|
| Matrix Chain | https://enjin-matrix-chain.matrixed.link | wss://enjin-matrix-chain.matrixed.link |
| Relay Chain | https://enjin-relay-chain.matrixed.link | wss://enjin-relay-chain.matrixed.link |
# Matrix Chain — HTTPS (node health)
curl -s -X POST "https://enjin-matrix-chain.matrixed.link" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"system_health","params":[],"id":1}'
# Relay Chain — HTTPS (finalized head)
curl -s -X POST "https://enjin-relay-chain.matrixed.link" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"chain_getFinalizedHead","params":[],"id":1}'
# Matrix Chain — WebSocket (subscribe to new heads)
wscat -c wss://enjin-matrix-chain.matrixed.linkCode Examples
const BOLTRPC_URL = "https://endpoints.boltrpc.io/rpc/YOUR_API_KEY/ethereum";
async function getBlockNumber() {
const res = await fetch(BOLTRPC_URL, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ jsonrpc: "2.0", method: "eth_blockNumber", params: [], id: 1 }),
});
const data = await res.json();
console.log("Latest block:", parseInt(data.result, 16));
}
getBlockNumber();API Reference
Ethereum / EVM Methods
General: Web3, Net, Txpool
| Method | Description | RU |
|---|---|---|
web3_clientVersion | Returns the current client version | 3 |
web3_sha3 | Returns Keccak-256 hash of the given data | 3 |
net_version | Returns the network/chain ID | 3 |
net_listening | Whether the client is listening for peers | 3 |
net_peerCount | Number of connected peers | 3 |
txpool_status | Pending/queued tx counts (Geth only) | 6 |
txpool_inspect | Text summary of txpool (Geth only) | 6 |
txpool_content | All pending/queued txs (Geth only, heavy) | 12 |
txpool_contentFrom | Pending/queued txs for an address | 6 |
Ethereum Core
| Method | Description | RU | Notes |
|---|---|---|---|
eth_syncing | Node sync status | 3 | |
eth_chainId | Current chain ID | 3 | Preferred over net_version for EIP-155 |
eth_gasPrice | Current gas price in wei | 3 | Consider EIP-1559 fields instead |
eth_maxPriorityFeePerGas | Suggested tip (wei) | 3 | EIP-1559 |
eth_blockNumber | Latest block number | 3 | |
eth_getBalance | Balance of an address | 3 | |
eth_getCode | Contract bytecode at address | 3 | |
eth_getStorageAt | Value at a storage slot | 3 | Archive required for historical blocks |
eth_getTransactionCount | Nonce / tx count for address | 3 | |
eth_call | Read-only call (no state change) | 3 | |
eth_estimateGas | Gas estimate for a call/tx | 3 | |
eth_sendRawTransaction | Broadcast a signed transaction | 5 | Recommended for production |
eth_getTransactionByHash | Transaction by hash | 3 | |
eth_getTransactionReceipt | Transaction receipt | 3 | |
eth_getBlockByNumber | Block by number | 3 | |
eth_getBlockByHash | Block by hash | 3 | |
eth_getLogs | Logs matching filter criteria | 4 | |
eth_newFilter | Create a log filter | 3 | |
eth_newBlockFilter | Filter for new blocks | 3 | |
eth_newPendingTransactionFilter | Filter for pending txs | 3 | |
eth_getFilterChanges | Poll filter deltas | 3 | |
eth_getFilterLogs | All logs for a filter | 3 | |
eth_uninstallFilter | Remove a filter | 3 | |
eth_subscribe | Subscribe to event stream | 3 | WebSocket only |
eth_unsubscribe | Cancel a subscription | 3 | WebSocket only |
eth_getProof | Account/storage Merkle proof | 3 |
Debug & Trace (Business & Enterprise)
These methods require a Business or Enterprise plan and archive node access. Contact us to enable.
| Method | Description | RU |
|---|---|---|
debug_traceTransaction | Opcode-level trace for a tx | 6 |
debug_traceBlockByHash | Trace all txs in a block (by hash) | 6 |
debug_traceBlockByNumber | Trace all txs in a block (by number) | 6 |
debug_traceCall | Trace a simulated call | 6 |
debug_storageRangeAt | Partial state trie slice | 6 |
trace_call | Trace a call at a given block | 6 |
trace_transaction | Full trace of a transaction | 6 |
trace_block | Trace all txs in a block | 6 |
trace_replayTransaction | Replay and trace a transaction | 12 |
trace_replayBlockTransactions | Replay block with traces | 12 |
trace_filter | Trace logs by filter criteria | 6 |
trace_callMany | Batch call traces | 6 |
Method Weighting
BoltRPC uses a request unit (RU) weighting system to fairly account for the varying cost of different RPC methods. RU weights are fixed and published, so you know the exact cost of every call before you build.
| RU Weight | Methods |
|---|---|
| 3 | Standard reads: eth_blockNumber, eth_getBalance, eth_call, eth_chainId and most standard methods |
| 4 | eth_getLogs: log queries |
| 5 | eth_sendRawTransaction: transaction broadcast |
| 6 | debug_*, trace_*, txpool_status, txpool_inspect, txpool_contentFrom |
| 12 | txpool_content, trace_replayTransaction, trace_replayBlockTransactions, personal_sign |
| 20 | personal_sendTransaction, parity_listStorageKeys |
WebSocket Subscriptions
WebSocket connections enable real-time event streaming without polling. Available on all paid plans.
Connect
wscat -c "wss://endpoints.boltrpc.io/ws/YOUR_API_KEY/ethereum"Subscribe to new block headers
{"jsonrpc":"2.0","id":1,"method":"eth_subscribe","params":["newHeads"]}Subscribe to logs (e.g. ERC-20 Transfer events)
{
"jsonrpc": "2.0",
"id": 2,
"method": "eth_subscribe",
"params": [
"logs",
{
"address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"]
}
]
}Subscribe to pending transactions
{"jsonrpc":"2.0","id":3,"method":"eth_subscribe","params":["newPendingTransactions"]}Unsubscribe
{"jsonrpc":"2.0","id":4,"method":"eth_unsubscribe","params":["YOUR_SUBSCRIPTION_ID"]}Each subscription is tied to the active connection and closes automatically when the socket disconnects.
Chain IDs
Use these when configuring wallets (MetaMask, Rabby) or EVM SDKs (ethers.js, viem, web3.py).
| Network | Chain ID (decimal) | Chain ID (hex) |
|---|---|---|
| Ethereum Mainnet | 1 | 0x1 |
| Ethereum Sepolia Testnet | 11155111 | 0xaa36a7 |
| Ethereum Hoodi Testnet | 560048 | 0x88bb0 |
| Arbitrum One | 42161 | 0xa4b1 |
| Base Mainnet | 8453 | 0x2105 |
| Optimism Mainnet | 10 | 0xa |
| Polygon Mainnet | 137 | 0x89 |
| BNB Chain | 56 | 0x38 |
| Avalanche C-Chain | 43114 | 0xa86a |
| zkSync Era | 324 | 0x144 |
| Scroll Mainnet | 534352 | 0x82750 |
| Linea | 59144 | 0xe708 |
| ApeChain | 33139 | 0x8173 |
| Monad Mainnet | 143 | 0x8f |
| Ink Mainnet | 57073 | 0xdef1 |
| Sonic | 146 | 0x92 |
| XLayer | 196 | 0xc4 |
| Polygon Amoy (Testnet) | 80002 | 0x13882 |
Key Restrictions
Every API key can be scoped to exactly one job, self-serve on every plan. Changes are enforced at the edge within about 30 seconds.
| Restriction | What it does |
|---|---|
| Chain scope | Limit a key to specific chains, or allow all of them. |
| IP allowlist | One IP or CIDR range per line. Requests from anywhere else are refused. |
| Origin allowlist | Lock a key to browser origins, wildcards included (https://*.example.com). Requests without a matching Origin or Referer are refused. |
| Method policy | Allow or deny individual methods or whole families like debug_*. Applies to HTTP and WebSocket. |
| Rate limit & daily cap | A per-key requests-per-second limit with burst budget, plus a hard daily request cap that resets at 00:00 UTC. |
| Expiry | An optional expiry date, or never. |
Key rotation. Rolling a key issues a new secret immediately while the old one keeps working for a grace period you pick: revoke now, 1 hour, 24 hours or 7 days. Deploys never break mid-rotation.
Webhooks
Receive on-chain events and account events as signed HTTP POSTs. Create webhooks in the dashboard, per chain, with a test ping and a delivery log per attempt.
On-chain events
| Event | Payload | Price |
|---|---|---|
| new_block | Every block: number, hash, gas used, transaction count. | 2 RU / event |
| tx_status | A mined or dropped verdict for every transaction hash you register. | 10 RU / event |
| address_activity | Native and ERC-20 transfers from or to your address list, batched per block. | 10 RU / event |
Every event is delivered twice: once when seen (confirmed: false) and again after enough confirmations (confirmed: true). A reorged-out block delivers the same event with removed: true. Each delivery carries a stable id for idempotent processing. Failed deliveries retry after 1, 5 and 30 minutes; after that the webhook pauses and your events stay queued. Only confirmed deliveries cost request units.
Signing. Every delivery carries X-BoltRPC-Signature (sha256=HMAC(secret, timestamp + "." + body)), X-BoltRPC-Timestamp, X-BoltRPC-Event and X-BoltRPC-Delivery.
Account events. The same pipeline delivers quota.threshold_reached, api_key.disabled, api_key.rotated, payment.failed, payment.recovered and team membership events.
Usage, Alerts & Export
The dashboard's Usage & Logs view breaks traffic down by method, network, key and status, with human-readable labels for every JSON-RPC error code. History is retained for 18 months.
Export. Request logs export as CSV or NDJSON (up to 92 days and 1M rows per file); usage summaries export as CSV or JSON.
Alerts. Email alerts fire at 80%, 90% and 100% of your included request units, plus one custom threshold you pick. If you enable on-demand overage, separate alerts fire against the spending limit you set.
Teams
Invite teammates by email or link. Per member you decide:
| Policy | Effect |
|---|---|
| Billing mode | The member rides on your plan, or pays for their own subscription. |
| Chain allowance | Pin which chains the member's keys may use. |
| Usage cap | A request-unit budget per billing period; requests past it return 429. |
| Key management | Whether the member creates their own keys, or only you do. |
An organization-wide default policy applies to invites without their own. When a member leaves, their keys are disabled automatically.
Management API
Everything the dashboard does with keys is also available programmatically over a documented REST API: create, scope, restrict, rotate and revoke keys from your own tooling. The OpenAPI specification ships with your account; contact us for access details and examples.
Plans & Request Units
| Plan | Price | RUs / Month | Archive | Trace/Debug | Support |
|---|---|---|---|---|---|
| Builder | $49/mo | 30M RUs | — | — | Community |
| ProPopular | $199/mo | 150M RUs | — | — | Business hours |
| Business | $699/mo | 500M RUs | On request | On request | 24/7 monitoring |
| Enterprise | Custom | Custom | ✓ | ✓ | Dedicated team-member |
Pricing is flat and fixed monthly. Accepts credit card and crypto. See full pricing →
Support
© 2026 BoltRPC, operated by Matrixed.Link. ISO/IEC 27001:2022 certified.