Estimate what your RPC workload will cost and keep it within your organization's shared limits. RPC calls and WebSocket subscription events draw credits at the rates for their method class. Rate and concurrency limits apply to your whole organization and depend on your subscription plan.
Current credit rates
Use the method rates below to estimate request costs. Track actual consumption in Platform Usage.
Current rates. Last updated: Oct 23, 2026, 12:01 AM UTC.
| Usage component | Applies to | Rate |
|---|---|---|
| RPC calls | Default | 1 credit per RPC call |
| RPC calls | RPC method cost class: Standard | 1 credit per RPC call |
| RPC calls | RPC method cost class: Compute-heavy | 2 credits per RPC call |
| RPC calls | RPC method cost class: Trace and debug | 2 credits per RPC call |
| RPC calls | RPC method cost class: Archive and state-heavy | 2 credits per RPC call |
| Subscription events | Default | 1 credit per subscription event |
| Subscription events | Subscription type: newHeads | 1 credit per subscription event |
| Subscription events | Subscription type: logs | 1 credit per subscription event |
| Subscription events | Subscription type: newPendingTransactions | 1 credit per subscription event |
| Subscription events | Subscription type: syncing | 1 credit per subscription event |
RPC method cost class
| Class | Methods |
|---|---|
| Compute-heavy | eth_call, eth_createAccessList, eth_estimateGas, eth_getLogs |
| Trace and debug | debug_…, trace_… |
| Archive and state-heavy | eth_getBalance, eth_getCode, eth_getProof, eth_getStorageAt, eth_getTransactionCount |
| Standard | All methods not matched by another class |
Archive reads can consume more credits when their method is assigned to a higher-cost class in the current catalog. Check Supported networks for archive coverage on your network.
Plan limits
Limits are shared across your organization and depend on your plan. Check your plan terms or contact support for the values that apply to your workload.
The following limits are plan-specific:
| Limit | Applies to | Guidance |
|---|---|---|
| Request rate | HTTPS and WebSocket RPC calls | Spread traffic across time and use backoff after 429. |
| Concurrent requests | In-flight requests for the organization | Bound worker pools and queue background jobs. |
| Batch size | Number of JSON-RPC calls in one HTTP batch | Keep batches small enough to retry individual failures. |
| Response size | Large logs, blocks, receipts, and archive reads | Use narrower ranges or paginated application workflows. |
| Request timeout | Long state reads and log scans | Split large archive jobs by block range. |
| WebSocket connections | Live subscriptions | Reuse connections and unsubscribe unused streams. |
| WebSocket subscriptions | Active subscriptions per organization | Prefer one filtered subscription over many overlapping ones. |
Rate-limit and request headers
Treat optional headers as informational
Do not rely on rate-limit or request-tracing headers to enforce production limits. Handle 429
responses, use bounded concurrency, apply backoff with jitter, and monitor usage in the platform UI.
Responses may include headers such as:
X-GraphOps-RateLimit-Limit: <limit>
X-GraphOps-RateLimit-Remaining: <remaining>
X-GraphOps-RateLimit-Reset: <unix-seconds>
X-GraphOps-Request-Id: <request-id>These headers are informational; availability can vary by endpoint and plan.
Control your usage
Most limit errors come from a few workload shapes. Keep each one bounded:
| Workload | Keep it within limits | Guide |
|---|---|---|
| Current-state reads | Retry 429, 502, 503, and 504 with exponential backoff and jitter, and cap total retry time. | Retries and reorgs |
| Log scans and archive reads | Split work into block ranges and reduce the range before retrying. | Backfill historical events |
| Batch requests | Keep batches small, match responses by id, and retry only failed retryable items. | API integration |
| Transaction submission | Retry the same signed transaction; never change it and resend blindly. | Send a raw transaction |
| WebSocket streams | Reuse connections, unsubscribe unused streams, and backfill gaps after a reconnect. | WebSocket subscriptions |
Production checklist
- Store API keys outside source code. See Authentication.
- Bound request concurrency per organization.
- Add exponential backoff with jitter for retryable errors.
- Use explicit block references for multi-call workflows.
- Split broad
eth_getLogsand archive reads into block ranges. - Track credit usage in the platform UI.
- Use route-token authentication for WebSocket clients that cannot send custom headers.
- Contact GraphOps support when limits need to be raised.