> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cloudcruise.com/llms.txt
> Use this file to discover all available pages before exploring further.

# User Interaction

> Request human input during workflow execution

The **User Interaction** node pauses workflow execution to request input from a human operator. This enables human-in-the-loop workflows for handling edge cases, approvals, or data that cannot be automated.

## Parameters

| Parameter            | Type   | Required | Description                                                                                     |
| -------------------- | ------ | -------- | ----------------------------------------------------------------------------------------------- |
| `expected_datamodel` | object | Yes      | JSON Schema defining the data to collect from the user                                          |
| `server_message`     | string | No       | Message to display to the user explaining what input is needed. Supports variable interpolation |
| `timeout`            | number | No       | Maximum time (ms) to wait for user response. Default: 300000 (5 minutes)                        |
| `error_message`      | string | No       | Custom error code to throw if interaction times out or fails                                    |

## Examples

### Basic User Input

Request a single piece of information:

```json theme={null}
{
  "id": "abc123",
  "name": "Get approval code",
  "action": "USER_INTERACTION",
  "parameters": {
    "server_message": "Please enter the approval code shown on your device",
    "expected_datamodel": {
      "type": "object",
      "properties": {
        "approval_code": {
          "type": "string",
          "description": "The 6-digit approval code"
        }
      },
      "required": ["approval_code"]
    },
    "timeout": 300000
  }
}
```

## Using User Input in Subsequent Nodes

The user's input is stored in the context and can be used in later nodes:

```json theme={null}
{
  "id": "def456",
  "name": "Enter verified amount",
  "action": "INPUT_TEXT",
  "parameters": {
    "execution": "STATIC",
    "selector": "//input[@id='amount']",
    "text": "{{context.verified_amount}}"
  }
}
```

## Notes

* User interactions trigger a webhook notification of event type `interaction.waiting`
* Use `timeout` to prevent workflows from hanging indefinitely
* The `server_message` supports variable interpolation to show context-specific instructions
* For submitting user interaction data programmatically, see the [Submit User Interaction Data](/run-api/submit-user-interaction-data) API
