Conversations API: Disconnecting specific participant from conference returns 409

Trying to kick a specific user from a running conference using the Conversations API. I have the conversationId and the participantId from the initial join event.

The endpoint is POST /api/v2/conversations/conversations/{conversationId}/participants/{participantId}/disconnect.

It keeps returning a 409 Conflict. The body looks like this:

{
 "errorCode": "conversation.participant.already_disconnected",
 "message": "Participant is already disconnected or does not exist in the conversation."
}

The participant is definitely still on the call. I can hear them. I verified the participantId matches the one returned in the participant-joined webhook payload.

I tried adding X-Genesys-Request-Id headers but that didn’t change anything. Is there a specific state check required before calling this endpoint? Or does the API require the disconnectReason parameter to be explicitly set in the body?

{
 "disconnectReason": "agent_request"
}

Sent that in the body with no luck. Still 409. The documentation is sparse on error handling for this specific action.