# Real-Time Events limits

[Real-Time Events](/en/documentation/platform/real-time-events/) bounds three different things: how long a record is kept, how much one query may read and return, and how much usage the account is billed for. This page states each bound, the answer a query receives past it, and the usage that is included before a rate applies.

A default limit and an included amount behave differently. Azion checks a default limit on every query, and the query fails past it. An included amount is a billing quantity, so passing it changes what the account is charged rather than what the query returns.

---

## Event retention

Real-Time Events keeps an event record for 168 hours, which is 7 days. Retention is therefore the outer bound of the period a query can ask for, whichever data source it reads. A custom time range selects a date and time range inside those same 168 hours.

[Activity History](/en/documentation/fundamentals/activity-history/) is the exception. Its data source keeps records for 2 years, and the Real-Time Events GraphQL API queries that full period.

---

## Query limits

One query carries four bounds of its own: the rows it returns, the fields it selects, the size of its payload, and the rate at which the GraphQL API accepts requests. A fifth bound applies inside the log database, on the rows one query reads before it returns anything.

### Default limits

Each row names what is bounded, the bound, and what a query past it receives. For the body an error response carries, refer to [GraphQL API error responses](/en/documentation/devtools/graphql/error-responses/).

| Scope                             | Limit           | Past the limit                                                                                                                               |
| --------------------------------- | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| Rows returned per query           | 10,000 rows     | The GraphQL API returns an error response that names the limit.                                                                              |
| Selected fields per query         | 37 fields       | The GraphQL API returns an error response that names the limit.                                                                              |
| GraphQL API requests              | 120 per minute  | `429`                                                                                                                                        |
| Rows read inside the log database | 10 billion rows | The query fails with `A query limit was exceeded. Try to refine your filter parameters or query a smaller period for a more precise search.` |

The row and field bounds belong to the GraphQL API itself and apply to every dataset it serves. The `limit` field in a query sets the row count, up to 10,000. For both values, refer to [GraphQL API limits](/en/documentation/devtools/graphql/limits/).

Two further values apply: a query payload reaches 5 GB, and a record becomes available to a query up to 30 seconds after the event that produced it.

The 10-billion row bound is enforced by the log database rather than by the GraphQL API. It counts the rows a query reads, not the rows the query returns. A query over a broad time range with no other filter can reach it, and a search across the full 7 days of retention is the common case. To stay inside the bound, narrow the time range or add a filter on a host, an IP address, an HTTP status code, or another parameter of the search.

Azion can raise these default limits on request, based on your plan. To request an increase, contact the [technical support](/en/documentation/support/) team.

---

## Included usage

Real-Time Events is billed on two metrics, Storage and Data Scan. Both are measured per GB per month, and each one includes a first amount before a rate applies.

| Metric    | Included             |
| --------- | -------------------- |
| Storage   | First 1 GB per month |
| Data Scan | First 1 GB per month |

These amounts are billing quantities rather than bounds applied to a query. A query that passes one of them returns its records as usual, and the usage past the included amount is charged.

For the rate that applies past an included amount, refer to [Pricing](/en/documentation/fundamentals/pricing/#real-time-events).

---

## Related resources

- [Data sources](/en/documentation/platform/real-time-events/data-sources.md): The eight data sources a query reads from, and the variables each one carries.
- [How Real-Time Events works](/en/documentation/platform/real-time-events/how-it-works.md): How a product writes an event record and how that record reaches a query.
- [Real-Time Events best practices](/en/documentation/platform/real-time-events/best-practices.md): How to shape a query that stays inside the row-read bound on this page.
- [Troubleshoot Real-Time Events](/en/documentation/platform/real-time-events/troubleshooting.md): What to do about a query that one of these bounds refused.
