POST /api/v2/flows/executions returns 200 but flow does not trigger

I am trying to launch a specific Architect flow programmatically from an external Python script. The goal is to trigger a workflow based on external data ingestion.

The endpoint is POST /api/v2/flows/executions. I am using the standard OAuth2 client credentials flow for authentication. The token generation works fine. I can query user data without issues.

Here is the cURL command I am using for testing:

curl -X POST "https://{{myorg}}.mygenesyscloud.com/api/v2/flows/executions" \
 -H "Authorization: Bearer {{access_token}}" \
 -H "Content-Type: application/json" \
 -d '{
 "flowId": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
 "context": {
 "userId": "98765432-abcd-1234-efgh-0987654321ab",
 "customData": {
 "source": "external_api",
 "priority": "high"
 }
 }
 }'

The response I get is:

{
 "executionId": "exec-12345-abcde-67890",
 "flowId": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
 "status": "queued"
}

Status code is 200. The executionId is generated. But the flow never actually starts. I checked the flow logs in Architect. Nothing shows up. The flow is active. It is not paused.

I verified the flowId is correct. I copied it directly from the flow editor URL. The userId exists in the system.

I tried adding a webhook inside the flow as the first step. No webhook call was received.

I am using the flow:read and flow:write scopes. Is that enough? The docs are not clear on execution permissions. Maybe I need routing:write? Or is there a specific setting in the flow definition that blocks external triggers?

The flow has a “Start” trigger. It is set to “Flow Execution API”. That is the only trigger.

I am in PST timezone. The timestamps in the logs might be off? No, that shouldn’t matter for execution.

I have been stuck on this for two days. The API says success. The system does nothing.