Nodes¶
Node CRUD endpoints for managing workflow nodes. Nodes are nested under their parent workflow.
All endpoints are under /api/v1/workflows/{slug}/nodes/ and require Bearer token authentication.
GET /api/v1/workflows/{slug}/nodes/¶
List all nodes in a workflow.
Path parameters:
| Parameter | Type | Description |
|---|---|---|
slug | string | Workflow slug |
Example request:
curl http://localhost:8000/api/v1/workflows/my-chatbot/nodes/ \
-H "Authorization: Bearer <api_key>"
Response (200):
[
{
"id": 1,
"node_id": "trigger_chat_a1b2c3",
"component_type": "trigger_chat",
"is_entry_point": false,
"interrupt_before": false,
"interrupt_after": false,
"position_x": 100,
"position_y": 200,
"config": {
"system_prompt": "",
"extra_config": {},
"llm_credential_id": null,
"model_name": "",
"temperature": null,
"max_tokens": null,
"frequency_penalty": null,
"presence_penalty": null,
"top_p": null,
"timeout": null,
"max_retries": null,
"response_format": null,
"llm_model_config_id": null,
"credential_id": null,
"is_active": true,
"priority": 0,
"trigger_config": {}
},
"subworkflow_id": null,
"code_block_id": null,
"updated_at": "2025-01-15T10:30:00",
"schedule_job": null
}
]
Note
Node list endpoints return a flat array, not a paginated envelope.
POST /api/v1/workflows/{slug}/nodes/¶
Create a new node in a workflow.
Path parameters:
| Parameter | Type | Description |
|---|---|---|
slug | string | Workflow slug |
Request body:
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
node_id | string | yes | Unique node identifier (e.g., agent_abc123) | |
component_type | string | yes | Node type (see Component Types) | |
is_entry_point | bool | no | false | Whether this node is an entry point |
interrupt_before | bool | no | false | Pause execution before this node |
interrupt_after | bool | no | false | Pause execution after this node |
position_x | int | no | 0 | Canvas X position |
position_y | int | no | 0 | Canvas Y position |
config | object | no | {} | Component configuration (see below) |
subworkflow_id | int | no | null | ID of sub-workflow (for workflow nodes) |
code_block_id | int | no | null | ID of code block (for code nodes) |
Config object fields:
| Field | Type | Applies To | Description |
|---|---|---|---|
system_prompt | string | AI nodes (agent, categorizer, router, extractor) | System prompt for the LLM |
extra_config | object | All | Type-specific configuration |
llm_credential_id | int | ai_model | LLM credential to use |
model_name | string | ai_model | Model identifier |
temperature | float | ai_model | Sampling temperature |
max_tokens | int | ai_model | Maximum output tokens |
frequency_penalty | float | ai_model | Frequency penalty |
presence_penalty | float | ai_model | Presence penalty |
top_p | float | ai_model | Top-p sampling |
timeout | int | ai_model | Request timeout in seconds |
max_retries | int | ai_model | Max retry attempts |
response_format | object | ai_model | Structured output format |
credential_id | int | Triggers | Credential for trigger authentication |
is_active | bool | Triggers | Whether the trigger is active |
priority | int | Triggers | Trigger priority (0 = default) |
trigger_config | object | Triggers | Trigger-specific settings |
Example request:
curl -X POST http://localhost:8000/api/v1/workflows/my-chatbot/nodes/ \
-H "Authorization: Bearer <api_key>" \
-H "Content-Type: application/json" \
-d '{
"node_id": "agent_abc123",
"component_type": "agent",
"position_x": 400,
"position_y": 200,
"config": {
"system_prompt": "You are a helpful assistant."
}
}'
Response (201): Node object (same format as list response items).
Broadcasts a node_created WebSocket event on the workflow:<slug> channel.
PATCH /api/v1/workflows/{slug}/nodes/{node_id}/¶
Update an existing node's configuration or position.
Path parameters:
| Parameter | Type | Description |
|---|---|---|
slug | string | Workflow slug |
node_id | string | Node identifier |
Request body (all fields optional):
Same fields as create, but all are optional. Only include the fields you want to update.
Example request:
curl -X PATCH http://localhost:8000/api/v1/workflows/my-chatbot/nodes/agent_abc123/ \
-H "Authorization: Bearer <api_key>" \
-H "Content-Type: application/json" \
-d '{
"position_x": 500,
"config": {
"system_prompt": "You are a customer support agent."
}
}'
Response (200): Updated node object.
Broadcasts a node_updated WebSocket event on the workflow:<slug> channel.
Error (404): "Node not found."
DELETE /api/v1/workflows/{slug}/nodes/{node_id}/¶
Delete a node and all its connected edges. If the node is a trigger_schedule, any associated scheduled job is also cleaned up.
Path parameters:
| Parameter | Type | Description |
|---|---|---|
slug | string | Workflow slug |
node_id | string | Node identifier |
Example request:
curl -X DELETE http://localhost:8000/api/v1/workflows/my-chatbot/nodes/agent_abc123/ \
-H "Authorization: Bearer <api_key>"
Response (204): No content.
Broadcasts a node_deleted WebSocket event on the workflow:<slug> channel.
Error (404): "Node not found."
Schedule Actions¶
These endpoints manage the scheduled execution of trigger_schedule nodes.
POST /api/v1/workflows/{slug}/nodes/{node_id}/schedule/start¶
Start or restart a scheduled job for a trigger_schedule node. Configuration is read from the node's extra_config.
Extra config fields:
| Field | Type | Default | Description |
|---|---|---|---|
interval_seconds | int | 300 | Seconds between runs |
total_repeats | int | 0 | Total runs (0 = unlimited) |
max_retries | int | 3 | Max retries per run |
timeout_seconds | int | 600 | Timeout per run |
trigger_payload | object | {} | Payload passed to the trigger |
Response (200): Updated node object.
Error (400): "Node is not a trigger_schedule."
POST /api/v1/workflows/{slug}/nodes/{node_id}/schedule/pause¶
Pause an active scheduled job.
Response (200): Updated node object.
Error (400): "Cannot pause job with status 'paused'."
POST /api/v1/workflows/{slug}/nodes/{node_id}/schedule/stop¶
Stop and remove a scheduled job.
Response (200): Updated node object.
Component Types¶
The following component types are available:
| Category | Types |
|---|---|
| AI | agent, categorizer, router, extractor |
| Models | ai_model |
| Routing | switch |
| Tools | run_command, http_request, web_search, calculator, datetime, create_agent_user, platform_api, whoami, epic_tools, task_tools, spawn_and_await, workflow_create, workflow_discover, scheduler_tools, system_health |
| Processing | aggregator, human_confirmation, workflow, code, code_execute, loop, wait, merge, filter, error_handler, output_parser |
| Memory | memory_read, memory_write, identify_user |
| Triggers | trigger_telegram, trigger_schedule, trigger_manual, trigger_workflow, trigger_error, trigger_chat |