---
title: "Update a Signal"
method: PUT
path: "/1/signals/{signalId}"
tags: ["Anomaly Detection"]
---

# Update a Signal

`PUT /1/signals/{signalId}`

## Request

- Base URL: `https://api.honeycomb.io`
- URL: `https://api.honeycomb.io/1/signals/{signalId}`
- Auth: API key in header `X-Honeycomb-Team`

Update a Signal by ID. All fields in the body are optional; only the fields you supply
are applied.

- `enabled`: Toggles the Signal on or off. Re-enabling a Signal that has already trained puts it back into `normal`; otherwise it returns to `onboarding`.
- `sensitivity`: Sets how far a measurement must deviate from the trained normal band before the Signal fires. Not applicable to `presence` Signals, and cannot be set on a Signal that has not yet trained.
- `recipients`: Replaces the Signal's Recipient set. An empty array clears all Recipients. Modifying Recipients requires the **Manage Recipients** permission in addition to **Manage Signals**.

## Request body

- UpdateSignalRequest: Fields to update on a Signal. All fields are optional and only supplied fields are applied.
  - `enabled` boolean: Turn the Signal on (`true`) or off (`false`).
  - `sensitivity` 'low' | 'medium' | 'high': How far a measurement must deviate from the trained normal band before the Signal fires. Higher sensitivity narrows the normal band and catches smaller deviations. `sensitivity` is always `null` for `presence` Signals.
  - `recipients` SignalRecipient[]: Replace the Signal's Recipient set with the given list. An empty array clears all Recipients. Each Recipient must be referenced by its `id` from the [Recipients API](/api/recipients/). Requires the **Manage Recipients** permission in addition to **Manage Signals**.
    - `id` string, required: The unique identifier of an existing Recipient. Create Recipients via the [Recipients API](/api/recipients/).
    - `details` object: Per-assignment settings for how this Recipient receives notifications for this Signal.
      - `pagerduty_severity` 'critical' | 'error' | 'warning' | 'info': Severity to use when the assigned Recipient is a PagerDuty Recipient. Rejected for non-PagerDuty Recipients.
      - `muted` boolean: When `true`, the Recipient is muted for this Signal and will not receive notifications.

## Response `200`

Success

- SignalDetailResponse: A Honeycomb Anomaly Detection Signal.
  - `id` string, required: Unique identifier (ID) of the Signal.
  - `service_name` string, required: The name of the service the Signal monitors.
  - `dataset_slug` string, required: The slug of the dataset the Signal's service reports to.
  - `environment_slug` string, required: The slug of the environment the Signal belongs to.
  - `measured_signal` 'error_rate' | 'presence', required: The kind of measurement the Signal is trained on. - `error_rate`: The fraction of erroring requests for the service. - `presence`: Whether the service is producing spans.
  - `enabled` boolean, required: Whether the Signal is currently enabled. Disabled Signals do not fire.
  - `status` 'onboarding' | 'normal' | 'anomalous' | 'off' | 'ineligible', required: The lifecycle status of the Signal. `ineligible` is returned when the underlying service does not meet the conditions required for training.
  - `sensitivity` 'low' | 'medium' | 'high', required: How far a measurement must deviate from the trained normal band before the Signal fires. Higher sensitivity narrows the normal band and catches smaller deviations. `sensitivity` is always `null` for `presence` Signals.
  - `auto_investigate` boolean, required: When `true`, Honeycomb will automatically start an investigation when this Signal fires.
  - `currently_anomalous` boolean, required: Whether the Signal is currently in an anomalous state.
  - `last_anomaly_started_at` integer, nullable, required: The start time of the most recent anomaly, in seconds since UNIX epoch. `null` when the Signal has never been anomalous.
  - `last_anomaly_ended_at` integer, nullable, required: The end time of the most recent anomaly, in seconds since UNIX epoch. `null` when no anomaly has ended yet, or the Signal is currently anomalous.
  - `created_at` string, date-time, required: The ISO8601-formatted time when the Signal was created.
  - `updated_at` string, date-time, required: The ISO8601-formatted time when the Signal was last updated.
  - `recipients` NotificationRecipient[], required: The Recipients notified when this Signal fires.
    - `id` string
    - `type` 'pagerduty' | 'email' | 'slack' | 'webhook' | 'msteams' | 'msteams_workflow': One of the supported Recipient Types
    - `target` string: The target of the notification. For example, the specific Slack channel or email address. For Recipients of `type = "webhook"` or `type = "msteams_workflow"`, this will be the Name in the UI and `webhook_name` in the Recipients API. Deprecated: Use the Recipients API first, then pass the Recipient ID.
    - `details` NotificationRecipientDetails
      - `pagerduty_severity` 'critical' | 'error' | 'warning' | 'info': When using a Recipient of `type = "pagerduty"`, the severity of the alert can be specified.
      - `variables` object[]: When using a Recipient of `type = "webhook"`, the alert-level variables can be specified.
        - `name` string, required
        - `value` string
      - `muted` boolean: When `true`, the Recipient is muted for this alert and will not receive notifications. Only applies to Recipients assigned to a Signal via the Anomaly Detection API.

## Other responses

- `400`: The provided request body was invalid.
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `409`: Conflict
- `422`: Validation Failed
- `429`: Rate Limit Exceeded
- `default`: Error

## Changes

- **2026-11-03** `276c5555582a`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/honeycomb/apis/honeycomb-api/changes/1/signals/:signalId/put.md)

---

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