POST /conversations/calls/{conversationId}/participants/{participantId} returns 409 Conflict

Trying to kick a specific leg out of a three-way conference call via the Conversations API and it’s throwing a 409 Conflict every time. The error message is vague, just saying “Invalid state for this operation”.

We’ve got a hybrid setup where the Genesys Cloud platform handles the main conference, but we need a script to drop one participant (usually the supervisor) without terminating the whole call for the agent and customer.

Here’s the flow I’m testing:

  1. Create conference via POST /api/v2/conversations/calls
  2. Add agent and customer. Both connect fine.
  3. Add supervisor as third leg. Call state is ACTIVE.
  4. Attempt to remove supervisor using DELETE /api/v2/conversations/calls/{conversationId}/participants/{supervisorParticipantId}

Wait, actually I tried the PUT endpoint first to update status to DISCONNECTED but that didn’t work either. The docs say DELETE is the way to go for removing a participant.

The request looks like this:

DELETE /api/v2/conversations/calls/9d1b2c3e-4f5a-6b7c-8d9e-0f1a2b3c4d5e/participants/12345678-90ab-cdef-1234-567890abcdef
Authorization: Bearer <valid_token>
Accept: application/json

Response:

{
 "message": "Invalid state for this operation",
 "code": 409,
 "status": "Conflict"
}

Things I’ve checked:

  • Token has conversation:write scope.
  • Conversation ID is definitely correct.
  • Participant ID matches the supervisor’s leg in the conversation object.
  • The call is definitely active. I can hear all three parties.
  • Tried waiting 30 seconds after adding the supervisor before kicking them. Same error.

Is there a specific state the participant needs to be in before you can DELETE them? Or is this API endpoint just broken for conference calls? Feels like I’m missing a step to ‘isolate’ the leg first.

Anybody got a working curl command or SDK snippet for this? I’m stuck on step 4.