Human in the Loop Block
Pause workflow execution for human review or approval
The Human in the Loop block pauses workflow execution and waits for a person to review, approve, reject, or provide input before the run continues. Reach for it whenever a workflow needs human judgment or sign-off at a critical step, with configurable timeouts and multiple approvers — a unique review link is generated and sent to each specified approver.
Overview
| Property | Value |
|---|---|
| Type | human_in_the_loop |
| Category | blocks |
| Color | #F59E0B |
When to Use
- Require manual approval before publishing content or sending external communications
- Gate high-risk actions (payments, deletions, deployments) behind human sign-off
- Collect free-text input or corrections from a reviewer mid-workflow
- Add an acknowledgement step a human must confirm before the workflow proceeds
- Route a decision to specific approvers by email with a unique review link
- Auto-resume or fail a stalled workflow after a configurable timeout
Configuration
Review Title
Required short title for the review request, shown to the approver (e.g. Approve content before publishing). Accepts {{blockName.field}} references from earlier blocks.
Instructions
Long-form instructions displayed to the human reviewer explaining what to evaluate or decide (e.g. Please review the content and approve or reject it.). Optional.
Approval Type
Dropdown selecting the interaction mode for the reviewer. Defaults to approve_reject.
| Option | ID |
|---|---|
| Approve / Reject | approve_reject |
| Acknowledge Only | acknowledge |
| Provide Input | input |
Timeout
Numeric value for how long to wait before the workflow auto-resumes. Set to 0 for no timeout. Works together with the Timeout Unit field.
Timeout Unit
Dropdown selecting the unit for the timeout value. Defaults to hours.
| Option | ID |
|---|---|
| Minutes | minutes |
| Hours | hours |
| Days | days |
On Timeout
Dropdown for what happens if no response arrives before the timeout expires. Defaults to reject.
| Option | ID |
|---|---|
| Auto-approve | approve |
| Auto-reject | reject |
| Fail workflow | fail |
Approvers
Comma-separated email addresses of people allowed to approve this step. Each address receives the unique review link. Optional — if omitted, any authenticated user with access can respond.
Inputs & Outputs
-
Inputs:
title(string) — Title of the human review requestmessage(string) — Instructions shown to the human reviewerapprovalType(string) — Type of human review:approve_reject,acknowledge, orinputtimeout(number) — Timeout value (intimeoutUnitunits);0means no timeouttimeoutUnit(string) — Unit for the timeout:minutes,hours, ordaystimeoutAction(string) — Action on timeout:approve,reject, orfailapprovers(string) — Comma-separated email addresses of approvers
-
Outputs:
status(string) — Review outcome:approved,rejected,pending, ortimeoutresponse(string) — Free-text response provided by the reviewerapprovedBy(string) — Email of the person who approved or rejected the requestcontextId(string) — Unique ID for this human review requestresumedAt(string) — ISO timestamp when the workflow was resumed
Tools
This block uses no external tools. All pausing and resuming logic is handled internally by the Zelaxy execution engine; no third-party API calls are made.
YAML Example
human_in_the_loop_1:
type: human_in_the_loop
name: "Human in the Loop"
inputs:
title: "Approve content before publishing"
message: "Please review the generated content and approve or reject it."
approvalType: "approve_reject"
timeout: 24
timeoutUnit: "hours"
timeoutAction: "reject"
approvers: "alice@example.com, bob@example.com"
connections:
outgoing:
- target: publish_block