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:
- Create conference via
POST /api/v2/conversations/calls - Add agent and customer. Both connect fine.
- Add supervisor as third leg. Call state is
ACTIVE. - 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:writescope. - 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.