Updating participant attributes mid-call via Genesys Cloud API

We are building an external system that needs to update participant attributes on a live voice call. The goal is to push custom data back into Genesys Cloud while the agent is on the line. I’m using the Python SDK and calling put_conversations_conversation_id_participants_participant_id with a JSON payload containing the new attributes.

The code looks like this:

payload = {
 "attributes": {
 "vip_status": "true",
 "priority_level": "high"
 }
}
api_instance.put_conversations_conversation_id_participants_participant_id(
 conversation_id, participant_id, body=payload
)

The call returns a 200 OK, which is good. But when I check the conversation object later, the attributes are gone. It seems like the update isn’t persisting or maybe I’m missing a specific flag to save them permanently. We’re in the EU region, so the endpoint is api.eu.genesys.cloud. I’ve double-checked the OAuth scopes and they include conversation:write.

Is there something specific about how participant attributes are handled during an active call? Or do I need to use a different method to ensure they stick around after the call ends? The docs are a bit vague on this part.