POST /api/v2/flows/executions returns 202 but flow never starts?

Hey everyone,

I’m trying to kick off an Architect flow programmatically from our Node.js backend. The use case is simple: an external web form submission triggers a flow that looks up the user in Salesforce and sends a follow-up email. No voice interaction involved, just data processing.

I’ve got the OAuth token sorted, and I’m hitting the endpoint like this:

const response = await fetch('https://api.mypurecloud.com/api/v2/flows/executions', {
 method: 'POST',
 headers: {
 'Authorization': `Bearer ${token}`,
 'Content-Type': 'application/json',
 'Accept': 'application/json'
 },
 body: JSON.stringify({
 flowId: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
 inputs: {
 'email': 'test@example.com',
 'source': 'web-form'
 }
 })
});

The API responds with a 202 Accepted and gives me an execution ID in the response header. Looks good so far. But when I go into Genesys Cloud and check the Flow Analytics, nothing shows up. The flow isn’t running. I waited ten minutes, checked the logs, nada.

If I trigger that same flow manually through the Architect test console, it works fine. The inputs match exactly what I’m sending in the JSON payload. I even tried adding debug: true to the body, but that just gets ignored or causes a 400 (which makes sense, not a valid param).

Is there something obvious I’m missing about how these background executions work? Or does the flow need a specific trigger type defined to accept external API calls? The docs mention “external event” triggers but don’t give a concrete example of the JSON structure required to satisfy that trigger via REST.

Here’s the header response I’m getting:

HTTP/2 202
location: https://api.mypurecloud.com/api/v2/flows/executions/xyz-123
x-request-id: req-98765

The location header points to a specific execution, but hitting that URL just returns a 404 after a few seconds. Maybe it timed out? But the flow itself is super fast, just a DB lookup and an email send.

Any ideas?