---
title: "Update a semantic alert"
method: PATCH
path: "/me/semantic-alerts/{id}"
tags: ["Account"]
---

# Update a semantic alert

`PATCH /me/semantic-alerts/{id}`

Signed-in semantic alerts (#2304). Stores a freeform interest and email/webhook preferences. Matching runs after release.created for releases already on the caller's follow graph: one JEV decision per release, one question per enabled alert, notify when the matches-interest probability is at least the alert threshold (default 0.80, allowed 0.50–1.00). At most 5 alerts per account. Query text is user-private and is never written to Analytics Engine. Requires a Better Auth session or a user Bearer token (`relu_` or OAuth JWT); machine `relk_` tokens and anonymous callers are refused. Returns 404 when `semantic-alerts-enabled` is off. Partial body. `webhookSubscriptionId: null` clears the link. An empty body returns the current alert.

## Path parameters

- `id` string, required

## Response `200`

The updated alert.

- object
  - `id` string, required — Typed id, `sal_` prefix.
  - `query` string, required — Freeform interest. User-private.
  - `enabled` boolean, required
  - `threshold` number, required
  - `deliverEmail` boolean, required
  - `deliverWebhook` boolean, required
  - `webhookSubscriptionId` string, nullable, required
  - `createdAt` string, date-time, required
  - `updatedAt` string, date-time, required

## Other responses

- `400` — Invalid query, threshold, booleans, or webhookSubscriptionId
- `401` — Sign-in required
- `404` — Alert not found, or semantic alerts are disabled

## Changes

- **2026-09-23** `5d21ba2f0fcc` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/releases/apis/releases-api/changes/me/semantic-alerts/:id/patch.md)

---

[API](https://skmtc.dev/releases/apis/releases-api.md) · [All operations](https://skmtc.dev/releases/apis/releases-api/llms.txt) · [OpenAPI document](https://skmtc.dev/releases/apis/releases-api/revisions/099eb92e3137?raw)
