---
# @generated by sylphx-gen 0.1.0 from contracts@e145cc7cf1bc9605f2b27439e5e17ed76a1a2fd7e7021906a013f7565e4a0cd5. Do not edit.
title: "Error groups"
description: "The `error_groups` collection of Sylphx Observability: An Error Group is the deterministic grouping of error occurrences by fingerprint."
type: reference
product: monitoring
summary: "An Error Group is the deterministic grouping of error occurrences by fingerprint."
updated: 2026-09-28
order: 900
---

An Error Group is the deterministic grouping of error occurrences by fingerprint. Acknowledge, resolve, and reopen require the current etag; occurrences are immutable.

**Service** Sylphx Observability · **Resource type** `observability.sylphx.com/ErrorGroup` · **Name pattern** `orgs/{org}/projects/{project}/envs/{env}/error_groups/{error_group}` · **Shape** `record`

## Fields

| Field | Type | What it is |
| --- | --- | --- |
| `name` | `string` | `orgs/{org}/projects/{project}/envs/{env}/error_groups/{error_group}`. |
| `uid` | `string` | `erg_<cell><ulid>`; never reused. Output only. |
| `meta` | `ResourceMeta` | Resource metadata. |
| `fingerprint` | `string` | The grouping fingerprint. Output only. |
| `title` | `string` | The exception type and message of the first occurrence. Output only. |
| `culprit` | `string` | The top in-app frame. Output only. |
| `service_name` | `string` | The emitting service. Output only. |
| `state` | `ErrorGroupState` | The triage state. Output only. One of `unresolved`, `acknowledged`, `resolved`. |
| `first_seen_time` | `timestamp` | The first occurrence. Output only. |
| `last_seen_time` | `timestamp` | The latest occurrence. Output only. |
| `occurrence_count` | `int64` | Occurrences, all time. Output only. |
| `last_release` | `string` | The release of the latest occurrence. Release is an attribute of each occurrence, never part of the group key: one bug stays one group across releases. Output only. |

## Methods

Every method of the collection, in the registry's order, with the scope it
needs. The full request, response and examples are one link away.

| Method | Call | What it does |
| --- | --- | --- |
| `GET` | [`get`](/docs/api/error_groups#get) | Gets an error group. |
| `GET` | [`list`](/docs/api/error_groups#list) | Lists error groups; filter by `state`, `service_name`, and `last_seen_time`. |
| `POST` | [`capture`](/docs/api/error_groups#capture) | Captures one error occurrence. It is grouped by `fingerprint` when the caller sets one, else by exception type and the symbolicated in-app stack; release is never part of the group. A new occurrence reopens a resolved group. Secrets and personal data are scrubbed by the environment's Scrubbing Policy before storage. A fingerprint-equal replay bills no second new-error unit. Under quota pressure the response says what to sample. Browsers call it with a publishable key that holds `observability:ingest` (CORS allowed, rate-limited per environment). |
| `POST` | [`acknowledge`](/docs/api/error_groups#acknowledge) | Acknowledges an error group. |
| `POST` | [`resolve`](/docs/api/error_groups#resolve) | Resolves an error group; a new occurrence reopens it. |
| `POST` | [`reopen`](/docs/api/error_groups#reopen) | Reopens a resolved or acknowledged error group. |

## get

Gets an error group.

`GET https://api.sylphx.com/v1/orgs/acme/projects/shop/envs/production/error_groups/error-group` · scope `observability:read` · effect `read` · [Request, response and examples](/docs/api/error_groups/get)

## list

Lists error groups; filter by `state`, `service_name`, and `last_seen_time`.

`GET https://api.sylphx.com/v1/orgs/acme/projects/shop/envs/production/error_groups` · scope `observability:read` · effect `read` · paginated · [Request, response and examples](/docs/api/error_groups/list)

## capture

Captures one error occurrence. It is grouped by `fingerprint` when the caller sets one, else by exception type and the symbolicated in-app stack; release is never part of the group. A new occurrence reopens a resolved group. Secrets and personal data are scrubbed by the environment's Scrubbing Policy before storage. A fingerprint-equal replay bills no second new-error unit. Under quota pressure the response says what to sample. Browsers call it with a publishable key that holds `observability:ingest` (CORS allowed, rate-limited per environment).

`POST https://api.sylphx.com/v1/orgs/acme/projects/shop/envs/production/error_groups:capture` · scope `observability:ingest` · effect `write` · callable with a publishable key · [Request, response and examples](/docs/api/error_groups/capture)

## acknowledge

Acknowledges an error group.

`POST https://api.sylphx.com/v1/orgs/acme/projects/shop/envs/production/error_groups/error-group:acknowledge` · scope `observability:write` · effect `write` · [Request, response and examples](/docs/api/error_groups/acknowledge)

## resolve

Resolves an error group; a new occurrence reopens it.

`POST https://api.sylphx.com/v1/orgs/acme/projects/shop/envs/production/error_groups/error-group:resolve` · scope `observability:write` · effect `write` · [Request, response and examples](/docs/api/error_groups/resolve)

## reopen

Reopens a resolved or acknowledged error group.

`POST https://api.sylphx.com/v1/orgs/acme/projects/shop/envs/production/error_groups/error-group:reopen` · scope `observability:write` · effect `write` · [Request, response and examples](/docs/api/error_groups/reopen)
