Trying to push custom attributes to a participant’s context while a voice conversation is live. The goal is to update a ‘priority’ flag from a custom Client App widget so the downstream Architect flow can react immediately without waiting for wrapup. I’m using the standard PATCH endpoint /api/v2/conversations/voice/{conversationId}. The payload looks structurally identical to what the SDK documentation suggests, but the server keeps rejecting it with a 400 Bad Request and a generic invalid_input error. It’s not a permissions issue since the same token creates the conversation successfully. The odd part is that updating the wrapupCode works fine, but touching the attributes object fails every single time. I’ve verified the JSON is valid using external parsers, and the attribute key doesn’t contain any reserved words or special characters.
Here is the exact payload structure I’m sending in the request body. The conversation ID is definitely correct and the participant ID matches the agent’s current session. I’ve tried omitting the externalContact section entirely, assuming it might be immutable mid-flow, but that just shifts the error to a different field. I’ve also tried using the Python SDK’s put_conversations_voice method with a Conversation object, which results in the same 400 response. The error message from the API is unhelpful: "message": "The request body is invalid." No specific field is flagged. Is there a strict schema requirement for updating attributes on an active participant that isn’t documented? Or is this endpoint simply read-only for participant data during the active call state? I’m stuck on whether this is a limitation of the API or something silly in my JSON structure. The attribute value is a simple boolean true.