---
title: "Update Ai Feedback Capture Enabled"
method: PUT
path: "/settings/ai-feedback-capture-enabled"
tags: ["settings"]
---

# Update Ai Feedback Capture Enabled

`PUT /settings/ai-feedback-capture-enabled`

## Request

- Base URL: `https://api.verdun.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.verdun.ai/settings/ai-feedback-capture-enabled`
- Auth: HTTP bearer

Dedicated, field-specific write for the operator AI-feedback panel's
dark-by-default gate — OWNER-ONLY (unlike the ops-lead-gated writes
above), same as the feature's other owner-decided rollout gate would be.
Mirrors update_slow_triage_target's reasoning exactly: this never reads
or writes monitoring_center_timezone or slow_triage_target_seconds, so a
concurrent change to either on another connection can never be lost
here, and the general whole-record PUT /settings/ stays timezone-only.

Literal path, no catch-all conflict with the `/` routes above.

## Request body

- UpdateAiFeedbackCaptureEnabledRequest: Body for PUT /settings/ai-feedback-capture-enabled — the SOLE write path for org_settings.ai_feedback_capture_enabled (round-1 design's correction to round-0 §5: the general whole-record PUT /settings/ is timezone-only by design, exactly the reason slow_triage_target_seconds also gets its own dedicated endpoint rather than living on that one). REQUIRED, same reasoning as UpdateSlowTriageTargetRequest: this endpoint exists for exactly one purpose, so there is no "leave unchanged" case.
  - `ai_feedback_capture_enabled` boolean, required: Whether the operator AI-feedback panel is live. Dark by default (false) until an owner turns it on. Writes ONLY this column — never touches monitoring_center_timezone or slow_triage_target_seconds, so a concurrent change to either on another connection is structurally impossible to lose here.

## Response `200`

Successful Response

- GetOrgSettingsResponse
  - `monitoring_center_timezone` string, nullable: IANA timezone the monitoring center's operators work in; null when unset (frontend shows site-local time only).
  - `slow_triage_target_seconds` integer, nullable: Operator Performance 'slow triage' target in seconds (event-created -> disposition); null when unset (frontend falls back to a 90s default).
  - `ai_feedback_capture_enabled` boolean: Dark-by-default gate for the operator AI-feedback panel. Written ONLY through PUT /settings/ai-feedback-capture-enabled (owner-only) — never this resource's own PUT, which is timezone-only. False until an owner turns it on; there is no meaningful 'unset' distinct from off.
  - `deepalert_default_confidence_threshold` number, required: The FLEET default DeepAlert confidence floor (0-100, lower = more sensitive) an ii_gated camera with no valid per-camera override uses. 20 until an owner changes it through PUT /settings/deepalert-default-confidence-threshold. Read-only here. Does not govern cameras on the legacy / II-off ingestion path.
  - `deepalert_default_confidence_revision` integer, required: Revision of that fleet value: 0 at the default, +1 on every owner change. Send it back as expected_revision on the owner PUT.

## Other responses

- `422`: Validation Error

---

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