Updating participant attributes on live voice call returns 400

Trying to push a flag from our CRM into Genesys Cloud during an active voice call. Using the Python SDK to hit POST /api/v2/conversations/voice/{conversationId}/participants/{participantId}. The auth works fine, I get the IDs from the webhook payload. But the update fails immediately.

Here’s the request body I’m sending:

{
 "attributes": {
 "priority": "high"
 }
}

Response is a 400 Bad Request with this error:

{
 "code": "invalid_request_body",
 "message": "Invalid participant update request."
}

The conversation is definitely live. I’ve tried removing the attributes key and just sending an empty object, but it still errors. Is there a specific format required for the attributes object on voice conversations?

The issue is likely the missing routingAddress or wrapUpCode. Voice participants require specific fields during updates. Try this payload:

{
 "routingAddress": "user:12345",
 "attributes": { "priority": "high" }
}

Also ensure your OAuth scope includes conversation:participant:write.