---
title: "Delete a person"
method: DELETE
path: "/api/people/{person_id}"
tags: ["people"]
---

# Delete a person

`DELETE /api/people/{person_id}`

## Request

- Base URL: `https://api.gumnut.ai`
- URL: `https://api.gumnut.ai/api/people/{person_id}`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer

Deletes the person record; the faces that were attached to this person are not deleted — they become unassigned and will be re-clustered on the next clustering pass. Its bodies stay, with no person.

Use `update_face` with `person_id=null` to detach a specific face without deleting the whole person. Use `delete_face` to remove a face detection entirely.

If a concurrent change to the person's faces collides with the deletion, it returns 409 and nothing is deleted; retry the request unchanged.

## Path parameters

- `person_id` string, required: Person ID (with `person_` prefix) of the person to delete.

## Response `200`

Successful Response

- DeletionResponse: Empty acknowledgment returned when an operation succeeds.

## Other responses

- `401`: Missing, invalid, or expired credentials.
- `403`: The credentials are valid but not authorized for this operation — for example an API key whose action or library scope excludes it, or a credential type this operation does not accept.
- `404`: Not found
- `409`: A concurrent change to the person's faces collided with the deletion Clerk sign-in could not be associated with the existing account. Resolve the identity conflict before retrying sign-in; repeated requests with unchanged verification and identity state will not resolve it.
- `422`: Validation Error
- `429`: Rate limit exceeded, or too many of your requests are already in progress. Retry after the interval in the `Retry-After` header.
- `503`: Authentication provider temporarily unavailable. Retry sign-in later.

## Changes

- **2026-10-16** `7c2860d9eb88`: 1 info
  - added the non-success response with the status `503`
- **2026-08-08** `815e0302a988`: 1 breaking, 1 info
  - response property `detail` list-of-types was widened by adding types `string` to media type `application/json` of response `422`
  - the response property `detail` became required for the status `422`
- **2026-08-05** `c3e15c78f2da`: 5 info
  - added the media type `application/json` for the response with the status `404`
  - added the media type `application/json` for the response with the status `409`
  - added the non-success response with the status `401`
  - added the non-success response with the status `403`
  - …1 more
- **2026-07-31** `e42c3dc9f66f`: 1 info
  - added the non-success response with the status `409`
- **2026-05-18** `9af798cdc7db`: 1 breaking, 1 info
  - removed the success response with the status `204`
  - added the success response with the status `200`

[Operation history](https://skmtc.dev/gumnut-ai/apis/gumnut-api/changes/api/people/:person_id/delete.md)

---

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