---
title: "Delete Preset"
method: DELETE
path: "/internal/marketing-presets/{preset_id}"
tags: ["internal"]
---

# Delete Preset

`DELETE /internal/marketing-presets/{preset_id}`

## Request

- Base URL: `https://api.kobaltlabs.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.kobaltlabs.com/internal/marketing-presets/{preset_id}`
- Auth: none declared

Soft-delete a single marketing preset (admin).

Soft, not hard, for the same reason as the customer path: the row is what a
piece of collateral's `preset_ids` resolves against, and a staff delete would
orphan those analyses just as thoroughly. `deleted_by` records the staff user.
Only presets that have never been used to analyze a file can be deleted; a
used one returns 409 — see backend/helpers/marketing_presets.py for why, and
for what that measurement does not cover. company_id is a match-guard on the
lookup (a stale id can't resolve to another company's preset); it is not an
access boundary, which is the admin gate above.

## Path parameters

- `preset_id` string, uuid, required

## Query parameters

- `company_id` string, uuid, required

## Response `204`

Successful Response

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/kobaltlabs/apis/fastapi.md) - [All operations](https://skmtc.dev/kobaltlabs/apis/fastapi/llms.txt) - [OpenAPI document](https://skmtc.dev/kobaltlabs/apis/fastapi/revisions/8587332d5e43?raw)
