Docs

Trash

Deleting an entry moves it to Trash. It stays recoverable for as long as you want — nothing is permanently removed until you say so.

How it works

Every entry has a hidden deleted_at timestamp. A normal delete sets that timestamp; the entry disappears from all lists and API responses but the row stays in the database. Permanent deletion removes the row and all its version snapshots.

Accessing Trash

Open any collection in the admin. A Trash tab appears at the right end of the status filter bar. It shows only deleted entries, sorted by deletion date (newest first).

Per-entry actions

ActionResult
RestoreMoves the entry back to drafts. Status is always set to draft after restore regardless of what it was before.
Delete foreverHard-deletes the entry and all its version history. Not reversible.

Bulk actions

Select multiple entries in the Trash view using the checkboxes. The bulk bar shows two options:

  • Restore selected — restores all checked entries to draft
  • Delete forever — permanently removes all checked entries (confirmation required)

API

The soft-delete behaviour is fully exposed via the REST API:

EndpointAction
DELETE /api/collections/:id/entries/:slugSoft-delete (move to trash)
POST /api/collections/:id/entries/:slug/restoreRestore to draft
DELETE /api/collections/:id/entries/:slug/permanentHard-delete
GET /api/collections/:id/entries?status=trashList trashed entries

The bulk endpoint also supports restore and permanent actions:

POST /api/collections/posts/entries/bulk
{ "action": "restore",    "slugs": ["old-post", "another"] }
{ "action": "permanent",  "slugs": ["old-post"] }