---
title: "Remove one catalyst, milestone, spec or technical item"
method: POST
path: "/v1/admin/remove"
tags: ["Admin"]
---

# Remove one catalyst, milestone, spec or technical item

`POST /v1/admin/remove`

## Request

- Base URL: `http://api.technooptimist.io`
- URL: `http://api.technooptimist.io/v1/admin/remove`
- Auth: HTTP bearer

Deletes a single item without replacing the program: catalyst/milestone/part/obstacle/limit by `title`, spec by `key`. `reason` is stored in the audit log. 404 when nothing matches.

## Headers

- `x-routine-name` string: Name of the routine making the write; recorded as `routine:<name>` in the audit log.

## Request body

- object
  - `company` string, required
  - `program` string
  - `kind` 'catalyst' | 'milestone' | 'spec' | 'part' | 'obstacle' | 'limit', required
  - `title` string
  - `key` string
  - `reason` string, required

## Response `200`

Removed

- object
  - `ok` true, required
  - `removed` number, required

## Other responses

- `401`: Missing or invalid credentials
- `403`: Credential lacks the required scope
- `404`: Not found
- `409`: Conflict
- `422`: Validation failed

---

[API](https://skmtc.dev/technooptimist/apis/the-techno-optimist-api.md) · [All operations](https://skmtc.dev/technooptimist/apis/the-techno-optimist-api/llms.txt) · [OpenAPI document](https://skmtc.dev/technooptimist/apis/the-techno-optimist-api/revisions/b7bcde6a0f30?raw)
