Architect Data Action timeout hardcoded to 3s — is there a way to override?

We’ve got a Data Action in our outbound flow that hits our internal CRM via a REST API. The endpoint is reliable, but under load it occasionally takes 4 to 5 seconds to respond. Architect is killing the request at exactly 3 seconds with a generic timeout error.

The docs state: “The timeout value for a Data Action is fixed at 3000 milliseconds.” That sounds final. But we’re not talking about a database lookup. This is an external HTTP POST.

Here’s the payload we’re sending:

{
 "method": "POST",
 "url": "https://api.internal-crm.example.com/v1/sync",
 "headers": {
 "Authorization": "Bearer {{oauth_token}}",
 "Content-Type": "application/json"
 },
 "body": {
 "contactId": "{{contact.id}}",
 "campaignRef": "{{flow.campaign_ref}}"
 }
}

When the API takes 3.2s, the Data Action fails. The call drops to voicemail because the downstream logic expects a 200 OK to proceed. We can’t just make the CRM faster right now; the DB is doing some heavy joins on the legacy side.

I’ve checked the REST API reference for Architect flows. There’s no query param or header in the flow execution request that seems to bump this limit. I tried adding a timeout field in the body like this:

"timeout": 6000

The API accepted it, but the behavior didn’t change. It still cuts off at 3000ms. The response from the Data Action is just:

{"code": 408, "message": "Request timeout"}

Is this limit truly hardcoded in the platform runtime? Or is there a hidden config we’re missing? We’ve considered moving the sync to a webhook triggered after the call, but that introduces data race conditions with our reporting. We need the sync to happen inline.

Anyone found a workaround for this? We’re on the latest flow version.

The 3s limit is hard-coded in the platform. You can’t change it. The usual workaround is to offload the heavy lifting. Push the request to a webhook endpoint instead, let your Node.js service handle the long-running call, and have Architect poll a status endpoint or use an async pattern. Keeps the flow responsive.