Skip to main content
RPC operator referenceHTTPS / WSS · JSON-RPC 2.0

Getting started

This page takes you from zero to a working JSON-RPC call. It covers the endpoint format, API keys, batching, method policy, and what the gateway does and does not allow.

The endpoint

Every network is served at the same URL shape:

Request example
https://rpc.solidrpc.io/YOUR_API_KEY/evm/{chainId}

The URL shape is shared, but access can vary by plan: Arc Mainnet (chain ID 5042) requires a paid plan or active PAYG. Arc Testnet remains available on Free. See the network access table.

This is the only provider endpoint your application needs. SolidRPC selects qualified upstream capacity for the chain, method, and block range, monitors health, and moves requests to qualified capacity behind the same URL when a route degrades. See routing and failover for the operating model and migration plan.

The HTTPS API uses JSON-RPC 2.0 POST. Paid plans and active PAYG can use native newHeads subscriptions on activated WebSocket networks. Check the WebSocket guide for live availability, shared-unit billing and recovery. Chain IDs for every supported network are on the networks page. Ethereum is 1, Base is 8453, and so on.

Choose an authentication style

Every API key supports a key in the URL, a Bearer API key, or an X-API-Key header. The dashboard defaults to the URL form. The header forms keep credentials out of URLs and ingress path logs.

StyleEndpointCredentialBest for
Key in URL/YOUR_API_KEY/evm/1Path segmentWallets and clients that only accept an RPC URL
Bearer API key/evm/1Authorization: Bearer YOUR_API_KEYServers and clients with custom-header support
X-API-Key/evm/1X-API-Key: YOUR_API_KEYRequests that reserve Authorization for a customer-signed JWT

Key in URL

Request example
curl https://rpc.solidrpc.io/YOUR_API_KEY/evm/1 \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'

Bearer API key

Request example
curl https://rpc.solidrpc.io/evm/1 \
  -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'

X-API-Key

Request example
curl https://rpc.solidrpc.io/evm/1 \
  -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'

Do not send both X-API-Key and a Bearer API key in one request. If a key requires customer-signed JWT authentication, use the URL form plus a Bearer JWT, or use X-API-Key for the API key plus Authorization: Bearer YOUR_JWT.

Your API key

Create an account, no card required.

Every new account starts on the Free plan: 10K responses per UTC day, 10 RPC method calls/s · burst 50 calls, and 1 API key. Paid plans currently start at $25/mo. PAYG can be enabled later from authenticated Billing after adding a card and accepting automatic off-session usage charges. See current pricing.

A Default API key is created for you the moment your account activates, find and copy it on the API Keys page in the dashboard. All keys on an account share the account's quota and rate limit. Extra keys (on paid plans or PAYG) are for organizing projects and reading per-key analytics, not for extra throughput. The dashboard shows response-unit counts, success rates, and latency per key and per chain.

Keys are unrestricted by default, preserving the basic endpoint flow. Advanced users can optionally require a customer-signed Bearer JWT and apply source IP, network, method, or method-rate ceilings. See API key security before enabling a policy in production.

Make your first request

Fetch the latest block number on Ethereum. Replace YOUR_API_KEY with your key from the API Keys page:

Request example
curl https://rpc.solidrpc.io/YOUR_API_KEY/evm/1 \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'

The raw JSON-RPC response looks like this:

Request example
{ "jsonrpc": "2.0", "id": 1, "result": "0x163d3a3" }

Batch requests

Send a JSON array and you get a JSON array back, one result per entry:

Request example
curl https://rpc.solidrpc.io/YOUR_API_KEY/evm/1 \
  -X POST \
  -H "Content-Type: application/json" \
  -d '[{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1},
       {"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":2}]'

Each billable method call in a batch counts as 1 response unit against your quota and needs 1 rate-limit token. Batching saves round-trips, not money. In viem, enable batching on the transport, ethers v6 batches automatically by default.

Request example
import { createPublicClient, http } from "viem";
import { mainnet } from "viem/chains";

const client = createPublicClient({
  chain: mainnet,
  transport: http("https://rpc.solidrpc.io/YOUR_API_KEY/evm/1", { batch: true }),
});

What is and isn't supported

  • The HTTPS RPC route accepts POST. WebSocket uses a separate WSS upgrade route.
  • eth_subscribe is available only over an activated WebSocket endpoint, with newHeads. HTTPS and Free/public access do not support subscriptions.
  • Request bodies are capped at 5MB.
  • Standard methods get a 30s server-side budget. Trace and debug methods get 45s. Set client timeouts to 60s or more. See tracing.
  • Caching: head methods (eth_blockNumber, eth_gasPrice, anything at latest) are never cached. Responses for unfinalized blocks are cached for at most 10 seconds, finalized data is cached long-term. You never get a stale chain head.

Method policy

The gateway uses a denylist, not an allowlist: read methods are never blocked, on any chain. What is blocked is node and consensus control, the namespaces admin_*, personal_*, miner_*, engine_*, clique_*, and les_*, txpool_*, plus any debug_* method outside this allowlist:

  • everything matching debug_trace*
  • everything matching debug_getRaw*
  • debug_storageRangeAt
  • debug_getBadBlocks
  • debug_accountRange
  • debug_getModifiedAccountsByNumber and debug_getModifiedAccountsByHash

A blocked method returns HTTP 200 with a JSON-RPC -32601 error and is never billed. Details in the error reference.

Limits at a glance

PlanIncluded response unitsRate limitAPI keys
Free10K/day10 RPC method calls/s (burst capacity 50 calls)1
Builder10M/mo120 RPC method calls/s (burst capacity 600 calls)10
Solid150M/mo600 RPC method calls/s (burst capacity 3,000 calls)25
Rocksolid600M/mo6,000 RPC method calls/s (burst capacity 30,000 calls)100

PAYG is a separate billing mode and is intentionally not a row in the fixed-plan catalog. Its defaults are no request quota, $3.00 per 1M billable method calls, 300 calls/s sustained, burst 1,500, and 5 API keys. Authenticated Billing shows any account-specific override.

Quotas and rate limits are account-wide across all chains and keys. Full details on pricing and rate limits.

Next steps