Skip to main content

agentInput

The entry point of the inner workflow inside an aiAgent group. Receives all data from the outer workflow and passes it through unchanged, making every field available inside the group via {{ @agentInput.<field> }} template syntax.

Marked is_input: true — if the output is a list, the runner unwraps it for iteration.

Parameters

Accepts any fields (extra="allow"). There are no fixed required params. All fields come from whatever the outer workflow sends in — typically via template expressions referencing outer nodes like {{ @httpRequest.messages }}.

Common fields (from canonical usage):

ParamTypeDescription
modelstringLLM model identifier
system_promptstringSystem prompt for the agent
messagesobject[]Conversation history with role and content
datasetIdsinteger[]Dataset IDs to search
maxSubAgentsintegerMaximum sub-agents the agent can spawn
maxDocumentVectorSearchintegerMaximum documents per vector search
streamingbooleanEnable streaming execution
response_formatobject?JSON schema for structured output

Output

All input fields are echoed to the output unchanged. Every field is accessible downstream in the inner workflow as {{ @agentInput.<field> }}.

Example

{
"id": "agentInput",
"type": "agentInput",
"data": {
"isInput": true,
"label": "Agent Input",
"isExecuted": false,
"handles": ["outputs"],
"schema": {},
"params": {
"model": { "value": "{{ @httpRequest.model }}", "isExpression": true, "isAttachedToInputNode": false },
"system_prompt": { "value": "{{ @httpRequest.system_prompt }}", "isExpression": true, "isAttachedToInputNode": false },
"messages": { "value": "{{ @httpRequest.messages }}", "isExpression": true, "isAttachedToInputNode": false },
"datasetIds": { "value": [], "isExpression": false, "isAttachedToInputNode": false },
"maxSubAgents": { "value": 2, "isExpression": false, "isAttachedToInputNode": false },
"streaming": { "value": true, "isExpression": false, "isAttachedToInputNode": false }
},
"inputs": [], "outputs": [], "errors": []
},
"position": { "x": 0, "y": 0 },
"isSelected": false,
"isDragging": false
}