---
title: "Access events (paginated)"
method: GET
path: "/access/events"
tags: ["Access"]
---

# Access events (paginated)

`GET /access/events`

## Request

- Base URL: `https://api.tatum.io/v4/logs`
- URL: `https://api.tatum.io/v4/logs/access/events`
- Auth: API key in header `x-api-key`

Individual access events, paginated with a keyset cursor over
`(timestamp, req_id)`. Pass `next_cursor` from the previous response back as
`cursor` to fetch the next page. `req_id` is not unique, so a page is
extended rather than allowed to end mid-request — see `limit` — and a single
event is addressed by its `event_id`.

## Query parameters

- `cursor` string
- `limit` integer
- `time_range` union
  - '5m'
  - '15m'
  - '1h'
  - '6h'
  - '24h'
  - '7d'
  - '14d'
  - '30d'
- `from` string, date-time
- `to` string, date-time
- `search` string
- `filter[status_code][in]` integer[]
- `filter[status_code][nin]` integer[]
- `filter[status_code][between]` integer[]
- `filter[network][in]` string[]
- `filter[network][nin]` string[]
- `filter[chain][in]` string[]
- `filter[chain][nin]` string[]
- `filter[method][in]` string[]
- `filter[method][nin]` string[]
- `filter[method][contains]` string
- `filter[remote_ip][in]` string[]
- `filter[remote_ip][nin]` string[]
- `filter[source][in]` string[]
- `filter[source][nin]` string[]
- `filter[req_id][in]` string[]
- `filter[event_id][in]` string[]

## Response `200`

A keyset-paginated page of individual access events.

- AccessEventPage: Keyset-paginated page of access events.
  - `data` AccessEvent[], required: Rows for the current page, in the query's sort order. **May hold more than the requested `limit`.** On the event endpoints `req_id` is not unique — one request emits one error row per failing JSON-RPC batch member — so a page that would end in the middle of a request is extended with that request's remaining rows. Ending mid-request is what would let the keyset cursor skip rows, so the overshoot is deliberate. Size a viewport on the rows actually returned, not on `limit`.
    - `event_id` string, required: Opaque identifier for this individual access row, and the only stable address for it. `req_id` is producer-generated rather than Envoy-injected, so it is not unique — it collides with unrelated requests. Pass this to `GET /access/events/{id}` or `filter[event_id][in]`.
    - `req_id` string, required: Request identifier, and the join key across access and error logs. **Not unique** — see `event_id`.
    - `timestamp` string, required: When the request was received, ISO-8601 UTC.
    - `method` string, required: HTTP method of the request.
    - `uri` string, required: Request path, API keys masked (`t-0123****abcdef`).
    - `status_code` number, required: HTTP response status code.
    - `req_time_ms` number, required: Upstream response time in milliseconds.
    - `source` string, required: Traffic source / attribution channel.
    - `trace_id` string, required: Distributed-trace identifier for correlating across services.
    - `gateway_id` string, required: Gateway that served the request.
    - `interface_id` string, required: Interface (chain-network endpoint) that handled the request.
    - `chain` string, required: Blockchain the request targeted.
    - `network` string, required: Chain-qualified network the request targeted.
    - `region` string, required: Serving region.
    - `bytes_sent` number, required: Response payload size in bytes.
    - `bytes_read` number, required: Request payload size in bytes.
    - `remote_ip` string, required: Client IP as seen by the edge (proxy-aware).
    - `ua` string, required: Client user-agent string.
    - `batch_size` number, required: Number of sub-requests when the call was a JSON-RPC batch (1 for non-batched calls).
    - `host` string, required: Host header the request was sent to.
    - `error_reason` string, required: Why the gateway rejected the request before forwarding it, e.g. `ip_not_allowed`, `origin_not_allowed`, `origin_missing`, `credits_exhausted`, `rate_limit_exceeded`, `api_key_invalid`. Empty when the request was not rejected by the gateway, and on rows logged before the gateway started recording a reason (for Envoy Gateway `blockchain-rpc` rows, until 2026-10-25).
  - `next_cursor` string: Opaque cursor pointing at the row after the last one in `data`. Pass it back as `cursor` to retrieve the next page. Omitted when there are no more rows.

## Other responses

- `401`: Unauthorized

---

[API](https://skmtc.dev/tatum/apis/logs-api.md) - [All operations](https://skmtc.dev/tatum/apis/logs-api/llms.txt) - [OpenAPI document](https://skmtc.dev/tatum/apis/logs-api/revisions/e47603e0f75f?raw)
