409 Conflict when removing participant from conference via Conversations API

Just noticed that our internal SvelteKit dashboard keeps failing when trying to kick a single agent out of a conference bridge. The Conversations API docs say i should hit the remove participant endpoint, but the server route keeps throwing a 409 Conflict.

here’s the fetch call i’m using in the $server route:
const res = await fetch(${baseUrl}/api/v2/conversations/voice/${convId}/participants/${partId}/actions/remove, {
method: ‘DELETE’,
headers: { ‘Authorization’: Bearer ${token} }
})

The response body just says {"errorCode":"conflict","message":"Participant cannot be removed at this time"}. It’s a standard voice conference. No active recording. The target agent is definitely idle on their end. Maybe the conference resource needs a different action path? Or do i need to pass a specific action payload instead of a bare DELETE?

already tried swapping to POST with {"action": "remove"} but that returns a 400 Bad Request. The widget’s timeout handler fires before i can even log the full headers.

The best way to fix this is… checking the payload. you’re using DELETE but sending a body. the API expects specific removal details.

{
 "reason": "agent_initiated",
 "force": true
}

also ensure the conversation is still active. stale ids trigger 409s.

If I remember correctly… you can’t just slap a JSON body on a DELETE request. The spec is strict about that.

try using the conferenceManagement actions instead of the participant removal endpoint. it’s cleaner for conference bridges anyway.

This is actually a known issue… the conferenceManagement approach is way cleaner than fighting with participant actions.

just swap to POST /api/v2/conversations/voice/{conversationId}/actions/conferenceManagement with the remove action in the payload. stops the 409s cold.