Resume Execution
Submit a decision for a paused Human in the Loop block and continue the run. Requires write access to the workflow. The body is the resume input, either wrapped in input or sent as top-level fields. The decision is approved unless the input sets _humanInTheLoopDecision (or decision) to denied or rejected. Each resume chooses its own response mode: synchronous by default, Server-Sent Events with Accept: text/event-stream or X-Stream-Response: true, or asynchronous with X-Execution-Mode: async (async wins when both are sent).
/api/resume/{workflowId}/{executionId}/{contextId}Authorization
apiKey Your SteelEngine API key (personal, workspace, or organization). Create personal and workspace keys under Settings > API Keys. Create organization keys under Organization Settings > API Keys.
In: header
Path Parameters
The unique identifier of the workflow.
The execution that paused.
The pause point to resume, from the pause point or its resumeLinks.
Header Parameters
Set to async to return 202 immediately with a statusUrl to poll.
Value in
- "async"
Set to true to stream post-resume events as Server-Sent Events.
Value in
- "true"
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/resume/string/string/string" \ -H "Content-Type: application/json" \ -d '{ "input": { "approved": true, "comments": "Looks good to proceed" } }'{ "success": true, "status": "success", "executionId": "exec_resume_123", "rootExecutionId": "exec_9f8e7d6c5b", "output": { "result": "approved" }, "metadata": { "duration": 1234, "startTime": "2026-01-01T00:00:00.000Z", "endTime": "2026-01-01T00:00:01.234Z" }}