---
title: "Update Org Settings"
method: PUT
path: "/settings/"
tags: ["settings"]
---

# Update Org Settings

`PUT /settings/`

## 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/`
- Auth: HTTP bearer

## Request body

- UpdateOrgSettingsRequest: TIMEZONE-ONLY. slow_triage_target_seconds deliberately has NO field here — it used to (optional, omit-means-unchanged), but that let a stale whole-record PUT (e.g. an out-of-date ops-view timezone-editor payload that still carried an old target value) revert a target set concurrently via the dedicated PUT /settings/slow-triage-target. Removed entirely (Copilot re-review on PR #175, mirror of the P1-2 hazard the dedicated endpoint closes in the other direction) rather than hardened further, so "PUT /settings/ is timezone-only" is an enforced contract, not just documentation. See OrgSettingsService.set_slow_triage_target for the sole write path; GET /settings/ still reads the column.
  - `monitoring_center_timezone` string, nullable, required: IANA timezone the monitoring center's operators work in; shown as the 'Center' clock beside each site's local time. Explicit null clears it (site-local only); the field cannot be omitted.

## 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/a19366be50a3?raw)
