Update an analytics alert
Changes an alert.
Changing what it watches, or turning it on or off, starts it over at pending and ends any open notice; a new name does not. Its kind cannot change.
Guide: Alerts
A project secret key: vh_sk_... for production, vh_sk_test_... for test. Keep it on your servers.
In: header
Path parameters
The project's id, proj_.... A secret key works only in the project it belongs to.
The alert's id, alert_....
Request body
application/json
TypeScript definitions
Use the request body type in TypeScript.
The new name, 1 to 255 characters. Renaming doesn't reset the alert's state.
The new event to count or watch; for failure_share, the event of a failed attempt.
The new event of an attempt that worked, for failure_share alerts only.
The new window in hours: 1, 6, 24 or 168.
The new threshold: a whole count of at least 1 for event_count, a share between 0 and 1 for the others.
The new minimum of distinct people, at least 1; for event_count alerts only.
Whether the alert is checked; false turns it off.
Examples
curl -X PATCH "https://api.voidhash.com/api/v1/projects/proj_tz4a98xxat96iws9zmbrgj3a/analytics/alerts/alert_k3v9m2x7c1q8w4e6r0t5y2u8" \ -H "Authorization: Bearer vh_sk_..." \ -H "Content-Type: application/json" \ -d '{ "threshold": 0.1 }'{ "id": "alert_k3v9m2x7c1q8w4e6r0t5y2u8", "projectId": "proj_tz4a98xxat96iws9zmbrgj3a", "name": "Workout sync failing", "kind": "failure_share", "eventName": "workout_sync_failed", "successEventName": "workout_sync_completed", "windowHours": 24, "threshold": 0.1, "minPeople": null, "isEnabled": true, "state": "pending", "value": null, "baseline": null, "baselineWeeks": null, "checkedThrough": null, "firingSince": null, "createdAt": "2026-03-05T12:00:00.000Z"}{ "error": { "type": "invalid_request", "code": "invalid_body", "message": "The request body is invalid: Expected object" }}{ "error": { "type": "unauthenticated", "code": "invalid_api_key", "message": "This secret key is not valid." }}{ "error": { "type": "permission_denied", "code": "permission_denied", "message": "Insufficient permissions." }}{ "error": { "type": "not_found", "code": "project_not_found", "message": "There is no project proj_tz4a98xxat96iws9zmbrgj3a, or this credential cannot use it.", "param": "projectId" }}{ "error": { "type": "internal", "code": "internal_error", "message": "Something went wrong on our side. Try again, and contact support with the Request-Id header if it keeps failing." }}Response body
application/json
application/json
application/json
application/json
application/json
application/json
Errors
This operation adds no error codes of its own. It can fail with the errors every operation shares, such as unauthenticated; see Errors.
More in Analytics alerts
Something wrong or missing on this page? Tell us by email or on Discord.