---
title: "Update account health insight"
method: PATCH
path: "/account-health/insights/{insightId}"
tags: ["Account Health"]
---

# Update account health insight

`PATCH /account-health/insights/{insightId}`

## Request

- Base URL: `https://api.sequenzy.com/api/v1`
- URL: `https://api.sequenzy.com/api/v1/account-health/insights/{insightId}`
- Auth: HTTP bearer

Dismisses, snoozes, resolves or reopens one insight. A resolved insight reopens if the next check still finds it; a dismissed one stays hidden. Requires the sequences:write scope.

## Path parameters

- `insightId` string, required

## Request body

- object
  - `action` 'dismiss' | 'snooze' | 'resolve' | 'reopen', required
  - `snoozeDays` integer: Days to snooze, only with action snooze. Defaults to 7.

## Response `200`

Insight updated

- object
  - `success` boolean
  - `insight` AccountHealthInsight: One finding of the account health check. The same problem keeps one insight across checks.
    - `id` string
    - `detector` 'unhandled_event' | 'stalled_sequence' | 'campaign_gap' | 'stale_campaign_drafts' | 'underperforming_sequence_email' | 'deliverability_spike' | 'sending_domain_failing' | 'missing_sequence' | 'over_emailing' | 'neglected_subscribers' | 'unengaged_signups'
    - `severity` 'high' | 'medium' | 'low'
    - `status` 'open' | 'snoozed' | 'dismissed' | 'resolved'
    - `title` string
    - `detail` string
    - `recommendation` string
    - `evidence` object: Detector-specific numbers behind the finding. Event findings carry `monthlyRevenue` (USD a month the people behind the event pay) when a payment integration syncs revenue to contacts. A missing_sequence finding carries the suggested `playbook`, `name`, `goal`, `trigger` and `steps`. An over_emailing finding carries `overloadedSubscribers`, `recipients`, `peakPerDay`, `dailyThreshold`, `windowDays`, `frequencyCap` (null when off) and `sources` (type campaign, sequence or api, id, name, sends, and respectsFrequencyCap for sequences, plus enrollsEveryTime when the sequence uses unlimited re-entry and peakEnrollmentsPerPerson, the most times one person entered it in the window; the api source has an empty id and stands for marketing Send API email, which the frequency cap does not limit). A neglected_subscribers finding carries `neglectedSubscribers`, `eligibleSubscribers`, `days`, `estimated` and `sampled`. An unengaged_signups finding carries `provider` and `providerLabel` (a consumer mailbox provider such as gmail or yahoo; business domains are never reported), `listId` and `listName` (the list these contacts joined first, null for none), `subscribers`, `emailed` (how many got at least two emails), `sends`, `engaged` (how many of them opened or clicked), `baselineEmailed` and `baselineEngaged` (the same for the other new signups), `windowDays`, `sampled` and `capped` (`true` when more people joined than were checked).
    - `subjectType` 'event' | 'automation' | 'campaign' | 'sending_domain' | 'company'
    - `subjectId` string, nullable
    - `subjectName` string, nullable
    - `fixAutomationId` string, nullable: Inactive draft sequence the agent created to fix this, if any.
    - `actions` AccountHealthAction[]: What to do about the finding, primary first. Actions with a path open that dashboard screen; the others are performed by the api call listed, after the confirm prompt when one is given.
      - `kind` 'create_sequence' | 'open_sequence' | 'activate_sequence' | 'pause_sequence' | 'create_campaign' | 'review_campaign_drafts' | 'open_campaign' | 'verify_sending_domain' | 'open_domain_settings' | 'review_deliverability' | 'open_frequency_cap_settings' | 'apply_frequency_cap' | 'review_subscribers'
      - `label` string
      - `primary` boolean: The main fix. At most one action per insight is primary.
      - `path` string, nullable: Dashboard path under /dashboard/company/{companyId}, for actions that open a screen.
      - `targetId` string, nullable: The sequence, campaign or sending domain the action works on.
      - `confirm` object, nullable: Prompt to show before performing the action because it changes live sending.
        - `title` string
        - `description` string
        - `confirmLabel` string
        - `destructive` boolean
      - `api` object, nullable: Public API call that performs the action, relative to /api/v1.
        - `method` 'POST'
        - `path` string
      - `workspaceOnly` boolean: Only owners and admins can perform it.
    - `feedback` AccountHealthInsightFeedback: One person's answer to "was this useful?" for one finding.
      - `rating` 'useful' | 'not_useful'
      - `comment` string, nullable: What made it useful or not, or null.
      - `updatedAt` string, date-time
    - `snoozedUntil` string, date-time, nullable
    - `firstSeenAt` string, date-time
    - `lastSeenAt` string, date-time
    - `resolvedAt` string, date-time, nullable

## Other responses

- `400`: action is missing or unknown, or snoozeDays is out of range
- `401`: Unauthorized
- `403`: API key is missing the sequences:write scope, or the user has view-only access
- `404`: Insight not found in this company

## Changes

- **2026-10-27** `8156dc12d8b4`: 2 warning
  - added the new `review_subscribers` enum value to the `insight/actions/items/kind` response property for the response status `200`
  - added the new `unengaged_signups` enum value to the `insight/detector` response property for the response status `200`
- **2026-10-16** `db3873ca3d4d`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/sequenzy/apis/sequenzy-api/changes/account-health/insights/:insightId/patch.md)

---

[API](https://skmtc.dev/sequenzy/apis/sequenzy-api.md) - [All operations](https://skmtc.dev/sequenzy/apis/sequenzy-api/llms.txt) - [OpenAPI document](https://skmtc.dev/sequenzy/apis/sequenzy-api/revisions/8156dc12d8b4?raw)
