Architect Data Action timeout hard limit at 3s

We’ve got a Data Action calling an external API that’s taking 5 seconds. The Architect block keeps timing out after 3000ms. Is there a way to bump that timeout setting via the API or JSON config? The docs mention a 3s default but nothing on increasing it. Current payload:

{
 "timeout": 5000,
 "url": "https://api.example.com/data"
}

Still failing. Any workaround?

“timeout”: 10000


The field is just an integer in milliseconds. The docs say 3s is the default, but you can set it higher. Just make sure your external API can actually respond that fast.

The suggestion above is correct about the integer format, but you’re hitting a hard ceiling. Architect Data Actions have a strict 3-second execution limit for the actual HTTP request, regardless of what you set in the JSON payload. That timeout field mostly controls internal processing time, not the network wait.

If your endpoint takes 5 seconds, you need to offload the wait. I usually handle this by making the external call asynchronous from Architect. Here is the pattern that works for me:

  1. Architect calls a lightweight proxy endpoint (Azure Function or AWS Lambda) that immediately returns 202 Accepted.
  2. The proxy queues the actual 5-second API call.
  3. The proxy stores the result in a database or queue.
  4. Your flow polls the proxy later or uses a webhook to update the contact when the real data is ready.

Trying to force Architect to wait longer will just give you ETIMEDOUT errors. It’s not a config issue; it’s an architectural constraint.

If you must do it synchronously, check if the external API supports a fast-check or cache header. Sometimes adding ?cache=true or similar parameters to the URL can drop the response time under 3 seconds.

Here is a quick Node.js for the proxy approach using Express, just in case you need a reference for the middleman:

const express = require('express');
const axios = require('axios');
const app = express();

app.post('/proxy-call', async (req, res) => {
 // Immediate response to Architect
 res.status(202).json({ status: 'queued' });

 // Async work happens after response is sent
 try {
 const result = await axios.get('https://api.example.com/data', {
 headers: { 'X-Request-Id': req.body.id }
 });
 // Save result to DB or trigger next step
 console.log('Data received:', result.data);
 } catch (error) {
 console.error('Async call failed:', error);
 }
});

app.listen(3000);

This keeps Architect happy and lets your backend handle the slow stuff.