Studio REST Proxy updating participant attributes returns 200 but changes don't stick

Hitting a weird issue with the Conversations API during active voice calls. I’m trying to push a custom attribute from an external CRM back into the Genesys interaction using a Studio SNIPPET action with the REST Proxy. The goal is simple: update a crm_case_id on the participant object while the call is live.

I’ve got the snippet set up to hit the standard endpoint. Here’s the request body I’m sending:

{
 "attributes": {
 "crm_case_id": "CASE-99281"
 }
}

The HTTP call looks correct. I’m passing the interaction ID and participant ID in the path variables. The response comes back as a clean 200 OK with no error details in the body. If I immediately query the participant details using the same interaction and participant IDs in a subsequent GET request within the same call flow, the attribute shows up perfectly fine.

The problem is persistence. As soon as the call drops or I check the interaction later in the analytics dashboard, the attribute is gone. It’s like the write is scoped to the active session object but never commits to the interaction record itself. I’ve tried adding a small delay before the next action, but that didn’t help. Also verified that the attribute definition exists in the platform configuration and isn’t marked as read-only.

Is there a specific flag I’m missing in the PATCH payload? Or is this a known behavior where participant attributes set during a live conversation require a different API endpoint to persist? I’ve checked the docs for /api/v2/conversations/{conversationId}/participants/{participantId} but it doesn’t mention any caveats about transient data. Feels like I’m doing something wrong with the auth token scope, but the same token works for other updates.