Shared JSON-RPC access to the two nodes we run for our own trading bots. Not a dedicated instance and not an SLA: what you buy is a per-key quota, batching, per-chain usage accounting — and a live, published view of exactly how healthy each node is right now. Where card checkout is open, you pay by card and your key appears on your account page.
The node health panel below is the product description. Read it before you buy.
Auto-refreshes every 5 seconds · —
curl -X POST \ -H "X-API-Key: rpc_YOUR_KEY_HERE" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' \ "https://api.smartmoneyapi.com/rpc/v1/bsc"
Keys are prefixed rpc_ and are separate from your Smart Money API data keys. Your key is on your account page; keep it out of URLs and public repositories.
curl -X POST \ -H "X-API-Key: rpc_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' \ "https://api.smartmoneyapi.com/rpc/v1/bsc" // Response: {"jsonrpc":"2.0","result":"0x286c1b2","id":1}
curl -X POST \ -H "X-API-Key: rpc_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0xYOUR_ADDRESS","latest"],"id":1}' \ "https://api.smartmoneyapi.com/rpc/v1/avax-c"
curl -X POST \ -H "X-API-Key: rpc_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '[ {"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}, {"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":2}, {"jsonrpc":"2.0","method":"net_version","params":[],"id":3} ]' \ "https://api.smartmoneyapi.com/rpc/v1/bsc" // Each call in the batch counts toward your quota.
curl -X POST \ -H "X-API-Key: rpc_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"info.isBootstrapped","params":{"chain":"C"},"id":1}' \ "https://api.smartmoneyapi.com/rpc/v1/avax-info"
curl "https://api.smartmoneyapi.com/rpc/v1/health" // Returns: {"chains":{"bsc":{"ok":true,"block":42000000,"ms":45}, ...}}
We serve a fixed list of read methods, not “everything we did not forbid”. The nodes behind this endpoint also run our own trading bots, so anything that is heavy, stateful or administrative is not offered. A method outside the list returns a -32601 error and costs nothing.
eth_blockNumber, eth_chainId, eth_gasPrice, eth_feeHistory, eth_getBalance, eth_getCode, eth_getStorageAt, eth_getTransactionCount, eth_call, eth_estimateGas, eth_getBlockByNumber / ByHash, eth_getTransactionByHash, eth_getTransactionReceipt, eth_getBlockReceipts, eth_getLogs, eth_syncing, net_version, net_listening, web3_clientVersion, web3_sha3 and the block/transaction-count and by-index lookups.
Read methods only (avm.get*, platform.get*, info.isBootstrapped, info.getNetworkID and a few more). Transaction issuing, keystore and node-identity methods are not served.
The same nodes run our own bots, and the bots always win. When the node is lagging or slow, or the machine is under heavy load, customer traffic is refused with HTTP 503 and a Retry-After header (header X-SMA-RPC-Source: shed). A refused call is not charged. Live shedding state is in the health payload below.
| HTTP | JSON-RPC code | Meaning |
|---|---|---|
| 401 | -32001 | Missing or invalid API key |
| 429 | -32005 | Rate limit exceeded (calls/second, rpm or daily), or too many concurrent requests on one key. Check the Retry-After header. |
| 413 | -32600 | Request body exceeds the size limit |
| 403 | -32601 | Blocked or disallowed method |
| 400 | -32700 | JSON parse error |
| 400 | -32005 | Query too large: eth_getLogs range, result count or response size over the limit |
| 503 | -32002 | Shedding or at capacity to protect the shared node — retry after Retry-After. Not charged. |
| 503 | -32002 | Upstream node unreachable or timed out (never 502: it cannot be read from a browser) |
{"jsonrpc":"2.0","error":{"code":-32001,"message":"invalid api key"},"id":null}
Every plan, Free included, reaches all five endpoints below. Nothing is chain-gated. What changes between plans is the daily request quota and the per-minute ceiling, both counted per key across all chains combined.
C-Chain, X-Chain and P-Chain are three different chains with three different method namespaces — an eth_* call sent to avax-x will not work, on any plan. Only the allowlisted read methods listed above are served, for everyone.
The quota is the same at a given tier whichever chains you pick: Starter is 100,000 requests/day and 600/min, Pro is 1,000,000/day and 3,000/min. A single-chain plan is cheaper because it unlocks fewer endpoints, not because it meters you harder. A “request” here is one JSON-RPC call: every call in a batch counts, and eth_getLogs counts as 5. Buying BSC and Avalanche as two separate plans is cheaper than the Multi-Chain bundle at the same tier and gives you two quotas instead of one shared quota — the bundle buys you one key and one bill, nothing else. We would rather say that than let you work it out after paying.
Reads on a small set of methods may be served from a cache up to a few seconds old (X-SMA-RPC-Source: cache); every other answer carries X-SMA-RPC-Source: local.
| Feature | Public RPC | Smart Money RPC |
|---|---|---|
| Rate limits | Shared, unpredictable | A quota that is yours, on nodes that are not |
| Latency | Variable, cold-start | Warm, but shared with our bots — measured live above |
| Uptime | No guarantees | No SLA either — but node state is published live above |
| Batch calls | Often blocked | Up to 50 per request |
| Distance from chain tip | Usually at the tip, never stated | Published live, per chain, above |
| Usage analytics | None | Per-chain, per-day |