---
title: "Set a legal hold."
method: POST
path: "/api/holds"
tags: ["Legal Holds"]
---

# Set a legal hold.

`POST /api/holds`

Creates a named hold that blocks deletion and purge of the specified evidence until the hold is released. The reference must be unique for the calling user. Two scope types are supported: 'document_chain' protects a specific document's ledger chain; 'user' protects all governance evidence owned by the user. Admins may place a hold on another user's evidence via the owner parameter. Requires the `holds:write` scope.

## Query parameters

- `owner` string

## Headers

- `Authorization` string, required

## Request body

- LegalHoldRequest
  - `reason` string
  - `reference` string
  - `scopeType` string
  - `scopeValue` string

## Response `201`

The hold was set and is now active.

- LegalHoldResponse
  - `reason` string
  - `reference` string
  - `scopeType` string
  - `scopeValue` string
  - `setAt` string, date-time

## Other responses

- `400` — Required fields are missing or the scope type is invalid.
- `401` — The Authorization header is absent or the API key is not recognized.
- `404` — The owner does not exist, or the caller is not an admin.
- `409` — A hold with the given reference already exists for this user.
- `413` — Content Too Large
- `415` — Unsupported Media Type
- `500` — Internal Server Error
- `503` — Service Unavailable

---

[API](https://skmtc.net/philterd/apis/philter-api.md) · [All operations](https://skmtc.net/philterd/apis/philter-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/philterd/philter-api/versions/67443cd5a65b/schema)
