---
title: "Per-name event counts"
method: GET
path: "/v1/events/stats"
tags: ["Events"]
---

# Per-name event counts

`GET /v1/events/stats`

## Request

- Base URL: `https://api.volanea.com`
- URL: `https://api.volanea.com/v1/events/stats`
- Auth: HTTP bearer

Count and first/last-seen timestamp for every event name, most frequent first.

**Windowing is opt-in.** With no range parameters this covers the project's whole history, which is what it did before ranges existed — narrowing the default would have changed the meaning of a number callers are already charting. Pass `days` for a rolling window or `from`/`to` for an explicit one; the two forms are mutually exclusive and sending both is a 422 rather than a silent choice between them.

When a range is given the response carries a `window` object echoing it back, and `firstSeen`/`lastSeen` become the extremes *inside* that window rather than the event's all-time first sighting. A request with no range omits `window` entirely.

## Query parameters

- `days` integer
- `from` string, date-time
- `to` string, date-time

## Response `200`

Per-name stats.

- object
  - `data` object[]
    - `name` string
    - `count` integer
    - `firstSeen` integer: Unix ms.
    - `lastSeen` integer: Unix ms.

## Other responses

- `401`: Missing or invalid API key.
- `422`: Request validation failed (code `validation_error`, 422).

---

[API](https://skmtc.dev/volanea/apis/volanea-api.md) · [All operations](https://skmtc.dev/volanea/apis/volanea-api/llms.txt) · [OpenAPI document](https://skmtc.dev/volanea/apis/volanea-api/revisions/9e187ae84fda?raw)
