Flow Studio
Resume API
The single endpoint for resuming a suspended workflow. Any channel — web UI, Slack bot, email link, custom app — calls this endpoint with the actor's response data and the correlation token.
Endpoint
POST /api/executions/{executionResId}/resume
Authorization: Bearer {actorToken}
Content-Type: application/json
{
// Response data — structure depends on HIL task type:
// Approval: { "decision": "Approved"|"Rejected", "comment": "..." }
// UserForm: { field1: value1, field2: value2, ... }
// Review: { "acknowledged": true, "comment": "..." }
}
Response Codes
| Code | Meaning |
|---|---|
| 202 Accepted | Resume accepted — execution restarted asynchronously |
| 400 Bad Request | Invalid response data (e.g., missing required fields for a form) |
| 401 Unauthorized | No valid JWT |
| 403 Forbidden | Actor's tenant does not match the suspension's tenant |
| 404 Not Found | ExecutionResId not found |
| 409 Conflict | Token already consumed — execution already resumed |
| 410 Gone | Token expired — suspension exceeded its deadline |
Approval Resume Example
POST /api/executions/3f9c4b2a-7e8d-4c1f-a3b6-9d0e1f2a3b4c/resume
Authorization: Bearer eyJ...
Content-Type: application/json
{
"decision": "Approved",
"comment" : "Reviewed the contract — terms are acceptable for Q3."
}
// Response: 202 Accepted
// { "executionId": "exec-123", "status": "Resuming" }
Form Resume Example
POST /api/executions/a1b2c3d4-.../resume
{
"employeeName" : "Jane Doe",
"department" : "Engineering",
"startDate" : "2026-06-01",
"salary" : 90000,
"notes" : "Senior engineer — approve relocation package"
}
Asynchronous Continuation
The API returns 202 immediately after validating the token and response data. The actual engine continuation (re-loading memory, continuing the workflow) happens asynchronously on a background task. The actor's channel does not need to wait for the workflow to complete.
To track execution progress after resume, use the SignalR execution hub (Guide6) or poll GET /api/executions/{executionId}/status.