Architect Data Action: Calling shared flow module returns 404 Not Found

We’re trying to standardize our IVR logic by moving common greeting and authentication steps into a shared flow module. The goal is to have multiple inbound call flows invoke this single source of truth using a Data Action. I’ve set up the shared flow with an entry point and configured the Data Action in the main flow to call it via the REST API. The endpoint path looks correct, but the call consistently fails with a 404 Not Found error. I’ve double-checked the flow ID and the environment variables, but nothing seems to be off. Here’s the Data Action JSON configuration I’m using:

{
 "settings": {
 "method": "POST",
 "url": "{{env:GENESYS_CLOUD_API_URL}}/api/v2/flows/actions/{{flowId}}/execute",
 "headers": {
 "Authorization": "Bearer {{token}}"
 }
 }
}

The {{flowId}} resolves correctly in the debug logs. I can call the same endpoint manually with Postman using the same token and it works fine. I’ve also tried adding the Accept: application/json header, but that didn’t change anything. The error response body is just a generic error object with no useful details. Is there a specific permission or header I’m missing that’s causing this?

The 404 isn’t about the flow ID. It’s about the endpoint path. You can’t call a shared flow module directly via a generic Data Action REST call like it’s a standalone web service. The API expects the specific invocation path for flow modules, and if you’re hitting /api/v2/flows or similar, it’ll bomb out.

Use the Invoke Flow Module action in Architect instead. It’s native, handles the session context automatically, and doesn’t require you to manage auth tokens or endpoints manually.

If you must use a Data Action for some weird reason, the endpoint is:

POST /api/v2/analytics/flows/modules/{moduleId}/invoke

But seriously, just use the native action. The Data Action route is a rabbit hole of scope issues and timeout errors. The native action maps inputs to parameters cleanly. Check your module’s entry point name in the Studio definition. If the names don’t match exactly, it fails silently or with a 404 depending on how strict the parser is.

Double check the module ID format too. It’s a UUID, not a name.