---
title: "Update a Signal"
method: PATCH
path: "/v1/signals/{signal_id}"
tags: ["Signals"]
---

# Update a Signal

`PATCH /v1/signals/{signal_id}`

## Request

- Base URL: `https://api.lmnr.ai`
- URL: `https://api.lmnr.ai/v1/signals/{signal_id}`
- Auth: HTTP bearer

Updates a Signal. An update that changes the effective Signal configuration increments its server-managed version.

<Note>
  `llmProfileId` and `model` are available only on self-hosted deployments. Provide both fields together to change the Signal's LLM route. Laminar Cloud rejects them.
</Note>

## Request body

- UpdateSignalRequest
  - `name` string
  - `prompt` string
  - `structuredOutput` object: JSON Schema for the Signal's structured result.
  - `sampleRate` integer, nullable: Percentage of matching traces to sample; null clears sampling on update.
  - `disabled` boolean
  - `trigger` union
    - object
      - `type` 'rootSpanFinished', required
    - object
      - `type` 'spanName', required
      - `spanNames` string[], required
  - `filters` SignalFilter[]
    - `column` 'total_token_count' | 'status' | 'span_names' | 'tags', required
    - `operator` 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'includes' | 'not_includes', required
    - `value` unknown, required
  - `mode` 'batch' | 'realtime'
  - `llmProfileId` string, uuid
  - `model` string, nullable: Self-hosted only. Model selected from `llmProfileId`. Provide both fields together.

## Response `200`

Signal updated.

- Signal
  - `name` string, required
  - `prompt` string, required
  - `structuredOutput` object, required: JSON Schema for the Signal's structured result.
  - `sampleRate` integer, nullable, required: Percentage of matching traces to sample; null clears sampling on update.
  - `disabled` boolean, required
  - `trigger` union, required
    - object
      - `type` 'rootSpanFinished', required
    - object
      - `type` 'spanName', required
      - `spanNames` string[], required
  - `filters` SignalFilter[], required
    - `column` 'total_token_count' | 'status' | 'span_names' | 'tags', required
    - `operator` 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'includes' | 'not_includes', required
    - `value` unknown, required
  - `mode` 'batch' | 'realtime', required
  - `llmProfileId` string, uuid, required
  - `model` string, nullable, required: Self-hosted only. Model selected from `llmProfileId`. Provide both fields together.
  - `id` string, uuid, required
  - `projectId` string, uuid, required
  - `createdAt` string, date-time, required
  - `version` integer, required: Server-managed version of the Signal configuration.
  - `llmProfileName` string, nullable, required: Display name of the selected workspace LLM profile.

## Other responses

- `400`: Invalid request.
- `401`: Missing or invalid API key.
- `404`: The requested resource was not found in this project.
- `409`: A resource with the requested name already exists.

---

[API](https://skmtc.dev/laminar-sh/apis/laminar-api.md) - [All operations](https://skmtc.dev/laminar-sh/apis/laminar-api/llms.txt) - [OpenAPI document](https://skmtc.dev/laminar-sh/apis/laminar-api/revisions/8a7a08163846?raw)
