---
title: "Delete an item, optionally releasing the claims on it"
method: DELETE
path: "/signups/{id}/items/{itemId}"
tags: ["Items"]
---

# Delete an item, optionally releasing the claims on it

`DELETE /signups/{id}/items/{itemId}`

## Request

- Base URL: `https://thesignup.app/api/v1`
- URL: `https://thesignup.app/api/v1/signups/{id}/items/{itemId}`
- Auth: HTTP bearer

Delete an item, immediately. The item must belong to the signup in the path (an item of another signup is `404 not_found`, and nothing is written). An item people have claimed is refused with `409 conflict` and nothing changes, unless `release_claims=true` (query): then the item and every claim on it are deleted, and the people who held an Open claim are emailed, and texted when they consented, that it is gone — with the optional JSON body's `message` prepended (participant-facing, not a private note). A claim on a past or cancelled date is Locked history: it is deleted with the item and its holder is not told. The response reports the blast radius: `claimants` (people), `claims` (units) and `notified`. A client or proxy that strips DELETE bodies sends the email and text without `message`. Deleting is by id, so a repeat DELETE is `404 not_found` and tells nobody again. The account behind the credential must have a verified email (the call can email participants), or it is `403 forbidden`.

## Path parameters

- `id` string, uuid, required
- `itemId` string, uuid, required

## Query parameters

- `release_claims` 'true' | 'false': `true` deletes an item people have claimed, deleting their claims with it and emailing (and texting, when they consented) the people who held an Open claim. Absent or `false` refuses a claimed item with `409 conflict` and writes nothing.

## Request body

- DeleteItemRequest
  - `message` string, nullable: Participant-facing: prepended to the email, and the text when they consented, each person who held an Open claim on the item is sent when `release_claims` is true. Not a private note. Ignored when nobody is told.

## Response `200`

The item is gone, and what that did to its claims

- DeleteItemResponse
  - `id` string, uuid, required: The item that was deleted.
  - `deleted` true, required: Always `true`: the item and its claims are gone.
  - `claims` integer, required: Units that had been claimed, summed across the claims that were deleted. 0 when the item had no claims.
  - `claimants` integer, required: People who held a claim — a party of three is one claimant. 0 when the item had no claims.
  - `notified` object, required: Who was told: distinct claimants, emails sent, texts sent. Only holders of an Open claim are told; claims that were Locked (past or cancelled date) are deleted without a message. All 0 when the item had no claims.
    - `recipients` integer, required
    - `emails` integer, required
    - `sms` integer, required

## Other responses

- `401`: Unauthenticated — credentials missing, malformed, invalid, or revoked
- `403`: Forbidden — credentials valid but lack the required scope
- `404`: Not found
- `409`: The item has claims and `release_claims` was not `true`; nothing was deleted
- `422`: Validation failed — request body / query / path is structurally wrong
- `429`: Rate limited or daily ceiling exceeded
- `500`: Internal server error

---

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