---
title: "Update project"
method: PATCH
path: "/v1/projects/{projectSlug}"
tags: ["Projects"]
---

# Update project

`PATCH /v1/projects/{projectSlug}`

Updates a project's name and/or settings. Renaming never changes the slug, and the slug cannot be changed via the API (only from the dashboard). Use `id` or `slug` as stable references.

## Path parameters

- `projectSlug` string, required — Project slug (human-readable identifier)

## Request body

- UpdateProjectBody
  - `name` string — New human-readable name. Renaming never changes the slug.
  - `settings` ProjectSettingsPatch — Patch the project's settings overrides. Only the fields you send are changed; omitted fields keep their stored values. To clear overrides entirely, edit via the web UI.
    - `keepMonitoring` boolean — When `true`, the evaluation linked to an signal keeps running after the signal is resolved. When `false`, resolving the signal stops the evaluation. Defaults to `true` when omitted.
    - `redaction` RedactionSetting — Server-side PII redaction applied before spans are stored. An organization-wide policy can override this one; when the organization locks its policy, project values are ignored entirely rather than merged.
      - `mode` 'off' | 'enforce' — `enforce` scans span content as it is ingested and replaces matches with a labelled placeholder such as `[REDACTED_EMAIL]`; `off` scans nothing. Defaults to `off` when omitted. Applies only to spans ingested after the change, takes effect within a minute, and redacted content cannot be recovered.
      - `entities` string[] — Which categories to look for. Defaults to email, phone, credit_card, iban, us_ssn, secret when omitted; `ip_address` is off by default because a dotted quad and a four-part version string are the same string. Detection is pattern based: it reliably catches structured identifiers, and does not catch names, addresses, or free-form personal detail.
      - `scopes` object — Which span fields to scan beyond message and tool content.
        - `metadata` boolean — Also scan the metadata map and tags. Defaults to `false` when omitted, because metadata is usually operational and redacting it removes values you filter and group by.
      - `identities` 'keep' | 'pseudonymize' — How to handle `userId` and `userEmail`. `keep` stores them unchanged; `pseudonymize` replaces each with a stable per-organization pseudonym so filtering and grouping by user keep working. Defaults to `keep` when omitted. Deployments with no pseudonym secret configured remove the identifier entirely instead.
    - `notifications` NotificationsSetting — Per-group project-level notification toggles (`incidents`, `destinations`).
      - `incidents` IncidentNotificationsSetting — Per-alert-kind opt-out for incident notifications.
        - `signal.escalating` boolean — Send a notification when an active signal is escalating in volume or severity. Defaults to `true` when omitted.
        - `monitor.match` boolean — Send a notification when a match monitor opens an incident. Defaults to `true` when omitted.
        - `monitor.threshold` boolean — Send a notification when a threshold monitor opens an incident. Defaults to `true` when omitted.
        - `monitor.escalating` boolean — Send a notification when an escalating monitor opens an incident. Defaults to `true` when omitted.
      - `destinations` DestinationNotificationsSetting — Project-level opt-out for data-destination notifications.
        - `quarantine` boolean — Notify org members when a data destination is quarantined after repeated sync failures. Defaults to `true` when omitted.
    - `escalation` EscalationSetting — Tuning parameters for the escalation detector. Affects detector behaviour regardless of whether notifications are enabled.
      - `sensitivity` integer — Sensitivity of the escalation detector, 1 (most sensitive, more incidents) to 6 (least sensitive, fewer incidents). Defaults to a balanced value when omitted.
  - `flaggers` object — Enable or disable specific flaggers for the project. Keys are flagger slugs; values are the new `enabled` state. Omitted slugs are left untouched.
    - `frustration` boolean
    - `nsfw` boolean
    - `refusal` boolean
    - `laziness` boolean
    - `jailbreaking` boolean
    - `forgetting` boolean
    - `trashing` boolean
    - `bluffing` boolean
    - `pii-leakage` boolean
    - `incompletion` boolean
    - `tool-call-errors` boolean
    - `output-schema-validation` boolean
    - `empty-response` boolean
    - `low-cache-hit-rate` boolean

## Response `200`

Updated project

- Project
  - `id` string, required — Stable project identifier (CUID2).
  - `organizationId` string, required — Organization that owns this project.
  - `name` string, required — Human-readable name.
  - `slug` string, required — URL-safe slug. Set from `name` at creation; renaming never changes it. It can only be changed from the dashboard, not via the API.
  - `settings` ProjectSettings, nullable, required — Per-project settings overrides. `null` means inherit from the organization.
    - `keepMonitoring` boolean — When `true`, the evaluation linked to an signal keeps running after the signal is resolved. When `false`, resolving the signal stops the evaluation. Defaults to `true` when omitted.
    - `redaction` RedactionSetting — Server-side PII redaction applied before spans are stored. An organization-wide policy can override this one; when the organization locks its policy, project values are ignored entirely rather than merged.
      - `mode` 'off' | 'enforce' — `enforce` scans span content as it is ingested and replaces matches with a labelled placeholder such as `[REDACTED_EMAIL]`; `off` scans nothing. Defaults to `off` when omitted. Applies only to spans ingested after the change, takes effect within a minute, and redacted content cannot be recovered.
      - `entities` string[] — Which categories to look for. Defaults to email, phone, credit_card, iban, us_ssn, secret when omitted; `ip_address` is off by default because a dotted quad and a four-part version string are the same string. Detection is pattern based: it reliably catches structured identifiers, and does not catch names, addresses, or free-form personal detail.
      - `scopes` object — Which span fields to scan beyond message and tool content.
        - `metadata` boolean — Also scan the metadata map and tags. Defaults to `false` when omitted, because metadata is usually operational and redacting it removes values you filter and group by.
      - `identities` 'keep' | 'pseudonymize' — How to handle `userId` and `userEmail`. `keep` stores them unchanged; `pseudonymize` replaces each with a stable per-organization pseudonym so filtering and grouping by user keep working. Defaults to `keep` when omitted. Deployments with no pseudonym secret configured remove the identifier entirely instead.
    - `notifications` NotificationsSetting — Per-group project-level notification toggles (`incidents`, `destinations`).
      - `incidents` IncidentNotificationsSetting — Per-alert-kind opt-out for incident notifications.
        - `signal.escalating` boolean — Send a notification when an active signal is escalating in volume or severity. Defaults to `true` when omitted.
        - `monitor.match` boolean — Send a notification when a match monitor opens an incident. Defaults to `true` when omitted.
        - `monitor.threshold` boolean — Send a notification when a threshold monitor opens an incident. Defaults to `true` when omitted.
        - `monitor.escalating` boolean — Send a notification when an escalating monitor opens an incident. Defaults to `true` when omitted.
      - `destinations` DestinationNotificationsSetting — Project-level opt-out for data-destination notifications.
        - `quarantine` boolean — Notify org members when a data destination is quarantined after repeated sync failures. Defaults to `true` when omitted.
    - `escalation` EscalationSetting — Tuning parameters for the escalation detector. Affects detector behaviour regardless of whether notifications are enabled.
      - `sensitivity` integer — Sensitivity of the escalation detector, 1 (most sensitive, more incidents) to 6 (least sensitive, fewer incidents). Defaults to a balanced value when omitted.
  - `firstTraceAt` string, nullable, required — ISO-8601 timestamp of the first ingested trace. `null` until the first trace lands.
  - `deletedAt` string, nullable, required — ISO-8601 timestamp at which the project was deleted. `null` while the project is active.
  - `lastEditedAt` string, required — ISO-8601 timestamp of the most recent name/settings edit.
  - `createdAt` string, required — ISO-8601 timestamp of creation.
  - `updatedAt` string, required — ISO-8601 timestamp of the last metadata change.

## Other responses

- `400` — Validation error
- `401` — Unauthorized
- `404` — Not found

---

[API](https://skmtc.net/latitude-dev/apis/latitude.md) · [All operations](https://skmtc.net/latitude-dev/apis/latitude/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/latitude-dev/latitude/versions/6a8789c59a5c/schema)
