Set Participant Data action failing with 400 Bad Request in IVR flow

We’re hitting a 400 Bad Request when the flow hits the Set Participant Data action. The error message in the debug log is pretty vague, just saying ‘Invalid input for participant data update,’ but I’m pretty sure the JSON structure is legit. I’ve been using the CXone REST API directly in a Studio snippet to prep the payload, then passing that string into the Architect action. The goal is to push custom variables like customerTier and lastCallDate into the participant context so the downstream IVR nodes can branch on them. Here’s the JSON payload I’m constructing: { "name": "custom.tier", "value": "gold", "type": "string" }. I’m using the GetRESTProxy snippet to build this, and the debug output shows the JSON is valid. But when Architect tries to apply it, it bombs. I’ve checked the scope on the integration user, and it has conversation:read and conversation:write, which should be enough. The weird part is that if I hardcode a simple string like "test" directly in the action config, it works fine. But as soon as I try to pass the dynamic JSON string from the snippet, it fails. It feels like there’s some escaping issue or maybe the action expects a different format than what the REST API docs suggest. I’ve tried wrapping the value in quotes, double quotes, even base64 encoding it just to see what happens. Nothing sticks. The flow just errors out and drops the call. This is blocking our deployment for the new IVR upgrade. We need these variables to drive the routing logic, but right now we’re stuck. Any idea what format the Set Participant Data action actually wants? I’m looking at the API docs and they show a participantData object with name, value, and type fields, which is exactly what I’m sending. But the action in Architect seems to reject it every time. I’m running this in the US/Eastern region, and the flow is published and active. I’ve cleared the cache, rebuilt the flow, even tried a fresh integration user. Same result. The error is consistent. I’m missing something obvious here. The JSON looks right, the scopes are right, but the action just won’t accept it. It’s frustrating because the REST API call works fine when I test it in Postman. So why does Architect choke on the same payload? I’m out of ideas. Can anyone point me to a working example or a specific format requirement for this action? I’ve spent three hours on this and it’s driving me nuts. The docs are sparse, and the error logs aren’t helpful. Just need to get past this wall. The rest of the flow is solid, but this one action is blocking everything. I’m sure it’s a syntax thing, but I can’t find it. Any help would be great. I’m stuck.