Disconnecting single participant from conference via API returns 409 Conflict

Trying to drop a specific participant from an active conference call using the CXone Conversations API. The standard flow works for ending the whole call, but selective removal is failing.

Endpoint: POST /api/v2/conversations/voice/{conversationId}/participants

Payload:

{
 "action": "disconnect",
 "participantId": "abc-123-def-456"
}

Response is a hard 409 Conflict with the message: Participant action is not allowed in current state.

Checked the conversation state via GET /api/v2/conversations/voice/{conversationId}. It shows state: connected and state_reason: agent-connected. The participant exists in the participants array with the correct ID.

What I’ve tried:

  • Verified the participant ID is not the initiator.
  • Checked that the participant isn’t already in a disconnected state.
  • Confirmed the API user has conversation:write permissions.
  • Tried using the action: drop instead of disconnect (got 400 Bad Request).

The docs are vague on what “current state” actually blocks this action. Is there a specific flag or transition I’m missing? Or is this API endpoint just broken for mid-call participant removal?