Updating participant attributes mid-conversation via /api/v2/conversations

Hey folks,

I’m trying to update participant attributes on an active conversation using the Conversations API, but I’m hitting a wall. Specifically, I want to push a custom attribute (like a loyalty tier or internal case ID) to the participant object while the conversation is still live, so downstream systems can pick it up without waiting for the transcript.

I’m using the PUT endpoint: /api/v2/conversations/{conversationId}. I’ve been sending a PATCH-style JSON body with just the attributes I want to update, but it seems like the API is ignoring the changes or throwing a 400 Bad Request depending on how I structure the payload.

Here’s the payload I’m testing with:

{
 "attributes": {
 "participantAttributes": {
 "<participantId>": {
 "customTier": "Gold",
 "source": "WebChat"
 }
 }
 }
}

I’m getting a 400 with the message Invalid input. I know the conversation ID and participant ID are correct because I pulled them from the initial webhook event. I’ve also tried nesting it under participants array with the full participant object, but that feels heavy-handed and I’m not sure if it’s the right approach for a mid-flow update.

Is there a specific schema I need to follow for partial updates? Or is there a different endpoint I should be hitting? I’ve checked the Swagger docs, but the examples are pretty sparse on mid-conversation attribute manipulation.

Any pointers on the correct payload structure would be appreciated. I’ve got a deadline on this integration and I’m stuck on this auth/update step.