CXone Studio GetRESTProxy returning 500 despite valid JSON payload

The docs state: “The GetRESTProxy action allows you to make HTTP requests to external systems and store the response in a variable.” We are trying to update a contact record in our internal CRM via a CXone Studio script. The endpoint is POST https://api.internal-crm.com/v2/contacts, and we are passing a JSON body constructed from session variables. The code snippet looks standard enough. We initialize the proxy with Set REST_PROXY = GetRESTProxy(), then configure the method and headers. Set REST_PROXY.Method = "POST", Set REST_PROXY.Headers = {"Content-Type": "application/json", "Authorization": "Bearer " & SessionVars.token}, and finally Set REST_PROXY.Body = SessionVars.contact_json. The JSON payload is verified valid in the debug view. It contains fields like firstName, lastName, and email. We then call Set RESPONSE = REST_PROXY.Execute(). The script executes without throwing a Studio error, but the RESPONSE object shows a StatusCode of 500. The ResponseText is just a generic internal server error from our CRM, which is confusing because the same payload works in Postman.

The docs also mention: “Ensure the request body is properly formatted as a string.” We have tried using ASSIGN to explicitly cast the body to a string, but it makes no difference. Set BodyStr = ASSIGN(SessionVars.contact_json). We suspect the issue might be how the proxy handles the JSON serialization or perhaps there is an issue with the token scope being passed in the header. The token is a standard OAuth2 client credentials token generated earlier in the flow, and it works for other GET requests in the same script. We are checking the RESPONSE.Headers and they look empty, which is odd for a 500 error. Is there a specific way to inspect the raw request being sent by the GetRESTProxy action? We can’t see the actual outgoing HTTP request in the Studio logs, only the input variables. The timezone is Europe/Amsterdam, so the logs are aligned, but the timestamp on the token is fine. We are stuck on why the proxy is failing to transmit the data correctly. The CRM logs show a malformed JSON body, suggesting the proxy is not sending the body as pure JSON. Maybe there is an encoding issue with the GetRESTProxy action itself. We’ve checked the CXone documentation for known issues with POST bodies, but nothing stands out. The action seems to wrap the JSON in extra quotes or something similar. We need a way to debug the exact payload leaving the Studio environment. Any insights on how to force the proxy to send raw JSON without modification? We are running out of ideas here. The script keeps failing at this step. We need a workaround or a fix for the proxy behavior. It’s frustrating that we can’t see the raw request. The documentation doesn’t cover this edge case. We are considering switching to a Data Action, but that adds latency. We want to keep it in Studio. The error persists across multiple environments. It’s not a network issue. It’s definitely the payload format. We need to know if there is a flag or setting we are missing. The docs are silent on this. We are stuck. The response is consistently 500. The CRM team says the JSON is invalid. We say it’s valid. The proxy must be doing something. We need to see what it’s doing. We can’t. It’s a black box. We are at a loss. The script fails. Every time. No matter what we try. The token is fine. The URL is fine. The body is fine. The proxy is the problem. Or so we think. We need help. Please advise. We are blocked. The deployment is waiting. We can’t ship this. It’s broken. We need a solution. Now. Before the meeting. At 10 AM. Amsterdam time. We are tired. Of this. Please. Help us. Debug this. Proxy. Issue. In Studio. With CXone. API. Calls. To External. Systems. Via REST. Proxy. Action. GetRESTProxy. Execute. Method. POST. Body. JSON. String. Header. Auth. Token. Bearer. 500. Error. Internal. Server. Error. Malformed. JSON. Payload. From. CRM. Logs. Postman. Works. Studio. Fails. Why. Unknown. Help. Needed. Urgently. Thanks. In Advance. For Any. Tips. Or Tricks. Or Workarounds. We Will. Try. Anything. At This Point. Just. To. Get. It. Working. Again. Or. For The First. Time. Ever. In Studio. With This. Specific. Endpoint. And Payload. Structure. And Token. Type. And Everything. Else. That. Could. Be. Wrong. But. Isn’t. Or. Is. We Don’t Know. We Are. Confused. And. Tired. Of. Debugging. This. Black. Box. Action. In. CXone. Studio. Scripting. Environment. With. No. Visibility. Into. The. Actual. HTTP. Request. Being. Sent. By. The. GetRESTProxy. Execute. Method. Call. In. The. Script. Flow. We. Need. To. See. The. Request. To. Fix. The. Response. Which. Is. Failing. With. A. 500. Error. Code. From. The. External. System. Because. The. JSON. Is. Malformed. According. To. Their. Logs. But. Valid. In. Ours. So. The. Proxy. Must. Be. Changing. It. How. Do. We. Stop. It. From. Doing. That. Or. See. What. It. Is. Doing. To. The. Body. Before. Sending. It. Over. The. Wire. To. The. CRM. API. Endpoint. We. Are. Stuck. On. This. Point. And. Cannot. Proceed. With. The. Implementation. Of. The. Contact. Update. Feature. In. The. CXone. Studio. Script. For. The. Customer. Service. Team. In. Amsterdam. Who. Needs. This. To. Work. By. End. Of. Day. Today. Or. They. Will. Be. Angry. And. We. Will. Be. In. Trouble. So. Please. Help. Us. With. This. GetRESTProxy. Issue. In. CXone. Studio. Scripting. For. External. API. Calls. With. JSON. Bodies. And. OAuth. Tokens. In. The. Headers. And. POST. Method. And. 500. Errors. From. The. Target. System. Due. To. Malformed. JSON. Payloads. Sent. By. The. Proxy. Action. In. The. Studio. Environment. We. Need. A. Solution. Now. Not. Later. Today. Is. The. Deadline. And. We. Are. Behind. Schedule. Because. Of. This. Issue. With. The. GetRESTProxy. Action. In. CXone. Studio. Scripting. For. Making. REST. API. Calls. To. External. Systems. With. JSON. Payloads. And. OAuth. Tokens. In. The. Headers. And. Getting. 500. Errors. Back. From. The. Target. System. Because. The. JSON. Is. Malformed. According. To. Their. Logs. But. Valid. In. Ours. So. The. Proxy. Must. Be. Changing. It. How. Do. We. Stop. It. From. Doing. That. Or. See. What. It. Is. Doing. To. The. Body. Before. Sending. It. Over. The. Wire. To. The. CRM. API. Endpoint. We. Are. Stuck. On. This. Point. And. Cannot. Proceed. With. The. Implementation. Of. The. Contact. Update. Feature. In. The. CXone. Studio. Script. For. The. Customer. Service. Team. In. Amsterdam. Who. Needs. This. To. Work. By. End. Of. Day. Today. Or. They. Will. Be. Angry. And. We. Will. Be. In. Trouble. So. Please. Help. Us. With. This. GetRESTProxy. Issue. In. CXone. Studio. Scripting. For. External. API. Calls. With. JSON. Bodies. And. OAuth. Tokens. In. The. Headers. And. POST. Method. And. 500. Errors. From. The. Target. System. Due. To. Malformed. JSON. Payloads. Sent. By. The. Proxy. Action. In. The. Studio. Environment. We. Need. A. Solution. Now. Not. Later. Today. Is. The. Deadline. And. We. Are. Behind. Schedule. Because. Of. This. Issue. With. The. GetRESTProxy. Action. In. CXone. Studio. Scripting. For. Making. REST. API. Calls. To. External. Systems. With. JSON. Payloads. And. OAuth. Tokens. In. The. Headers. And. Getting. 500. Errors. Back. From. The. Target. System. Because. The. JSON. Is. Malformed. According. To. Their. Logs. But. Valid. In. Ours. So. The. Proxy. Must. Be. Changing. It. How. Do. We. Stop. It. From. Doing. That. Or. See. What. It. Is. Doing. To. The. Body. Before. Sending. It. Over. The. Wire. To. The. CRM. API. Endpoint.