Skip to main content
An error group collects the events of one error in a project. Use this API to find, inspect, and update these groups. For which errors become issues and how grouping works, see Issues and error grouping.
The dashboard calls these records Issues. The public API paths remain under /errors, and the CLI remains squasher errors, for compatibility. Do not rewrite those contract names to /issues.

Error group IDs

Each error group has two IDs:
  • id - the UUID of the group.
  • short_id - a short ID that is unique in the project, for example iss_42. Squasher gives the next number to each new group in the project. The first group in a project is iss_1. A short ID never changes and is not used again.
Every {error_group_id} path parameter on this page accepts the UUID or the short ID. The dashboard issue URL accepts both too. Request bodies, such as duplicate_error_group_ids, take UUIDs only.

List error groups

Common query parameters:
  • from - optional ISO 8601 start timestamp
  • to - optional ISO 8601 end timestamp
  • status - one of unresolved, resolved, ignored, muted, or all
  • priority - one of low, medium, high, or critical
  • level - severity level filter
  • service - service.name filter
  • environment - deployment environment filter
  • q - substring search across title, type, fingerprint, service, and environment. A short ID (iss_42, #42, or 42) also finds that group.
  • limit
  • offset
  • sort - one of last_seen, first_seen, event_count, or priority
Example:
List responses include each group’s id, short_id, priority, bookmarked, subscribed, service_name, and environment when known, plus facets arrays for service, environment, and level filter dropdowns. Each group also exposes assigned_to and ai_assigned; when ai_assigned is true and assigned_to is null the Squasher agent currently owns the group (auto-triage assignment). Each group may also include an optional automation object summarizing the latest AI activity for that group: triage_status, plus fix_run and triage_run (each with the run’s intent, status, stage, and a pr_url when a pull request has been opened). Any field is null when it does not apply, and automation itself is null when there is no AI activity.

Count error groups per status

Returns the number of groups in each status for one set of filters, from one request. Use it for status tabs or queue sizes instead of one list request per status. Query parameters are the list filters without status, sort, limit, and offset: from, to, priority, level, service, environment, and q. Example response:
total is the sum of the four counts. Merged duplicate groups are not counted, the same as in the list. CLI:

Get one error group

{error_group_id} is the UUID or the short ID, for example GET /v1/projects/{project_id}/errors/iss_42. The response has both id and short_id. The response can include the group title, fingerprint, priority, bookmark and subscription state for the current user, event counts, timestamps, current AI triage fields, merged_into when the group is an active duplicate, and merged_from for active duplicates merged into this canonical group. Optional query parameters:
  • include_replay - set to false to skip replay linkage when you only need the core group fields
  • from - optional ISO 8601 start timestamp for replay linkage lookup
  • to - optional ISO 8601 end timestamp for replay linkage lookup

Update workflow metadata

JSON body:
Use assigned_to to assign or clear an owner. Setting assigned_to also clears the response field ai_assigned, signalling that a human has taken over from the Squasher agent. Use status to move the error group through unresolved, resolved, ignored, or muted. Use priority to set triage urgency. Use bookmarked and subscribed to update the current user’s saved and notification state; those two fields require an OAuth user session and are rejected for API-key-only requests. Include at least one field in the body. CLI:

Merge duplicate groups

Use the canonical error group id in the URL. The request body lists duplicate groups to merge into it:
Merged duplicate groups are hidden from normal unresolved list results. Fetching a merged duplicate returns merged_into so callers can link to the canonical group. Future runtime events that match a merged duplicate fingerprint increment the canonical group.

Unmerge a duplicate group

Use the duplicate error group id in the URL. Unmerge restores the group to normal list results and future events for its fingerprint increment that restored group again.
Optional query parameters:
  • from - optional ISO 8601 start timestamp
  • to - optional ISO 8601 end timestamp

List suspect commits

Optional query parameters:
  • from - optional ISO 8601 start timestamp
  • to - optional ISO 8601 end timestamp

Read the AI triage result

AI triage runs in the background. The API has no endpoint that starts a triage run or lists triage runs. Read the latest result from the error group detail: triage_summary, triage_fix, and triage_status. In list responses, the automation object also shows the status of the latest triage and fix run. To triage an issue again, open it in the dashboard and select Run triage in the Squasher triage card. To investigate it with the Squasher Agent, send the issue link to the Ask API, squasher ask, dashboard chat, or Slack. See AI triage.

Agent handoff

Use this sequence for incident or bug investigation:
  1. List unresolved groups with a bounded time window.
  2. Fetch one error group detail.
  3. Fetch related traces and suspect commits, and read the triage fields of the detail.
  4. Ask before updating status or assigning ownership.
The same workflow is available through squasher errors ... or MCP search("errors") followed by execute.