The flow hangs and the script logs a timeout error. The outbound call to our IVR takes about 4.8 seconds to answer. The Data Action in Architect is set to a timeout of 3 seconds. I tried increasing it in the UI, but the max allowed value seems to be 3000ms.
Error: Timeout waiting for response from external service.
Status: 408 Request Timeout
I checked the logs. The HTTP 200 comes back at T+4.8s. The Data Action kills it at T+3.0s. There’s no field in the Data Action JSON to extend this specific step timeout beyond the global default. Is there a header I can pass in the GetRESTProxy to override this? Or do I need to move this logic to a using ASSIGN with a REST call directly? The REST Proxy in seems to respect the timeout parameter in the config, but the Architect Data Action feels locked down.
Here’s the Data Action config :
{
"type": "http",
"method": "POST",
"url": "https://my-ivr-endpoint.com/connect",
"timeout": 3000
}
Changing it to 5000 throws a validation error in the Architect UI. Stuck.
The 3s limit is a hard ceiling for the standard HTTP request step in the Architect canvas. The UI won’t let you push past it because the underlying node is designed for quick lookups, not heavy outbound calls. If your endpoint takes 4.8s, it’s going to get killed every time.
You need to move the call out of the canvas and into a script. scripts have a much higher execution timeout (usually 120s depending on the environment). You can use a REST Proxy action or a simple http.request inside the script to make the call, then return the response to the flow.
Here’s a quick to handle the outbound call and return the JSON response. Drop this into a Run Script action.
function main(params) {
const url = params.targetUrl; // Pass this from the flow
const payload = JSON.stringify(params.body);
// Use the built-in http module available in const response = http.request({
method: 'POST',
url: url,
headers: {
'Content-Type': 'application/json'
},
body: payload
});
// Check if the request succeeded
if (response.statusCode >= 200 && response.statusCode < 300) {
return {
success: true,
data: JSON.parse(response.body),
statusCode: response.statusCode
};
} else {
return {
success: false,
error: response.body,
statusCode: response.statusCode
};
}
}
Pass the URL and any body data from the flow into the script parameters. The script handles the wait time without the 3s restriction. You’ll get the full response back in the output parameters to map into your flow variables.