Server-Sent Events stream of one account's aggregated statistics. Authenticated by the `swa` session cookie, by a `user` + `token` query pair (read-only, sessionless), or opened anonymously against the public demo account with any non-empty `demo` parameter. Emits at most one dump per second — the handler throttles on `time.Since(lastDump) > 1s`.
Open GET /dump and read typed SSE frames. The server sends `oldest-archive-date`, then `archive`, then an initial `dump`, then a further `dump` each time the account's Redis signal fires and at least
Messages
oldest-archive-date
First frame. The earliest date for which archived data exists for this account, so the UI can bound its date picker.
Content-Type: text/event-stream
archive
Second frame. Two precomputed archive windows relative to the caller's UTC offset, keyed by their day offsets.
Content-Type: text/event-stream
dump
The recurring frame. A full snapshot of the account's current aggregates, re-sent whenever new visits arrive (throttled to one per second).
Content-Type: text/event-stream
nouser
Terminal frame. Sent when there is no session, no valid token pair and no demo flag. The server then closes the stream. Note this is a 200 response carrying an in-band failure, NOT a 403 — a consumer
Content-Type: text/event-stream
About AsyncAPI
The AsyncAPI specification describes event-driven APIs the way OpenAPI describes request/response APIs. A channel is the named pipe — a webhook URL, a Kafka topic, a WebSocket route, an MQTT subject — that producers and consumers publish or subscribe to. Each channel carries one or more messages with structured payloads, and an operation declares whether a given party sends or receives on that channel.
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.