Find the error or symptom you see, then work through its checks in order. Each entry names the likely cause first. If the checks do not resolve the issue, contact support with the details listed in Need support.
401 Unauthorized
The request is missing a valid API key, the Authorization header is malformed, or the route-token
URL does not include a valid key.
- Confirm the key was created for the organization that owns RPC access.
- For header auth, confirm the header is exactly
Authorization: Bearer <GRAPHOPS_API_KEY>. - For route-token auth, confirm the endpoint ends with
/<GRAPHOPS_API_KEY>after the EVM chain ID or Bitcoin network name. - Confirm the key has not been revoked or rotated.
- Remove extra quotes, whitespace, or the literal string
Bearerfrom secret-manager values. - Use Authentication to compare header and route-token formats.
403 Forbidden
The key is valid, but the organization is not entitled to the requested endpoint, network, or plan feature.
- Confirm the organization has RPC enabled.
- Confirm the endpoint network is included in the organization's plan.
- Confirm archive access or WebSocket access is included if the failing request uses those features.
429 Too Many Requests
The organization exceeded a plan-specific rate or concurrency limit.
- Reduce parallel requests.
- Add exponential backoff with jitter.
- Split large batch requests into smaller batches.
- Move historical backfills to lower-concurrency workers.
- Request a plan or limit change through support in the GraphOps Platform.
Timeouts or large eth_getLogs failures
The log query is too broad, the response is too large, or the archive read takes longer than the request timeout.
- Reduce the block range.
- Filter by contract address and topic whenever possible.
- Persist progress and backfill in deterministic block chunks.
- Avoid retrying the same broad range repeatedly.
- Use WebSocket
logssubscriptions for live logs andeth_getLogsfor backfill.
Inconsistent results across requests
Separate latest reads can observe different blocks as the chain advances.
- Read a block number or block hash first.
- Pass that explicit block reference to subsequent state reads.
- Use
safeorfinalizedwhen the workflow can accept additional latency. - Avoid mixing
latestreads with historical reads in the same consistency-sensitive workflow. - Use Consistency and finality for the repeatable-read pattern.
method not found
The request method name is misspelled, sent to the wrong endpoint, or is outside the standard Ethereum-compatible method set for the selected network.
- Confirm the method name uses the exact
eth_*,net_*, orweb3_*casing. - Confirm the request is sent to an RPC endpoint, not the platform REST API.
- Confirm the method is listed in Supported methods.
- For WebSocket subscriptions, confirm the method is
eth_subscribeand the endpoint is a WebSocket URL.
Transaction submission errors
Transaction errors usually come from EVM validation or mempool policy rather than from GraphOps itself.
- Confirm the transaction was signed for the same chain ID as the endpoint.
- Confirm the sender has enough funds for value plus gas.
- Poll
eth_getTransactionReceiptwhen the same transaction hash may already be known. - Use Send a raw transaction for nonce, replacement, and retry guidance.
WebSocket authentication fails
The WebSocket URL is missing the route token, the token is invalid, or the client is trying to use a header-based pattern that it does not support.
- Prefer the route-token endpoint:
wss://rpc.graphops.xyz/v1/evm/<chainId>/<apiKey>. - Confirm the API key is present after the chain ID and does not include the literal
Bearerprefix. - If you use header authentication, confirm the WebSocket client can send custom headers during the handshake.
- Redact route-token URLs from logs before sharing diagnostics.
- Use Authentication for WebSocket auth patterns and security guidance.
WebSocket stream gaps
Connections can disconnect, subscriptions can expire, and live streams can miss events while a client is offline.
- Store the last processed block or log position.
- Reconnect with backoff.
- Resubscribe after reconnect.
- Backfill missed logs with
eth_getLogs. - Deduplicate logs by
(blockHash, transactionHash, logIndex). - Use WebSocket subscriptions for the full recovery sequence.
Empty eth_accounts
Hosted RPC does not custody user private keys. Account-management methods are present for client compatibility, but applications should sign with a wallet, signer service, or local key-management system.
- Sign transactions in the wallet or application.
- Submit signed transactions with
eth_sendRawTransaction. - Do not rely on
eth_sendTransaction,eth_sign, oreth_signTransactionfor hosted key management.
Need support
When contacting GraphOps support, include:
- Organization name or ID.
- Network and endpoint.
- Transport: HTTPS or WebSocket.
- RPC method.
- Approximate timestamp.
- JSON-RPC error object or HTTP status.
- Block number, block range, or transaction hash if relevant.
- Whether the request used
latest,safe,finalized, or an explicit block reference.