Skip to main content

Input Node 📝

Pauses workflow execution and waits for human input via a form or text entry.

Node type: inputNode Category: Human Actor: inputNode (2 threads)


Description

The Input Node suspends a workflow execution and presents a form or input prompt to a user. The workflow resumes only when a user submits the form via the Complete Task API or the chat interface.

Use Input Nodes for:

  • Human-in-the-loop approval workflows
  • Multi-step data collection forms
  • Interactive chat conversations
  • Manual review and decision checkpoints

Properties

PropertyTypeRequiredDescription
formTitletextNoTitle displayed above the form
inputTypeselectYesType of input to collect (see table below)

Input Types

TypeDescriptionCollected Data
textboxSingle-line text input{inputValue} as string
textareaMulti-line text area{inputValue} as string
numberNumeric input with validation{inputValue} as number
dateDate picker{inputValue} as ISO date string
selectDropdown with predefined options{inputValue} as selected option
checkboxMultiple checkbox selections{inputValue} as array
radioSingle selection from options{inputValue} as string
fileFile upload{inputValue} as file reference
formFull custom form with multiple fields{formData} as object

Inputs

When the Input Node is reached, it:

  1. Suspends the process instance (stateCd: 0, node statusCd: 1)
  2. Stores the node's waiting state in the database
  3. Returns to the caller (the process instance is now "waiting")

The Input Node has access to all current workflow variables for display in formTitle.


Outputs

When a user submits the form via the Complete Task endpoint:

VariableTypeDescription
{inputValue}variesThe submitted value (for simple input types)
{formData}objectAll form fields (for form input type)
{inputNodeAction}stringThe action taken: COMPLETE or CANCEL

For form type, access individual fields as {formData.fieldName}.


Completing an Input Node

Use the Complete Task API:

POST /process/task
{
"processInstanceId": "inst_xyz789",
"nodeId": "approval-input-1",
"action": "COMPLETE",
"data": {
"approvalDecision": "approved",
"notes": "Looks good, proceed with the order"
}
}

All fields in data become workflow variables accessible in downstream nodes.


Chat Workflow Integration

In chat-based workflows (using the public workflow interface), the Input Node seamlessly integrates with the conversation:

  1. The AI Task generates a message or question
  2. The Input Node presents the input form in the chat UI
  3. The user types or selects an answer
  4. The workflow resumes with the user's response

When inputType is textbox or textarea, the input appears as a chat message box. Other types render as appropriate UI controls within the chat.


Connections

ConnectionDescription
sequenceFlow (incoming)Arrives from previous node
sequenceFlow (outgoing)Continues after form submission
errorFlow (optional)Taken if the input node is cancelled

Example: Approval Workflow

{
"nodeId": "approval-1",
"name": "Manager Approval Required",
"nodeType": "inputNode",
"properties": {
"formTitle": "Review this {requestType} request for {requesterName}",
"inputType": "form"
}
}

The manager receives a notification, reviews the request, and submits the form. The workflow then routes based on {formData.decision}.


Example: Customer Intake Form

{
"nodeId": "intake-form-1",
"name": "Collect Customer Information",
"nodeType": "inputNode",
"properties": {
"formTitle": "Please provide your details",
"inputType": "form"
}
}

Downstream variables: {formData.firstName}, {formData.lastName}, {formData.email}, {formData.issueDescription}


Best Practices

  • Always add a timeout to Input Nodes in automated workflows — unanswered inputs can block instances indefinitely
  • Connect timeoutFlow to handle cases where no one responds within the expected time
  • For chat workflows, use inputType: textbox or textarea for conversational input
  • Implement a notification mechanism (email/SMS node before the Input Node) so the right person knows they need to respond
  • After resumption, validate the submitted data with an If/Else or Script Task before proceeding