Updating participant attributes via REST Proxy in Studio mid-call fails with 409

Trying to push a new attribute to an active voice participant from an external system. The idea is to flag the call for quality review without hanging up or transferring.

We have a Studio flow listening for the conversation.participant.update event. When the webhook hits, the script uses the GetRESTProxy action to call the CXone API directly.

Here is the snippet setup:

var proxy = GetRESTProxy();
var url = '/api/v2/conversations/voice/' + conversationId + '/participants/' + participantId;
var payload = {
 "attributes": {
 "qFlag": "true"
 }
};

proxy.POST(url, payload);

The POST returns a 409 Conflict. The response body says Resource conflict: The participant is currently in a state that does not allow this operation.

Checked the docs. Participant attributes are mutable during a call. But something blocks the update. Tried switching to PATCH on the same endpoint. Same error.

Also tried updating the state field to active explicitly in the payload. No change. The call is definitely active. No hold states. Just talking.

Is there a lock on participant resources while media is flowing? Or does the REST Proxy in Studio have different permissions than the direct API?

We need this to work in real-time. Can’t wait for the call to end. Any ideas on how to bypass this conflict? Or is there a different endpoint for dynamic attribute injection during live media sessions?

Using us-east-1 region. Studio version is current as of last month.

Thanks.