Purpose
The Human Task node pauses the workflow and waits for a human to provide input or approval before continuing. Essential for human-in-the-loop patterns, Human Task nodes ensure that critical decisions have human oversight. Human Task nodes bridge the gap between AI automation and human judgment. They enable workflows that leverage AI speed and consistency while retaining human oversight for high-stakes decisions.How it works
When execution reaches a Human Task node, the workflow pauses durably while waiting for human input.1
Workflow reaches Human Task
Execution arrives at the Human Task node. The workflow prepares to pause.
2
Execution pauses
The workflow execution pauses and its status becomes waiting for input. Temporal maintains the complete state durably, so no data is lost.
3
Task appears in MagOneAI Hub
A task record is created and surfaces in MagOneAI Hub for every assigned user. Each assignee sees:
- Task title and description
- Context data from previous nodes
- The questions to answer and available options
4
A human reviews and responds
An assignee reviews the context and submits their answers through MagOneAI Hub. When a task has several assignees, the first person to respond is the one who resolves it.
5
Workflow resumes
The response is validated against the task’s questions, stored in the variable store, and signalled back to the workflow. Execution resumes from exactly where it paused.
6
Workflow continues
Subsequent nodes can access the human’s answers, and approval tasks can route the workflow based on the decision.
Human Task nodes leverage Temporal’s durable execution. The workflow can wait for hours, days, or up to a week for human input without losing state or consuming compute resources. When the human responds, execution resumes instantly.
Configuration
A Human Task node is configured with a task type, a title, one or more assignees, and the questions the human answers. Every text field supports template variables, so the task is built from data produced earlier in the workflow.Task type
Choose how the task behaves:approval— a decision task. If you don’t supply your own questions, the node adds a default Approve / Reject choice question (idapproval) that approval branches route on.clarification— an open-ended request for information. Its default question is a single free-text field (idresponse).
Title and description
title (required, up to 255 characters) is the headline the assignee sees in MagOneAI Hub. description (optional, up to 2000 characters) adds detail. Both support templates.
Good titles:
Review extracted invoice data for accuracyApprove high-value purchase request: AED {{amount}}Authorize payment of {{amount}} to {{vendor}}
- “Review” (too vague)
- “Check this” (no context)
Assignees
assignee_id is the user (or users) who can complete the task. Provide a MagOneAI user ID, or a template that resolves to one such as {{system.user_id}}. Every assignee must be a member of the execution’s project — assignees outside the project are rejected.
- Single assignee
- Multiple assignees (first responder wins)
- Dynamic assignment
Assign the task to one user.Use when: one specific person owns the decision.
Assignees are identified by user ID, not email address or role. To route to a specific person from workflow data, resolve their user ID into the template.
Questions
questions defines what the human answers. Each question has an id, question text, and a question_type:
Set
required to false to make an answer optional (the default is true).
questions, the node uses a sensible default for the task type: an Approve / Reject choice for approval, or a single free-text field for clarification. Questions can also be supplied dynamically — an upstream agent that emits a questions list has each one validated and used automatically (capped at 20).
Context for the reviewer
Give the human the information they need to decide. Two mechanisms, which can be combined:context_fields— a map of named fields, each pulling a value from an earlier activity’s output by path. Each field is{ "source": "...", "label": "..." }.include_previous_output— whentrue(the default), the previous activity’s full output is attached as context as well.
Approval branches
Forapproval tasks, branches routes the workflow based on the answer to the approval question (the default Approve / Reject question, or your own question with id approval). Each branch has a label matched against the answer and a goto naming the next node.
Branch matching uses the
approval answer key. If you write your own approval questions, keep the deciding question’s id as approval so branches can route on it.Timeout
timeout_minutes bounds how long the node waits, from 1 minute up to 10080 (7 days). If no one responds in time, the task is marked timed out and the node fails with a timeout error, which your workflow’s error handling can catch. Omit timeout_minutes to wait indefinitely.
Use cases
Human Task nodes enable sophisticated human-in-the-loop workflows.Financial approvals
Scenario: Approve invoices above a threshold before payment.Content review before publication
Scenario: Review AI-generated content before publishing to customers.Data validation
Scenario: Validate AI-extracted data before committing to a database.Compliance review
Scenario: Route high-risk compliance findings to the legal team for a decision.Best practices
Provide rich context
Provide rich context
Use
context_fields to surface exactly what the reviewer needs — key data points, AI analysis results, and links to source data. Keep include_previous_output on when the full upstream output helps, or turn it off to keep the task focused.Set realistic timeouts
Set realistic timeouts
Consider business hours and time zones. Don’t set a 1-hour timeout if the approver might be asleep. Remember a timeout fails the node — handle that path deliberately rather than leaving it to error out.Good timeout examples:
- Urgent approval: a few hours (
timeout_minutes: 240) - Standard approval: one day (
timeout_minutes: 1440) - Non-urgent review: a few days (up to
10080)
Use clear action labels
Use clear action labels
Instead of generic Yes / No, use specific option labels: “Approve Payment”, “Reject Invoice”, “Request Changes”. The option label is also what approval branches match on.
Assign to several people when speed matters
Assign to several people when speed matters
List multiple
assignee_ids (comma-separated) so any available approver can act. The first response wins, so a task isn’t blocked waiting on one specific person.Capture the reason with a follow-up question
Capture the reason with a follow-up question
There is no separate comments field. To record why a decision was made, add a
text question (mark it required when you need a justification on rejection). The answer is stored with the task’s other answers.Keep the deciding question id as 'approval'
Keep the deciding question id as 'approval'
Approval branches route on the
approval answer key. If you replace the default question, keep the id of the deciding question as approval so routing still works.Advanced patterns
Multi-stage approvals
Require multiple approvals in sequence:Parallel approvals
Require multiple approvals simultaneously:Conditional approval
Only require approval under certain conditions:Approval with agent augmentation
Agent assists human decision-making:In MagOneAI Hub
Assigned users find the task in their MagOneAI Hub task queue. Opening a task shows its title and description, the context data the workflow attached, and the questions to answer. Any assignee can respond; the first submitted response completes the task and resumes the workflow. Tasks that have already been answered, timed out, or cancelled are no longer actionable.Responding programmatically (API & webhooks)
Human tasks don’t have to be answered from the Hub UI. A workflow started through the API trigger can pause on a Human Task and be resumed by an external system — so you can build approval steps into integrations where the approver lives in another application. The flow mirrors the in-app experience over signed (HMAC-authenticated) API calls:1
Trigger the workflow
Call the workflow’s webhook endpoint. The response includes a poll token and poll URL you use to follow execution.
2
Detect the pending task
When the workflow reaches a Human Task, its status becomes waiting for input and polling surfaces the pending human-task IDs.
3
Read the task
Fetch the task to get its questions, options, and current status — the same content a Hub user would see.
4
Submit the response
Post the answers back to the task. The platform validates them against the task’s questions, marks the task complete, and signals the workflow to resume. Submitting twice is safe — a task that’s already answered isn’t re-signalled.
5
Get the result
By default the submit call returns immediately and you poll for completion (including any new human task the workflow pauses on next). Optionally you can ask the call to wait briefly for the workflow to settle and return the outcome inline.
A webhook caller may only read and answer tasks belonging to executions it started, within the same project and any allowed-use-case restrictions on its API key. Requests outside that scope return a not-found error so task existence is never leaked.
Next steps
Condition node
Route to human tasks based on conditions
Parallel node
Require multiple parallel approvals
Agent node
Use agents to prepare context for human review
Memory system
Access human task responses in subsequent nodes