> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tenderly.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Monitor Node RPC Usage, Errors, and Rate Limits

> Track requests, TU consumption, failed calls, and 429 rate limits for each Node RPC, and find which JSON-RPC methods fail or get throttled.

Every [Node RPC](/node-rpc/overview) has request analytics in the dashboard: request counts, [Tenderly Units (TUs)](/node-rpc/pricing) consumed, failed calls by HTTP status code, and rate-limited requests, each broken down by JSON-RPC method.

## Check request counts for all Node RPCs

Open **Node RPCs** in the project sidebar. Each row shows three counters for the last 24 hours:

| Column | Counts |
| - | - |
| **Total (24h)** | Every request sent to the Node RPC |
| **Failed** | Requests that returned an HTTP error status, rate-limited requests included |
| **Rate lim.** | Requests rejected with HTTP 429 because the Node RPC exceeded its rate limit |

![Node RPCs list with the Total (24h), Failed, and Rate lim. counters](https://mintcdn.com/tenderly/dfZjNDaxcwppimjL/images/node/usage/node-list-counters.webp?fit=max\&auto=format\&n=dfZjNDaxcwppimjL\&q=85\&s=a15b44ee0465ad6a35279d535e9bdacd)

## Read the usage tiles on the Overview

Click a Node RPC to open its **Overview**. Four tiles summarize the last month of traffic:

| Tile | Shows |
| - | - |
| **TUs Consumed** | TUs charged for the Node RPC, with a bar split by method category |
| **Failed RPC Calls** | Requests that returned an HTTP error status |
| **Sent Transactions** | Calls to `eth_sendRawTransaction` and `eth_sendTransaction`, including calls the node rejected |
| **All RPC Calls** | Every request, failed and rate-limited ones included |

Each tile opens a chart view below it: **TUs Consumed** opens **Total TU**, **Failed RPC Calls** opens **Error Reporting**, **Sent Transactions** opens **Total Requests** filtered to the two send methods, and **All RPC Calls** opens **Total Requests**. In organization projects, **Manage usage** opens the organization's [usage page](/platform/account/billing/usage).

![Usage tiles on a Node RPC Overview](https://mintcdn.com/tenderly/dfZjNDaxcwppimjL/images/node/usage/node-overview-tiles.webp?fit=max\&auto=format\&n=dfZjNDaxcwppimjL\&q=85\&s=ad65becb013a191506780c0b1d26e620)

## Analyze requests over time

Below the tiles, a chart covers the current calendar month with one point per hour. Pick a view at the top:

| View | Shows |
| - | - |
| **Total Requests** | Request counts. This is the default view. |
| **Error Reporting** | Requests that returned HTTP 400, 403, 408, 429, or 500, grouped by status code |
| **Total TU** | TUs consumed |
| **TU/s** | The highest TUs per second reached in each interval, the measure the [rate limit](#investigate-rate-limiting) applies to |

The controls above the chart:

* **Method** filters to one or more JSON-RPC methods.
* **Status Code** filters by HTTP status: 200, 400, 403, 408, 429, or 500.
* **Group by** splits the chart into series by **Method** or **Status Code**. The chart draws the top 10 series.
* **Cumulative** turns the chart into a running total for the month. It isn't available in the TU/s view.
* **Chart type** switches between **Line** and **Stacked Line**.
* **Clear filters** resets Method and Status Code.

The chart uses your browser's time zone, shown above it. The table under the chart lists each method with its request count, TUs, and share of the TUs for the month.

![Total Requests view grouped by method, with the method table](https://mintcdn.com/tenderly/dfZjNDaxcwppimjL/images/node/usage/total-requests.webp?fit=max\&auto=format\&n=dfZjNDaxcwppimjL\&q=85\&s=641654a2b96e6d8f87e9227cadf6ce40)

> [!NOTE]
>
> Total Requests leaves out rate-limited (HTTP 429) requests unless you select **429** in the Status Code filter. Rate-limited requests consume no TUs.

## Find failing requests

1. On the Node RPC Overview, select **Error Reporting**. The Status Code filter preselects 400, 403, 408, 429, and 500, and the chart groups by status code.
2. Read the method table to see which methods return errors most often.
3. To isolate one status, narrow the **Status Code** filter. To see methods as chart series, set **Group by** to **Method**.

![Error Reporting view grouped by status code](https://mintcdn.com/tenderly/dfZjNDaxcwppimjL/images/node/usage/error-reporting.webp?fit=max\&auto=format\&n=dfZjNDaxcwppimjL\&q=85\&s=8b44ee864bf4c3a0faf34fb3a2a391c6)

### Which errors count as failed

The analytics record the HTTP status of each response, not the JSON-RPC error code. Node RPC returns most JSON-RPC errors with HTTP 200, so those requests count as successful in every view and consume TUs like any other call to the same method.

| Response | HTTP status | Shown as |
| - | - | - |
| Malformed request body (`-32700 parse error`) | 400 | Failed, under `unsupported` |
| Rate limit exceeded (`-32005 rate limit exceeded`) | 429 | Failed and rate-limited, under the called method |
| Unknown method (`-32601 method not found`) | 200 | Successful, under `unsupported` |
| Invalid parameters (`-32602 invalid params`), including a rejected `eth_sendRawTransaction` | 200 | Successful, under the called method |
| Reverted call (`3 execution reverted`) | 200 | Successful, under the called method |

Requests listed as `unsupported` consume no TUs.

## Investigate rate limiting

Each Node RPC has a per-second rate limit counted in TUs. A request that exceeds it gets HTTP 429 with this response:

```json theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{"id":1,"jsonrpc":"2.0","error":{"code":-32005,"message":"rate limit exceeded"}}
```

Because the limit counts TUs rather than requests, a few expensive calls reach it sooner than many cheap ones. A [`tenderly_simulateTransaction`](/node-rpc/guides/simulate-json-rpc) call costs 400 TUs, so concurrent simulations can be rate-limited while reads at 1 TU each pass. The [TU cost table](/node-rpc/pricing#tu-cost-per-request) lists the cost of every method category.

To find what triggered rate limiting:

1. In **Total Requests**, set **Status Code** to **429** and **Group by** to **Method**. The table lists the methods that were rate-limited.
2. Switch to **TU/s** to see when the per-second peaks happened.
3. Spread expensive calls over time, and retry 429 responses with a backoff.

To discuss rate limits for your Node RPCs, [contact our sales team](https://tenderly.co/contact-us).

## Monthly TU limit

Node RPC usage counts toward the organization's monthly TU limit, separately from the per-second rate limit. A Node RPC's **Settings** show how the monthly limit is enforced under **Limits**: **Soft limited** keeps serving requests past the limit, while **Hard limited** rejects them with HTTP 403 and JSON-RPC error `-32004` until the limit resets at the start of the next month. See [Usage limits, rate limits, and write limits](/platform/account/billing/limits) for how to tell the two errors apart.

## Compare usage across Node RPCs and products

These charts cover one Node RPC at a time. To compare Node RPCs, projects, networks, and methods across the organization, click **Usage** in the Node RPC sidebar or **Manage usage** on the Overview. See [Track usage and Tenderly Units](/platform/account/billing/usage).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.