RPC troubleshooting and account questions
Diagnose access errors, rate limits, missing methods, filters, historical state, region routing, and account management.
Use this guide to diagnose common Remote Procedure Call (RPC) problems. Start with the response body, endpoint, and method.
Why does my request return an access error?
| Response | Check | Next step |
|---|---|---|
401 or 403 | Key, account access, endpoint access, and source IP restrictions | Confirm the key is enabled in the dashboard. Check authentication and IP whitelisting. |
403 for one method | Method access or a restricted RPC namespace | Check the method's chain reference and your account's access. A working eth_blockNumber does not prove access to debug_* or trace_*. |
405 | HTTP method | Use the endpoint's documented method. Send a JSON-RPC request with POST and Content-Type: application/json. |
413 | Request body size | Reduce the payload or split the batch. Check the response body before treating this as a block-range error. |
429 | Account throughput or key quota | Check rate limits, reduce concurrency, and retry with exponential backoff and jitter. |
HTTP 200 with a JSON-RPC error | Backend or method error | Read the error.code and error.message. HTTP success does not mean the RPC call succeeded. |
Dwellir's gateway uses 403 for IP restrictions, endpoint access, and method access. Read the response body before diagnosing the cause.
Do not rely on 401 alone to detect authentication failures. Opening an endpoint in a browser sends GET, without a JSON-RPC request body.
Permitted HTTP methods depend on the service. A browser request does not, by itself, explain a 405 response.
Test a basic method on the same endpoint with the same key. If it works, compare the failing method, parameters, and access requirements.
Never put an API key in a support screenshot or public issue. Redact keys from endpoint URLs, headers, and logs.
Why is a method missing or forbidden?
JSON-RPC error -32601 means the method does not exist on that backend. A gateway 403 means the request failed an access check.
Check the supported chain and its method reference. Client libraries can probe optional methods that the chain does not implement.
Use a supported fallback when your client permits one. Retrying an unsupported method does not make it available.
For tracing, check tracing support. Archive state, tracing, and historical proofs are separate capabilities.
Why do several keys hit the same limit?
API keys on one account share the account's throughput limit. Creating more keys does not multiply that limit.
Each key can also have daily and monthly quotas. Check both the account limit and the key quota in the dashboard.
A JSON-RPC batch counts each subrequest. WebSocket and gRPC usage includes delivered messages, so subscriptions can consume usage without new HTTP calls.
See request counting and streaming limits. Reduce subscriptions or filter their scope when you receive more data than you need.
Why does eth_getLogs fail for a large range?
The block-range limit is separate from request throughput. Split queries into supported ranges using the range rules.
Block bounds are inclusive. For a maximum of N blocks, use toBlock = fromBlock + N - 1.
Advance the next range to the previous toBlock + 1. Inspect each batch result for errors before storing it as a successful page.
Why do filters disappear or return no changes?
An HTTP filter belongs to the backend that created it. Preserve the DWSESSION cookie across creation and polling with sticky sessions.
Node.js fetch does not maintain a browser cookie jar. Use a cookie-aware client or explicitly preserve the session cookie.
Create each filter after establishing its session. Concurrent filter workflows must preserve the cookie associated with each filter.
A backend restart, session change, or expired filter can invalidate the filter ID. Recreate it and backfill missed blocks where the method supports historical queries.
An empty result means no matching changes were returned. It does not prove that the chain exposes a public mempool or a sequencer's pending transactions.
Does an archive endpoint support every historical method?
No. Historical state, transaction history, tracing, and proof generation have different requirements.
Check the specific method at the oldest block your application needs. A recent eth_call does not verify a genesis query or historical eth_getProof.
Record the requested block and validate the returned state against known historical values. Do not silently replace a failed historical query with latest.
See archive nodes for the distinction between full and archive nodes.
Does a nearby gateway guarantee a nearby blockchain node?
No. The gateway and blockchain backend are separate parts of the request path. Backend availability depends on the chain and endpoint.
A DWSESSION cookie preserves backend affinity where possible. It does not select a geographic region, and backend health can override affinity.
Measure requests from your application's actual location. Record response time and the returned block or checkpoint together.
Compare providers at the same block or checkpoint. A faster response with older state can give your application less current data.
Where do I manage my account?
| Task | Dashboard location |
|---|---|
| Create, enable, or rotate a key | API Keys |
| Change your plan or manage add-ons | Settings, Plan |
| Stop a paid base plan | Open Settings, Plan as the primary account owner and choose the Free plan. Confirm the displayed effective date. |
| Cancel an add-on | Open Settings, Plan and use the cancellation control for that active add-on. Check its access end date. |
| View invoices and payment settings | Settings, Billing |
| Update company details | Settings, Account |
| Manage teammates | Settings, Team members |
Some actions require the account owner or an authorized account role. A missing control can reflect your permissions.
Disabling a key does not cancel a subscription or add-on. Confirm the cancellation status and effective date in the account controls.
What should I include when reporting a remaining problem?
Check service status first. If the problem remains, email support@dwellir.com with:
- The endpoint host and chain, without the key.
- The method, parameters, and a minimal reproduction.
- The UTC time, source region, HTTP status, and full error body.
- The requested block or checkpoint and the returned position.
- For streams, the subscription and last processed cursor.
Include a request identifier if the response provides one. These details distinguish access, routing, retention, and backend failures.
Sticky Sessions
Pin your requests to a single backend node using the DWSESSION cookie. Useful for consistent state across sequential calls like eth_getFilterChanges, eth_subscribe, and trace workflows.
Agent Tooling
Tools, skills, and documentation endpoints built for AI coding agents. Migrate RPC endpoints, query Hyperliquid, and consume docs programmatically.