---
title: "List Client Error Groups"
method: GET
path: "/admin/client-errors/groups"
tags: ["admin-client-errors"]
---

# List Client Error Groups

`GET /admin/client-errors/groups`

## Request

- Base URL: `https://app.zeno-works.ch` (the document declares no server; this is the origin it was published from)
- URL: `https://app.zeno-works.ch/admin/client-errors/groups`
- Auth: none declared

Fingerprint groups with the newest sample row — the fixing agent's inbox.

## Query parameters

- `status` 'new' | 'acknowledged' | 'resolved' | 'ignored': Triage lifecycle of a ``client_error_log`` row. ``new`` on ingest; a fixing session claims via a conditional bulk update to ``acknowledged``, then flips ``resolved`` (fix merged) or ``ignored`` (noise). Recurrence after ``resolved`` shows up as fresh ``new`` rows for the same fingerprint — regression detection for free.
- `since` string, date-time, nullable
- `limit` integer

## Headers

- `authorization` string, nullable

## Cookies

- `access_token` string, nullable

## Response `200`

Successful Response

- ClientErrorGroupsResponse
  - `groups` ClientErrorGroupOut[], required
    - `fingerprint` string, required
    - `count` integer, required
    - `first_seen` string, date-time, required
    - `last_seen` string, date-time, required
    - `sample` ClientErrorOut, required: One ``client_error_log`` row (admin reads).
      - `id` string, required
      - `status` 'new' | 'acknowledged' | 'resolved' | 'ignored', required: Triage lifecycle of a ``client_error_log`` row. ``new`` on ingest; a fixing session claims via a conditional bulk update to ``acknowledged``, then flips ``resolved`` (fix merged) or ``ignored`` (noise). Recurrence after ``resolved`` shows up as fresh ``new`` rows for the same fingerprint — regression detection for free.
      - `fingerprint` string, required
      - `kind` 'window_error' | 'unhandled_rejection' | 'react_boundary' | 'route_error' | 'api_error' | 'query_error' | 'server_signal', required: Where a ``client_error_log`` report originated in the SPA (doc/architecture.md §"Client error telemetry"). ``window_error`` — uncaught exception (``window`` error event); ``unhandled_rejection`` — unhandled promise rejection; ``react_boundary`` — caught by the app-level React ErrorBoundary; ``route_error`` — caught by a React Router ``errorElement``; ``api_error`` — API call failed (5xx or network); ``query_error`` — non-API exception surfaced through the TanStack Query cache; ``server_signal`` — **not** from the SPA: an operational signal the api itself raises, where the alternative is a log line on the deploy host with whatever retention docker's json-file driver happens to have. Signup throttle trips and allowlist refusals are the first: they are how an operator learns a public mail-sending endpoint is being abused, and that must not be a `grep`.
      - `message` string, required
      - `name` string, nullable
      - `stack` string, nullable
      - `component_stack` string, nullable
      - `source` string, nullable
      - `lineno` integer, nullable
      - `colno` integer, nullable
      - `route` string, nullable
      - `href` string, nullable
      - `app_version` string, nullable
      - `user_agent` string, nullable
      - `session_id` string, nullable
      - `user_id` string, nullable
      - `company_id` string, nullable
      - `context` object, nullable
      - `triage_note` string, nullable
      - `occurred_at` string, date-time, nullable
      - `created_at` string, date-time, required
      - `updated_at` string, date-time, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/zeno-works/apis/zeno-api.md) · [All operations](https://skmtc.dev/zeno-works/apis/zeno-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zeno-works/apis/zeno-api/revisions/1eb93dde146c?raw)
