Enroll a contact
POST
/v1/workflows/{id}/enrollSecret key — sk_… or sk_test_… · Base URL https://api.volanea.com
Manually start an execution for a contact (the workflow must be active). Re-entry is subject to the workflow's reentry policy.
Path parameters
idstringrequiredWorkflow id.
Body
Required · application/json
emailemailrequired
Response
201 · WorkflowExecution
executionIdstringrequiredworkflowIdstringrequiredprojectIdstringcontactIdstringrequiredstatusenumrequiredactivewaitingcompletedexitedfailedcancelledcurrentNodeIdstring | nullwakeAtstring | nullwaitEventNamestring | nullwaitTimeoutAtstring | nullcontextobject | nullenteredAtdate-timerequiredupdatedAtdate-timecompletedAtstring | null
Errors
Every failure returns the standard envelope — branch on `code`, never on the wording of `error`.
401Missing or invalid API key.404Not found.409Workflow not active (`invalid_state`) or contact not enrolled (`not_enrolled`).422Request validation failed (code `validation_error`, 422).
Request
curl https://api.volanea.com/v1/workflows/id_123/enroll \
-X POST \
-H "Authorization: Bearer sk_..." \
-H "Content-Type: application/json" \
-d '{
"email": "ada@example.com"
}'Response
201 · application/json
{
"success": true,
"data": {
"executionId": "<executionId>",
"workflowId": "wf_7d31",
"projectId": "<projectId>",
"contactId": "con_5e90",
"status": "active",
"currentNodeId": "<currentNodeId>",
"wakeAt": "2026-01-01T09:00:00.000Z",
"waitEventName": "<waitEventName>",
"waitTimeoutAt": "2026-01-01T09:00:00.000Z",
"context": {},
"enteredAt": "2026-01-01T09:00:00.000Z",
"updatedAt": "2026-01-01T09:00:00.000Z",
"completedAt": "2026-01-01T09:00:00.000Z"
}
}92 endpoints · OpenAPI document