> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ub.bitbros.in/llms.txt
> Use this file to discover all available pages before exploring further.

# Delete Document

> Soft delete a document from a collection by its ID. Moves it to the trash.

## DELETE `/api/data/:collectionName/:id`

Moves the document with the given ID to the trash by setting `isDeleted: true` and recording the `deletedAt` timestamp. The document remains recoverable for a **30-day grace period**, after which it is permanently deleted by a background cleanup worker. See the [Database Guide](/guides/database#soft-delete-trash) for more details.

### Required header

`x-api-key`: `sk_live_…` by default. `pk_live_…` is accepted only when the collection has **RLS enabled** and the request includes `Authorization: Bearer <accessToken>`.

### Path parameters

<ParamField path="collectionName" type="string" required>
  The name of the collection containing the document.
</ParamField>

<ParamField path="id" type="string" required>
  The MongoDB ObjectId string of the document to delete.
</ParamField>

### RLS ownership check

When using `pk_live` with RLS enabled, urBackend compares the existing document's owner field against the authenticated user's ID. You can only delete your own documents; attempting to delete another user's document returns `403`.

### Response fields

<ResponseField name="success" type="boolean">
  `true` when the document was moved to trash.
</ResponseField>

<ResponseField name="data" type="object">
  Object containing the `id` of the deleted document.
</ResponseField>

<ResponseField name="message" type="string">
  Human-readable confirmation message.
</ResponseField>

### Code examples

<CodeGroup>
  ```javascript fetch (sk_live) theme={null}
  const docId = '64fd1234abcd5678ef901234';

  const res = await fetch(
    `https://api.ub.bitbros.in/api/data/posts/${docId}`,
    {
      method: 'DELETE',
      headers: {
        'x-api-key': 'sk_live_YOUR_SECRET_KEY'
      }
    }
  );

  const { success, data, message } = await res.json();
  ```

  ```javascript fetch (pk_live + RLS) theme={null}
  const docId = '64fd1234abcd5678ef901234';

  const res = await fetch(
    `https://api.ub.bitbros.in/api/data/posts/${docId}`,
    {
      method: 'DELETE',
      headers: {
        'x-api-key': 'pk_live_YOUR_KEY',
        'Authorization': `Bearer ${accessToken}`
      }
    }
  );
  ```

  ```bash curl theme={null}
  curl -X DELETE "https://api.ub.bitbros.in/api/data/posts/64fd1234abcd5678ef901234" \
    -H "x-api-key: sk_live_YOUR_SECRET_KEY"
  ```
</CodeGroup>

### Success response

```json theme={null}
{
  "success": true,
  "data": {
    "id": "64fd1234abcd5678ef901234"
  },
  "message": "Document moved to trash"
}
```

### Errors

| Status             | Cause                                                                         |
| :----------------- | :---------------------------------------------------------------------------- |
| `401 Unauthorized` | Missing/invalid API key, or missing Bearer token on an RLS-enabled collection |
| `403 Forbidden`    | `pk_live` without RLS, or the authenticated user doesn't own the document     |
| `404 Not Found`    | No document with that ID exists in the collection                             |
