Problem
The queue dashboard keeps showing phantom legs on our supervisor conference bridges. We’ve got a background script to drop idle participants after ten minutes of silence, but the API call isn’t actually severing the connection. The admin UI still lists the user as active even after the request returns a 204.
Here’s the payload we’re sending:
{
"id": "9f8e7d6c-5b4a-3210-abcd-ef1234567890",
"dispositionCode": "no-answer",
"dropReason": "timeout"
}
Hitting PATCH /api/v2/conversations/calls/{conversationId}/participants/{participantId}. Response comes back clean. No 4xx or 5xx codes. Just a 204 No Content. The participant stays on the line though. Tried switching the disposition code to agent-initiated and system-initiated. Doesn’t matter. The leg persists.
Internal logging shows the request goes out, gets accepted, and the queue analytics export picks up the duration continuing to tick. Using the Python SDK for the initial handshake, then falling back to raw requests for the participant drop. Token refresh logic works fine. Authentication isn’t the blocker here.
import requests
import json
url = f"https://api.mypurecloud.com/api/v2/conversations/calls/{conv_id}/participants/{part_id}"
headers = {
"Authorization": f"Bearer {access_token}",
"Content-Type": "application/json"
}
payload = {
"dispositionCode": "no-answer",
"dropReason": "timeout"
}
response = requests.patch(url, headers=headers, json=payload)
print(response.status_code, response.text)
Script runs without throwing exceptions. 204 prints out every time. Participant status in the supervisor view flips to idle but the audio stream doesn’t cut. Checked the routing settings. Nothing weird there. Just standard queue assignments.
Is there a specific header missing for participant termination. Or maybe the endpoint expects a different structure for conference bridges versus standard calls. Documentation mentions dispositionCode but doesn’t clarify if it triggers an immediate drop or just updates the record.
Been staring at the trace logs for two hours. Audio still flowing. Weird. Participant ID matches the conference leg exactly.