Limits, credits and errors

1 credit = 1 request on every chain, with three weights. What each plan allows and what every error means.

Contents
Chains, regions and plans open one by one when enough teams ask for them. These docs describe exactly how they work. What is open

Limits per plan

Per account: all tokens and chains share the numbers. Each call of a batch counts as one request.

Limits per RPC plan
PlanCredits / monthRequests / sBurstTokensTrace, debugAbove the credits
Free $01M10201NoRequests answer 429 until the 1st
Starter $4910M501005YesOptional overage, $5 per 1M, with your monthly cap
Growth $24960M20040020YesOptional overage, $4 per 1M, with your monthly cap
Scale $799250M5001,00050YesOptional overage, $3 per 1M, with your monthly cap
Enterprise from $2,500from 1Bby contract-100YesBy contract
  • Requests per second is a token bucket: short bursts up to twice the rate, then the plan rate. Above it: HTTP 429 rate_limited with Retry-After.
  • Free also has a limit per client network, so one shared address cannot use up a whole region.
  • Credits reset on the 1st of each month (UTC). Overage is off until you switch it on, always with a cap you set. E-mails at 80 % and 100 %.
  • Body and batch: at most 256 KB per request and 100 calls per batch. A batch can never be larger than your burst (Free: 20 calls), so split bigger ones.
  • Dedicated throughput works differently: a sustained rate of 25, 100, 250 or 500 requests per second on one chain in one region, with no credits and no overage. Above the rate: HTTP 429. Prices on RPC pricing.

Credits and weights

Every chain counts the same. What the gateway refuses and what fails on our side costs nothing; an answer from the chain costs its weight, also a revert, also from the cache.

Answered by the gateway Weight 0

eth_chainId and net_version come straight from the gateway: no node call, no credits.

  • eth_chainId
  • net_version

Standard reads Weight 1

  • web3_clientVersion
  • web3_sha3
  • net_listening
  • net_peerCount
  • eth_blockNumber
  • eth_syncing
  • eth_protocolVersion
  • eth_gasPrice
  • eth_maxPriorityFeePerGas
  • eth_feeHistory
  • eth_blobBaseFee
  • eth_getBalance
  • eth_getCode
  • eth_getStorageAt
  • eth_getTransactionCount
  • eth_getProof
  • eth_call
  • eth_estimateGas
  • eth_createAccessList
  • eth_simulateV1
  • eth_getBlockByHash
  • eth_getBlockByNumber
  • eth_getBlockTransactionCountByHash
  • eth_getBlockTransactionCountByNumber
  • eth_getUncleByBlockHashAndIndex
  • eth_getUncleByBlockNumberAndIndex
  • eth_getUncleCountByBlockHash
  • eth_getUncleCountByBlockNumber
  • eth_getTransactionByHash
  • eth_getTransactionByBlockHashAndIndex
  • eth_getTransactionByBlockNumberAndIndex
  • eth_getTransactionReceipt

Heavy reads Weight 2

Full-transaction blocks (eth_getBlockByNumber or eth_getBlockByHash with true) also count as heavy.

  • eth_getLogs
  • eth_getBlockReceipts
  • trace_transaction
  • trace_get

Trace and debug Weight 5

Paid plans only (Starter and up). On Free these calls answer plan_required.

  • trace_block
  • trace_call
  • trace_callMany
  • trace_filter
  • trace_rawTransaction
  • trace_replayBlockTransactions
  • trace_replayTransaction
  • debug_traceTransaction
  • debug_traceCall
  • debug_traceBlockByNumber
  • debug_traceBlockByHash
  • debug_getRawBlock
  • debug_getRawHeader
  • debug_getRawReceipts
  • debug_getRawTransaction

Transaction submission Weight 1

Not enabled yet: Blockmetric RPC is read-only during the beta (tx_submit_disabled).

  • eth_sendRawTransaction
  • eth_sendRawTransactionConditional
  • eth_sendRawTransactionSync

Subscriptions (WebSocket only) Weight 1 per call, notifications 1 per started 4 KB

newHeads and logs. newPendingTransactions (mempool) is not offered.

  • eth_subscribe
  • eth_unsubscribe

HyperCore info types weigh 1, 2 or 5 by the size of their answer: see HyperCore. Chain-specific extras (HyperEVM) are standard reads.

Not offered

These answer method_not_allowed and cost nothing.

Methods that are not offered
MethodsWhy
eth_sendTransactionThe gateway holds no keys: sign locally and send the raw transaction.
eth_sign, eth_signTransaction, eth_signTypedDataThe gateway holds no keys: signing is not offered.
eth_accounts, eth_requestAccountsThe gateway holds no accounts.
eth_coinbase, eth_mining, eth_hashrate, eth_submitWork, eth_submitHashrateNot offered on a shared endpoint.
eth_newFilterStateful filters are not offered (requests may reach different nodes): use eth_getLogs, or eth_subscribe over WebSocket.
eth_newBlockFilterStateful filters are not offered: use eth_subscribe("newHeads") over WebSocket.
eth_newPendingTransactionFilter, txpool_*Mempool access is not offered.
eth_getFilterChanges, eth_getFilterLogsStateful filters are not offered: use eth_getLogs with a block range.
eth_uninstallFilterStateful filters are not offered.
personal_*Account and signing methods are not offered.
admin_*, miner_*Node administration is not offered.
engine_*The engine API is not offered.
debug_*Only the read-only debug_trace* and debug_getRaw* methods are offered.
clique_*, parity_*Not offered.

Response headers

Response headers
X-Blockmetric-CreditsCredits this request cost (the sum over a batch).
X-Blockmetric-Credits-RemainingCredits left this month before overage or the limit.
X-Blockmetric-Overage"on" while your monthly credits are used up and overage (within your cap) pays for the calls.
X-RateLimit-LimitRequests per second of your plan.
X-RateLimit-RemainingRequests left in the current burst.
X-RateLimit-ResetUnix time (seconds) when the bucket refills.
Retry-AfterOn 429 and 503 when waiting helps: seconds to wait before the next try.
X-Request-IdQuote it when you contact support.
X-Blockmetric-ChainThe chain that answered.

Errors

Every error is a JSON-RPC error with data.code, data.doc_url and data.request_id. Errors of single calls in a batch come back in their slot with HTTP 200. Errors from the chain itself (a revert) are passed through as the node sent them, only node addresses are removed.

Error codes of Blockmetric RPC
data.codeJSON-RPCHTTPMeaning
parse_error-32700400The body is not valid JSON.
invalid_request-32600400Not a JSON-RPC 2.0 request (missing "jsonrpc": "2.0", "method" or a bad "id").
batch_too_large-32600400More calls in one batch than allowed (100). Split the batch. A batch above your burst (twice your requests per second) answers rate_limited.
payload_too_large-32600413The body is larger than 256 KB (HyperCore info requests: 16 KB).
upgrade_required-32600426A GET without a WebSocket upgrade. Send JSON-RPC with POST over HTTPS, or connect with a WebSocket client.
https_required-32600403The request came over plain http. Only https is accepted; rotate a token that was sent unencrypted.
key_in_url-32600400A Blockmetric API key (bm_live_…) or a credential query parameter was in the URL. Only endpoint tokens (bmr_…) may be in the path. Revoke a key that was in a URL.
unauthorized-32001401The endpoint token is missing, mistyped, revoked or unknown.
chain_not_allowed-32002403The token is restricted to other chains. Change its chains on the dashboard.
origin_not_allowed-32002403The browser origin is not on the token's list of allowed origins.
ip_not_allowed-32002403The client address is not on the token's IP allowlist.
region_blocked-32002451Not available in this country or region (sanctions).
chain_not_open-32002403The Global plans do not serve this chain yet. Join the waitlist for it on its chain page; we open chains when enough teams ask for them.
region_not_open-32002403This region does not serve the Global plans yet. Use the global endpoint, or join the waitlist for the region.
region_not_served-32002403A dedicated endpoint is served in one region only. Use the endpoint URL of its region from the dashboard.
rate_limited-32005429More requests per second than the plan allows (each call of a batch counts), too many concurrent requests with one token, or too many requests with invalid tokens from one network. Retry after the Retry-After header. A batch larger than the burst never passes: split it.
quota_exceeded-32005429The monthly credits are used up and overage is off (or its cap is reached). Resets on the 1st (UTC).
ws_limit-32005429More open WebSocket connections than the plan allows.
method_not_found-32601200, per callThe method does not exist on this chain.
method_not_allowed-32004200, per callThe method is not offered (signing, accounts, admin, mempool, stateful filters).
plan_required-32004200, per callTrace and debug methods of weight 5 are part of the paid plans (trace_transaction and trace_get are heavy reads on every plan).
tx_submit_disabled-32004200, per callSending transactions is not enabled yet: read-only during the beta.
websocket_required-32004200, per calleth_subscribe needs a WebSocket connection.
invalid_params-32602200, per callA parameter failed our checks (e.g. more than 4 topics or 16 addresses in a log filter).
block_range_too_large-32602200, per calleth_getLogs spans more blocks than allowed on this chain (10,000; HyperEVM 50), or trace_filter more than 100 blocks. Page through smaller ranges.
auth_unavailable-32603503Token verification is briefly unavailable on our side. Retry after the Retry-After header.
upstream_unavailable-32010503No healthy node for this chain right now. Retry with backoff; /<chain>/health shows the state.
upstream_busy-32010503Capacity for this chain is used up for a moment. Retry after the Retry-After header.
upstream_error-32011502The node returned something that is not a JSON-RPC answer. Retry.
not_found-32601404Unknown chain or path. Use /<chain>/<token> with a chain from the list.

None of these costs credits.

Code snippets in these docs are licensed under MIT-0: copy them into your own code without attribution. Use of Blockmetric RPC is governed by the terms. Independent infrastructure, not affiliated with the chains or their foundations.

LiveHyperliquid markets 10sOperationalHyperliquid positions & whales 10sOperationalLiquidation heatmap & levels 12sOperationalLighter markets & liquidations 18sOperationalLighter positions & heatmap 10sOperationalLighter RH positions & heatmap 14sOperationalBinance markets 39sOperationalBybit markets 9sOperationalBinance liquidations 18sOperationalBybit liquidations 18sOperationaldYdX positions & heatmap 11sOperationalGMX positions & heatmap 14sOperationalLong/short & open interest history 2mOperationalOrder books & trade flow 9sOperationalOn-chain transfers 10sOperationalSecurity monitor 48sOperationalBlockmetric Sentiment 9mOperationalOfficial news 8mOperationalAlert delivery 10sOperational10:06:36 UTCData: Blockmetric Research · Binance · Bybit