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

# Bulk delete conversations

> Delete up to 50 conversations in one request through the public Conversations API.

Use this endpoint to delete multiple conversations from the workspace tied to your API key in one request.

<Tip>
  Use [List conversations](/en/api-reference/list-conversations) to discover IDs before deleting. If you only need to delete one conversation, use [Delete conversation](/en/api-reference/delete-conversation).
</Tip>

## Headers

<ParamField header="Authorization" type="string" required>
  Bearer token containing your Fini workspace API key. Format: `Bearer fini_...` The key needs `write` scope.
</ParamField>

```http theme={null}
DELETE /v2/hc-interactions/public
Authorization: Bearer fini_xxxxxxxxxxxxxxxxx
Content-Type: application/json
```

## Body parameters

<ParamField body="ids" type="array" required>
  Array of unique conversation IDs to delete. Provide between `1` and `50` UUIDs in one request.
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl --request DELETE \
    --url 'https://api-prod.usefini.com/v2/hc-interactions/public' \
    --header 'Authorization: Bearer fini_your_api_key' \
    --header 'Content-Type: application/json' \
    --data '{
      "ids": [
        "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
        "4d3f4c48-0467-4d7e-bbfd-2f7d02d84b5b"
      ]
    }'
  ```

  ```python Python theme={null}
  import requests

  response = requests.delete(
      "https://api-prod.usefini.com/v2/hc-interactions/public",
      headers={
          "Authorization": "Bearer fini_your_api_key",
          "Content-Type": "application/json",
      },
      json={
          "ids": [
              "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
              "4d3f4c48-0467-4d7e-bbfd-2f7d02d84b5b",
          ]
      },
  )
  result = response.json()
  ```

  ```javascript Node.js theme={null}
  const response = await fetch(
    "https://api-prod.usefini.com/v2/hc-interactions/public",
    {
      method: "DELETE",
      headers: {
        Authorization: "Bearer fini_your_api_key",
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        ids: [
          "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8",
          "4d3f4c48-0467-4d7e-bbfd-2f7d02d84b5b",
        ],
      }),
    }
  );
  const result = await response.json();
  ```
</RequestExample>

<Note>
  Current implementation note: bulk delete is **not atomic**. Matching conversations are removed before the route verifies that every requested ID was accessible. If any ID is missing, already removed, or belongs to a different workspace, the route returns `406 Not Acceptable`, but the matching conversations remain removed.
</Note>

## Response

<ResponseField name="success" type="boolean">
  `true` when the route completed successfully.
</ResponseField>

<ResponseExample>
  ```json 200 OK theme={null}
  {
    "success": true
  }
  ```

  ```json 406 Not Acceptable theme={null}
  {
    "statusCode": 406,
    "message": "One or more interactions not accessible to the user",
    "error": "Not Acceptable"
  }
  ```

  ```json 401 Unauthorized theme={null}
  {
    "statusCode": 401,
    "message": "Invalid or revoked API key",
    "error": "Unauthorized"
  }
  ```

  ```json 403 Forbidden theme={null}
  {
    "statusCode": 403,
    "message": "API key does not have the required scope for this operation",
    "error": "Forbidden"
  }
  ```
</ResponseExample>

## Errors

<AccordionGroup>
  <Accordion title="400 Bad Request" icon="circle-exclamation">
    The body is malformed, `ids` is missing, there are duplicate IDs, one of the IDs is not a UUID, or you sent more than `50` IDs.
  </Accordion>

  <Accordion title="401 Unauthorized" icon="lock">
    The API key is missing, malformed, revoked, or invalid. Confirm you are sending `Authorization: Bearer fini_...` with the full key.
  </Accordion>

  <Accordion title="403 Forbidden" icon="shield-halved">
    The API key does not include the `write` scope required for these routes.
  </Accordion>

  <Accordion title="406 Not Acceptable" icon="circle-question">
    One or more requested IDs were not accessible to the workspace tied to the API key. The current response message still uses the backend term `interactions`.
  </Accordion>

  <Accordion title="500 Internal Server Error" icon="triangle-exclamation">
    Fini failed while updating the conversation rows in storage.
  </Accordion>
</AccordionGroup>
