PATCH /conversations/voice/participants failing with 409 during active media

Running into a weird issue while building a custom agent desktop widget. The goal is to push real-time CRM data back into Genesys Cloud participant attributes while a voice call is active. We’re using the Embeddable Client App SDK to get the auth token and then firing a direct PATCH request to /api/v2/conversations/{conversationId}/participants.

The first PATCH works fine. Updates the attributes object with the new CRM ID. But if we try to update it again within 30 seconds, we get a 409 Conflict. The error payload says "reason": "CONFLICT" and "message": "Failed to update participant".

Here’s the JSON body we’re sending:

{
 "attributes": {
 "crmId": "99887766",
 "lastUpdated": "2023-10-27T14:30:00Z"
 }
}

I’ve checked the version field in the response of the first request and included it in the second PATCH header, but it still fails. Is there a rate limit specific to participant attribute updates on active voice legs? Or am I missing a lock mechanism? The docs mention versioning for safety, but this feels like it’s locking out legitimate updates.