---
title: "Delete Policy"
method: DELETE
path: "/policies/{policy_id}"
---

# Delete Policy

`DELETE /policies/{policy_id}`

## Request

- Base URL: `https://api.grayswan.ai`
- URL: `https://api.grayswan.ai/policies/{policy_id}`
- Auth: none declared
- TypeScript: <https://skmtc.dev/grayswan/apis/gray-swan-ai-api/docs/policies/:policy_id/delete.ts> (a function with typed inputs; its response is checked against the schema)

Delete a policy.

Preset policies cannot be deleted.
Requires admin role.

Docs: [Guide](https://docs.grayswan.ai/policy-management/policies) |
[API Reference](https://docs.grayswan.ai/api-reference/policies/delete-policy)

Raises:
    ResourceNotFoundError: If the policy does not exist.
    PresetPolicyModificationError: If attempting to delete a preset policy.
    AdminRequiredError: If user is not an admin.

## Path parameters

- `policy_id` string, required

## Response `204`

Successful Response

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `422`: Unprocessable Content
- `500`: Internal Server Error

## Changes

- **2026-10-22** `ed4b27064dfa`: 1 breaking, 10 info
  - the `detail` response's property type changed from `array` to `string` for status `422`
  - added the non-success response with the status `400`
  - added the non-success response with the status `401`
  - added the non-success response with the status `403`
  - …7 more

[Operation history](https://skmtc.dev/grayswan/apis/gray-swan-ai-api/changes/policies/:policy_id/delete.md)

---

[API](https://skmtc.dev/grayswan/apis/gray-swan-ai-api.md) - [All operations](https://skmtc.dev/grayswan/apis/gray-swan-ai-api/llms.txt) - [OpenAPI document](https://skmtc.dev/grayswan/apis/gray-swan-ai-api/revisions/ed4b27064dfa?raw)
