POST /api/v2/flows/executions 400 Bad Request on flowStartPoint

I’m trying to kick off an Architect flow from a custom external service using the Genesys Cloud REST API. The goal is simple: trigger a specific flow start point and pass some context data along with it. I’ve got the OAuth token sorted, using client credentials with the flow:execute scope, so auth isn’t the issue here.

The endpoint I’m hitting is POST /api/v2/flows/executions. According to the docs, I need to provide the flow ID, the start point ID, and optionally the initial data. Here’s the payload I’m sending:

{
 "flowId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
 "flowStartPointId": "startPoint_123",
 "initialData": {
 "userId": "user_xyz",
 "action": "trigger_test"
 }
}

I’m getting a 400 Bad Request back. The error message is pretty generic:

{
 "code": "badRequest",
 "message": "Invalid flowStartPointId",
 "status": 400
}

This is frustrating because I can see the flow and the start point in the Architect UI, and the IDs match exactly what I’m copying from the URL or the flow JSON export. I’ve double-checked the flowId as well. It’s valid.

I’m using Python requests for this. Here’s the relevant snippet:

import requests

headers = {
 "Authorization": f"Bearer {access_token}",
 "Content-Type": "application/json"
}

payload = {
 "flowId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
 "flowStartPointId": "startPoint_123",
 "initialData": {
 "userId": "user_xyz",
 "action": "trigger_test"
 }
}

response = requests.post(
 "https://api.mypurecloud.com/api/v2/flows/executions",
 headers=headers,
 json=payload
)
print(response.status_code, response.text)

I’ve tried omitting the initialData entirely, just in case that’s causing schema issues, but the error remains the same. It seems to be choking on the flowStartPointId. Is there a specific format or naming convention I’m missing for start points when called via API? Or maybe the start point needs to be exposed in a certain way? I’ve checked the flow settings, but nothing jumps out. Any ideas what I’m doing wrong?