---
schema_version: "1"
id: e1080d0bca3a3d49da192e386defcb296d0278d625c64bd8be1124f7e83cde7b
title: Troubleshoot Errors
collection: developer
version: current
locale: en-us
portal_url: https://docs.salesforce.com/developer/current/en-us/service-cloud/conversation-data-api/guides/troubleshoot-errors.md
canonical_url: https://developer.salesforce.com/docs/service/conversation-data-api/guide/troubleshoot-errors.html
source_site: developer.salesforce.com
content_type: documentation
content_hash: afa853436e97fbb434f6c29acf2c45507e929f3fe281f70bfce58747e5a5ac6d
products:
  - Conversation Data API
  - Service Cloud Developer Content
---
# Troubleshoot Errors

Troubleshoot common errors when using the Conversation Data APIs.

## Delete API Errors

### Messaging End User (MEU) Has Open Messaging Sessions (HTTP 412 Error)

If one or more MEUs have open Messaging sessions, the delete request fails with a 412 Precondition Failed error.

**Default behavior:** The error message identifies only the first blocking MEU, and `errorDetails` is empty.

**With `errorDetailsVerbose=true` (Spring '26 and later):** The response includes a detailed `errorDetails` array listing every blocking MEU and each of their open session IDs.

```json
{
  "errorCode": "PRECONDITION_FAILED",
  "messageCode": "CORE_PARTICIPANT_ENTITY_IN_OPEN_SESSIONS",
  "message": "One or more participant entities are still in active MessagingSessions. To proceed, either close these sessions manually or use the ‘forceCloseSessions=true’ query parameter to close them automatically.",
  "targets": [{ "type": "QUERY_PARAMETER", "reference": "participantEntityId" }],
  "parameters": [],
  "errorDetails": [
    {
      "type": "PARTICIPANT_ENTITY_IN_OPEN_SESSIONS",
      "participantEntityId": "0PALT000004IQji",
      "coreParticipantEntityInOpenSessions": [{ "sessionId": "0MwLT000005TBQd" }]
    },
    {
      "type": "PARTICIPANT_ENTITY_IN_OPEN_SESSIONS",
      "participantEntityId": "0PALT000004IQjd",
      "coreParticipantEntityInOpenSessions": [{ "sessionId": "0MwLT000005TBQY" }]
    }
  ]
}
```

To resolve this error, either close all blocking sessions manually, or add `forceCloseSessions=true` and `errorDetailsVerbose=true` to your request to have them closed automatically (Spring '26 and later).

### Restricted Relationships With Child Objects

If a messaging end user or their associated `MessagingSession` or `VoiceCall` records have child objects with restricted relationships, those child objects block deletion. The most common causes are `EngagementAttendee` and `EngagementTopic` records.

**Default behavior (Winter ’26 and earlier):** The API accepts and queues the request, but deletion fails during processing. The API response doesn’t show the reason for failure. To confirm that the request failed, check the `ConversationApiLog` object.

**With `errorDetailsVerbose=true` (Spring '26 and later):** Before queuing the delete job, the API runs a pre-check. If restricted child objects exist, the request fails immediately with a 412 error that identifies the specific object types blocking deletion.

```json
{
  "errorCode": "PRECONDITION_FAILED",
  "messageCode": "CORE_PARTICIPANT_RESTRICTED_CHILD_OBJECTS",
  "message": "Requested participant entities have restricted child objects both or any of (EngagementAttendee, EngagementTopic) that blocked deletion.",
  "targets": [{ "type": "QUERY_PARAMETER", "reference": "participantEntityId" }],
  "parameters": [],
  "errorDetails": [
    {
      "type": "PARTICIPANT_RESTRICTED_CHILD_OBJECTS",
      "participantEntityId": "0PALT000004IQjs",
      "coreParticipantRestrictedChildObjects": [{ "entityName": "EngagementTopic" }]
    }
  ]
}
```

To resolve this error, delete the identified child records manually, then retry the delete request. If no `EngagementAttendee` or `EngagementTopic` records exist, review other child objects related to the messaging end user or `MessagingSession` objects. Custom or managed package objects with restricted relationships can also prevent deletion depending on your org’s configuration.

**Without `errorDetailsVerbose=true` (post-processing failure):** If a deletion fails after the job is queued, check the `StatusHistory` field on the `ConversationApiLog` record. This can happen on orgs earlier than Spring ‘26, or if `errorDetailsVerbose` isn’t set. `StatusHistory` contains a JSON object showing which restricted child object types caused the failure. For example, `{"EngagementTopic":true,"EngagementAttendee":false}` means `EngagementTopic` records blocked deletion while `EngagementAttendee` records didn’t.
