Skip to main content

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 (id approval) that approval branches route on.
  • clarification — an open-ended request for information. Its default question is a single free-text field (id response).

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 accuracy
  • Approve high-value purchase request: AED {{amount}}
  • Authorize payment of {{amount}} to {{vendor}}
Poor titles:
  • “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.
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).
If you omit 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 — when true (the default), the previous activity’s full output is attached as context as well.
The assignee sees this data in MagOneAI Hub alongside the questions.

Approval branches

For approval 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.
Timeout is a simple duration. There is no built-in escalation, reassignment, or auto-approve on expiry — model those with a Condition node on the timeout error, or a follow-up Human Task, if you need them.

Use cases

Human Task nodes enable sophisticated human-in-the-loop workflows.

Financial approvals

Scenario: Approve invoices above a threshold before payment.
Human Task configuration:

Content review before publication

Scenario: Review AI-generated content before publishing to customers.
Human Task configuration:

Data validation

Scenario: Validate AI-extracted data before committing to a database.
Human Task configuration:

Compliance review

Scenario: Route high-risk compliance findings to the legal team for a decision.
Human Task configuration:

Best practices

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.
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)
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.
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.
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.
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.
Use Human Task nodes strategically. Not every decision needs human approval. Reserve human oversight for high-stakes decisions, low-confidence AI outputs, and situations where human judgment is genuinely needed.

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.
This works for top-level executions as well as tasks inside schedules, sub-workflows, and foreach branches. Ready-to-paste request snippets (curl, Python, Node) are available in the API-key credentials screen in Studio.

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