Skip to content

Node Catalog ​

Every built-in node, generated from the engine (40 nodes, engine 0.4.3, workflow schema version 1.0). The same data is in docs/reference/node-schemas.json as machine-readable JSON Schema. For what each node does in practice, gotchas and examples, see the Nodes Reference.

This page is generated. Do not edit it by hand; see Regenerating the reference files.

Required means the node's schema requires the field. Some nodes check more when they run, for example a field that is only needed for one setting of another field, so a config that fits the schema can still fail.

Action nodes ​

Code (JS) ​

code version 1.0.0

Execute a JavaScript snippet and return its result. Full Node.js runtime available.

Ports. In: input (In); Out: output (Out), on_error (Error).

FieldTypeRequiredNotes
codestringYesJavaScript to run. Use output(value) to return a result. Has access to 'input' and 'context'.
timeout_secsnumberNoMax execution time in seconds (1 to 60, default 10)

Output fields: _sandbox_partial, duration_ms, result, stdout, truncated.

Database ​

database version 2.0.0

Run SQL queries against a SQLite, PostgreSQL, or MySQL database, or key-value operations against Redis, and return the results.

Ports. In: input (In); Out: output (Out), on_error (Error).

FieldTypeRequiredNotes
allow_localbooleanNoPostgres / MySQL / Redis only. Default: false — connections to localhost, 127.0.0.1, and private-network addresses (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, etc.) are blocked (SSRF protection). Set true only when connection_url intentionally targets a database you run yourself on this machine or LAN.
allow_raw_sqlbooleanNoSQL only. Default: false. When false, a query containing single-quoted string literals (or double-quoted ones on MySQL) is refused so values go through '?' and 'params'. Only an admin caller (a server run with admin rights) can turn this on; the desktop app ignores it.
connection_urlstringNoPostgres / MySQL / Redis. Connection URL. Examples: postgres://user@host/db mysql://user@host/db redis://host:6379. Leave the password out and use Password below to keep it out of the workflow file; a password written in the URL still works.
db_pathstringNoSQLite only. Absolute path ending in .db, .sqlite, or .sqlite3.
db_typestringNoDatabase backend. Default: sqlite. One of: sqlite, postgres, mysql, redis.
expirenumberNoRedis set: optional TTL in seconds. Omit for no expiry.
fieldstringNoRedis: hash field name for hget and hset.
keystringNoRedis: key to operate on.
operationstringNoSQL: query (SELECT) or execute (INSERT/UPDATE/DELETE). Redis: get, set, del, lpush, rpush, lpop, rpop, hget, hset.
paramsstringNoJSON array of positional parameters for ? placeholders. Example: [42, "Alice"]
passwordstringNoPostgres / MySQL / Redis. Password for connection_url. Select a saved credential; it replaces any password written in the URL.
querystringNoSQL query. Use ? for parameters. Not used for Redis — use operation + key/value/field.
valuestringNoRedis: value for set, lpush, rpush, hset.

Output fields: columns, deleted, last_insert_id, list_length, ok, rows, rows_affected, truncated, value.

Discord ​

discord version 1.0.0

Send a text message to a Discord channel via a webhook URL.

Ports. In: input (In); Out: output (Out).

FieldTypeRequiredNotes
contentstringYesMessage content (max 2000 characters)
webhook_urlstringYesDiscord webhook URL (https://discord.com/api/webhooks/...)
allow_everyone_mentionsbooleanNoLet @everyone and @here in the content ping the channel (default false). The webhook's channel permissions can still block it.
usernamestringNoOverride the webhook's display name (optional)

Output fields: sent.

Send Email ​

email_send version 2.0.0

Send an email via SMTP with plain text or HTML content and multiple recipients.

Ports. In: input (In); Out: output (Out).

FieldTypeRequiredNotes
bodystringYes
fromstringYesSender email address
smtp_hoststringYesSMTP server e.g. smtp.gmail.com
subjectstringYes
tostringYesRecipient(s): comma-separated, or an array of addresses from an upstream node. A comma inside quotes or <angle brackets>, as in "Doe, John" <a@b.c>, does not split. Maximum 50 recipients.
htmlbooleanNoSend as HTML email (default: false) Default: false.
passwordstringNo
smtp_portnumberNo587 (STARTTLS, recommended) or 465 (SSL) Default: 587.
usernamestringNoSMTP username (usually your email address)

Output fields: sent.

File ​

file version 1.0.0

Read, write, or delete a file at a given path on the host machine.

Ports. In: input (In); Out: output (Out).

FieldTypeRequiredNotes
operationstringYesOne of: read, write, append, delete, exists.
pathstringYesAbsolute or relative file path
contentstringNoContent to write (write/append only; required, use an empty string for an empty file)
encodingstringNoDefault: utf8. Reading a file that is not valid UTF-8 as utf8 fails; use base64 for binary files. One of: utf8, base64.

Output fields: bytes, content, exists, path.

GitHub ​

github version 1.0.0

Interact with the GitHub API: create issues, pull requests, comments, and repository files.

Ports. In: input (In); Out: output (Out).

FieldTypeRequiredNotes
actionstringYesOperation to perform One of: create_issue, add_comment.
ownerstringYesRepository owner (user or org)
repostringYesRepository name
api_keystringNoGitHub personal access token
bodystringNoIssue body or comment text
issue_numbernumberNoIssue number (required for add_comment)
titlestringNoIssue title (required for create_issue)

Output fields: html_url, id, number, state.

Google Sheets ​

google_sheets version 1.0.0

Read from or write to a Google Sheets spreadsheet using the Sheets API.

Ports. In: input (In); Out: output (Out).

FieldTypeRequiredNotes
actionstringYesOperation to perform One of: append_row, get_values.
rangestringYesA1 notation range (e.g. Sheet1!A1:D1)
spreadsheet_idstringYesGoogle Sheets spreadsheet ID (from the URL); the full sheet address also works
api_keystringNoGoogle OAuth 2.0 access token, pasted directly. Does not auto-refresh (expires after ~1 hour). Only used when client_id/client_secret are not set.
client_idstringNoGoogle OAuth client ID — enables automatic token refresh (recommended). Entered directly here; not currently offered as a saved-credential picker field.
client_secretstringNoGoogle OAuth client secret — enables automatic token refresh (recommended). Pick a saved credential or enter it directly. Takes a saved credential.
value_inputstringNoappend_row only. RAW (default) stores values as typed. USER_ENTERED parses them as if typed in the sheet: formulas run, dates and numbers are converted. Do not use USER_ENTERED with data you do not control: a value starting with = becomes a formula. One of: RAW, USER_ENTERED.
valuesanyNoRow data for append_row — rows of cells as JSON, e.g. [["a","b"]]. Stored as typed (RAW) unless value_input is USER_ENTERED.

Output fields: updatedCells, updatedColumns, updatedRange, updatedRows, values.

HTTP Request ​

http_request version 1.0.0

Make an HTTP request to any URL. Supports GET, HEAD, OPTIONS, POST, PUT, PATCH, DELETE, and custom headers and body.

Ports. In: input (In); Out: output (Success), on_error (Error).

FieldTypeRequiredNotes
methodstringYesOne of: GET, HEAD, OPTIONS, POST, PUT, PATCH, DELETE.
urlstringYesRequest URL
api_keystringNoResolved from credentials
bodyanyNoRequest body (for POST/PUT/PATCH)
headersobjectNoRequest headers

Output fields: body, headers, status.

Manual Trigger ​

manual_trigger version 1.0.0

Run a workflow manually via the Run button in the app or the server API.

Ports. In: none; Out: output (Start).

FieldTypeRequiredNotes
mock_payloadstringNoOptional JSON payload to inject when running manually

Desktop Notification ​

notification version 1.0.0

Show a desktop notification on the host machine while the workflow is running.

Ports. In: input (In); Out: output (Out).

FieldTypeRequiredNotes
titlestringYesNotification title
bodystringNoNotification message body
urgencystringNoUrgency level (Linux only) One of: low, normal, critical. Default: normal.

Output fields: sent.

Notion ​

notion version 1.0.0

Create or update pages and database entries in Notion.

Ports. In: input (In); Out: output (Out).

FieldTypeRequiredNotes
actionstringYesOperation to perform One of: create_page, update_page.
api_keystringNoNotion integration token (secret_...)
data_source_idstringNoNotion data source ID, for a database with several data sources. Use instead of database_id, not with it
database_idstringNoNotion database ID (32 hex digits, with or without hyphens) or a link to the database — create_page needs this or data_source_id
page_idstringNoNotion page ID — required for update_page
propertiesanyNoAdditional Notion page properties as a JSON object, e.g. {"Status": {"select": {"name": "Done"}}}
titlestringNoPage title, written to the title property (see Title Property)
title_propertystringNoName of the database's title property (default Name). Set it when the database calls its title column something else

Output fields: archived, id, object, url.

S3 Storage ​

s3_storage version 1.0.0

Upload, download, list, or delete objects in an S3-compatible object store.

Ports. In: input (In); Out: output (Out), on_error (Error).

FieldTypeRequiredNotes
access_key_idstringNoAccess key ID.
bucketstringNoBucket name.
contentstringNoContent to upload. Text or base64 bytes depending on content_encoding.
content_encodingstringNoEncoding of content field. Default: text. One of: text, base64.
content_lengthnumberNopresign_url with PUT: exact size in bytes the upload must have, up to 5 GiB. Signed into the URL; the uploader must send the same Content-Length.
content_typestringNoMIME type for upload (default application/octet-stream). With presign_url and PUT, signed into the URL: the uploader must send the same Content-Type. Not allowed with GET.
delimiterstringNoList only: group keys that share the text between the prefix and the first delimiter (usually '/') into common_prefixes, like folders. Empty lists every key.
endpointstringNoCustom endpoint URL. Required for r2 (https://ACCOUNT_ID.r2.cloudflarestorage.com) and minio (http://host:9000). Must be empty for aws.
expiry_secsnumberNoPresigned URL expiry in seconds. Default: 3600. Maximum: 604800 (7 days).
keystringNoObject key (path). Required for upload, download, delete, presign_url.
max_objectsnumberNoMost entries a list returns, 1 to 10000. Default: 10000.
methodstringNoHTTP method the presigned URL is valid for: GET downloads the object, PUT uploads it. Default: GET. One of: GET, PUT.
operationstringNoOperation to perform. One of: upload, download, list, delete, presign_url.
prefixstringNoKey prefix filter for list. Empty string lists all objects.
providerstringNoStorage provider. Default: aws. One of: aws, r2, minio.
regionstringNoAWS region (e.g. us-east-1). Default: us-east-1. For R2, use 'auto'. Ignored for MinIO — use endpoint.
secret_access_keystringNoSecret access key. Takes a saved credential.

Output fields: common_prefixes, content, content_encoding, content_type, count, deleted, expires_in, headers, key, max_objects, method, objects, prefix, size, truncated, url.

Save to Folder ​

save_to_folder version 1.0.0

Save one or more files to a folder on disk with optional subfolder organisation.

Ports. In: input (In); Out: output (Out). The ports depend on the config, so these are the defaults.

FieldTypeRequiredNotes
filename_prefixstringNoOptional prefix prepended to every saved filename

Output fields: count, errors, folder, saved, skipped.

Schedule ​

schedule version 1.0.0

Run a workflow on a cron schedule, fixed interval, or one-time delay.

Ports. In: none; Out: output (Triggered).

FieldTypeRequiredNotes
modestringYesOne of: interval, cron, once.
cron_exprstringNoCron expression e.g. 0 9 * * 1-5
interval_secsnumberNoSeconds between runs (interval mode)
run_atstringNoISO timestamp (once mode)

Output fields: mode, triggered_at.

SendGrid ​

sendgrid version 1.0.0

Send a plain-text transactional email via the SendGrid API.

Ports. In: input (In); Out: output (Out).

FieldTypeRequiredNotes
bodystringYesEmail body (plain text)
from_emailstringYesSender email address (must be verified in SendGrid). Write the bare address; use from_name for a display name.
subjectstringYesEmail subject line
to_emailstringYesRecipient email address, or several separated by commas (up to 1000; each gets a separate copy)
api_keystringNoSendGrid API key (SG....)
from_namestringNoSender display name (optional, max 200 characters)

Output fields: message_id, sent.

Shell Command ​

shell_exec version 1.0.0

Run a shell command on the host machine and capture its stdout, stderr, and exit code.

Ports. In: input (In); Out: output (Out).

FieldTypeRequiredNotes
commandstringYesShell command to run
cwdstringNoWorking directory
envobjectNoEnvironment variables
timeout_secsnumberNoMax run time in seconds (1 to 86400, default 30) Default: 30.

Output fields: exit_code, stderr, stdout, success, truncated.

Slack ​

slack version 1.0.0

Post a message to a Slack channel via the Slack API (chat.postMessage) using a Bot Token.

Ports. In: input (In); Out: output (Out).

FieldTypeRequiredNotes
channelstringYesChannel ID or name (e.g. C1234567890 or #general)
textstringYesMessage text
api_keystringNoSlack Bot Token (xoxb-...)

Output fields: channel, ok, ts.

Social Upload ​

social_upload version 1.0.0

Upload video or image content to YouTube, Instagram, or TikTok. Instagram takes a public URL as the file's data. Fails when no file was uploaded.

Ports. In: input (In); Out: output (Out).

FieldTypeRequiredNotes
filesarrayYesMedia contract files array. For Instagram, each file's data is a public http(s) URL.
platformstringYesOne of: youtube, instagram, tiktok.
titlestringYesPost title. TikTok and Instagram use it as the start of the caption.
client_idstringNoOAuth client ID / client key. Entered directly here; not currently offered as a saved-credential picker field.
client_secretstringNoOAuth client secret. Pick a saved credential or enter it directly. Takes a saved credential.
descriptionstringNoPost description (optional). Added after the title in a TikTok or Instagram caption.
privacystringNoPrivacy level (default private). YouTube: public|private|unlisted. TikTok: public_to_everyone|mutual_follow_friends|follower_of_creator|self_only. Ignored by Instagram.
tagsstringNoComma-separated tags (YouTube)

Output fields: count, errors, failed, platform, uploaded.

Stripe ​

stripe version 1.0.0

Create a Stripe PaymentIntent via the Stripe API.

Ports. In: input (In); Out: output (Out).

FieldTypeRequiredNotes
actionstringYesStripe operation to perform One of: create_payment_intent.
amountnumberNoAmount in the smallest currency unit (e.g. 1000 for $10.00 USD)
api_keystringNoStripe secret key (sk_live_... or sk_test_...)
currencystringNoThree-letter ISO currency code, lowercase (e.g. 'usd')
descriptionstringNoOptional description for this payment intent
idempotency_keystringNoOptional value identifying this specific charge (e.g. an order ID) — prevents Stripe from creating a duplicate PaymentIntent if this node is retried or re-run with the same value. If omitted, a key is derived automatically from this run and the resolved amount/currency/description.

Output fields: amount, client_secret, currency, id, status.

Telegram ​

telegram version 1.0.0

Send a text message to a Telegram chat or channel via a bot token.

Ports. In: input (In); Out: output (Out).

FieldTypeRequiredNotes
chat_idstringYesTelegram chat ID or username (e.g. 123456789 or @channelname)
textstringYesMessage text
api_keystringNoTelegram Bot Token (from @BotFather)
parse_modestringNoOptional text formatting mode One of: ``, Markdown, HTML.

Output fields: chat, date, message_id, text.

Webhook ​

webhook version 1.0.0

Start a workflow when an HTTP request arrives. Outputs the request body, headers, method, and path, plus files when the body has an attachments array.

Ports. In: none; Out: output (Triggered), on_error (Error).

FieldTypeRequiredNotes
dedup_window_secsnumberNoWhen set above 0, a request whose body was already seen within this many seconds does not re-run the workflow (the caller still gets a 200 OK — this only suppresses the re-run). Providers that retry on timeout or a non-2xx response (Stripe, GitHub, ...) resend the same event body byte-for-byte, so this catches that case. Only applies to requests with a non-empty body — GET requests and empty-body POSTs are never deduped. Default: 0 (disabled). Only takes effect for a workflow set to run in the background (Active in the scheduler) — an ad-hoc 'Run' press always executes once per press.
methodstringNoOne of: GET, POST, PUT, ANY.
pathstringNoURL path (default /webhook)
portnumberNoPort to listen on (default 3456). In server/API mode, external traffic cannot reach 127.0.0.1 directly — a reverse proxy forwarding to this port is required.
secretstringNoOptional shared secret validated via x-webhook-secret header. This verifies the caller knows the secret but does NOT sign the request body — captured requests can be replayed verbatim. For integrations that send HMAC-SHA256 body signatures (Stripe, GitHub, etc.), verify the platform's native signature header (e.g. x-hub-signature-256) in a Code node immediately downstream rather than relying on this field alone.
timeout_secsnumberNoWait timeout (default 60)
validate_timestampbooleanNoWhen true, requires callers to include an 'x-webhook-timestamp' header containing a Unix timestamp (seconds). Requests older than 5 minutes are rejected, which reduces but does not eliminate the replay window — the timestamp is not cryptographically bound to the request body, so an attacker can replay with a captured secret and a fresh timestamp. For body integrity, verify a platform HMAC header (e.g. Stripe-Signature, X-Hub-Signature-256) in a downstream Code node. Default: false. Set to true to require timestamp headers (not compatible with GitHub, Stripe, or other platforms that do not send x-webhook-timestamp).

Output fields: body, files, headers, method, path.

AI nodes ​

AI Agent ​

ai_agent version 1.0.0

Give an AI model a set of tools it can invoke to complete a goal autonomously over multiple steps.

Ports. In: input (In), attachments (Files); Out: output (Done), on_error (Error).

FieldTypeRequiredNotes
goalstringYesWhat the agent should accomplish. Be specific and include constraints.
providerstringYesAI provider. OpenAI/Gemini: tool definitions are sent and tool requests returned. Anthropic: single reasoning pass, no tools. One of: openai, anthropic, gemini, local, auto.
api_keystringNoAPI key — resolved from Connections
base_urlstringNoAPI base URL (leave blank for default)
contextstringNoAdditional context to give the agent (from previous nodes, variables, etc.)
max_iterationsnumberNoNot used: the agent makes one call. Kept so saved workflows still load.
max_tokensnumberNoMaximum tokens per agent response (default: 2048). Higher values allow longer output but increase cost.
modelstringNoModel name. OpenAI: gpt-5.6. Anthropic: claude-sonnet-5. Gemini: gemini-3.6-flash.
systemstringNoSystem instructions for the agent's persona and behavior.
temperaturenumberNoCreativity (0.0-1.0). Agents work best at 0.2-0.5.
toolsstringNoJSON array of tool definitions. Each tool: {name, description, parameters}. Used with OpenAI-compatible and Gemini providers; the node returns the model's tool requests and does not run them. Anthropic ignores tools.

Output fields: awaiting_tools, finished, iterations, reasoning, result, tool_calls, truncated.

AI Memory ​

ai_memory version 1.0.0

Read from or write to persistent AI memory scoped per session, so the AI can remember past conversations — and, optionally, the files shared in them.

Ports. In: input (In); Out: output (Out).

FieldTypeRequiredNotes
operationstringYesread: get history as messages array. write: replace history. append: add a message. clear: delete all messages and files. forget_files: delete the session's remembered files but keep its messages. One of: read, write, append, clear, forget_files.
session_idstringYesUnique ID for this conversation thread, e.g. 'user_123' or 'support_chat'
contentstringNoMessage content (required for write/append)
filesstringNoFiles to remember with this message (write/append only). An expression that resolves to a files array, e.g. {{Webhook.output.files}}. Leave blank to store no files. Stored files stay on this device until the session is cleared, they are pruned, or you use forget_files.
include_filesbooleanNoReturn the session's remembered files in the output's 'files' array (read/append/write). Wire it to an AI node's Files port to show the model those files again. Off by default. The AI provider receives them again on every run that uses them.
max_filesnumberNoMost files returned when include_files is on, newest first (default: 5, maximum: 20). Only files attached to messages inside the max_messages window come back, up to 12 MiB in total.
max_messagesnumberNoMaximum messages to return on read (default: 20, newest first)
max_storednumberNoMaximum messages to retain in storage per session. Oldest rows are pruned after append if exceeded (default: 1000, minimum: 1).
max_stored_filesnumberNoMaximum files to retain per session. Oldest files are pruned after append if exceeded (default: 20, minimum: 1). A session never keeps more than 32 MiB of files, and each file is limited to 3 MiB.
rolestringNoMessage role (required for write/append) One of: user, assistant, system.

Output fields: count, files, files_omitted, files_removed, messages, session_id.

AI Prompt ​

ai_prompt version 1.0.0

Send a prompt to an AI model — Claude, GPT, Gemini, or a local Ollama model — and receive a reply.

Ports. In: input (In), attachments (Files); Out: output (Success), on_error (Error).

FieldTypeRequiredNotes
promptstringYesUser prompt
api_keystringNoAPI key — resolved from Connections
base_urlstringNoAPI base URL. Leave blank for OpenAI. Loopback and private-network addresses are allowed here, for local models such as Ollama.
max_tokensnumberNoMaximum response tokens. Default 2048. Higher values allow longer output but increase cost and latency. The ceiling that actually applies is set by the provider/model you select above, not by this node.
modelstringNoModel name — e.g. gpt-5.6, claude-sonnet-5, gemini-3.6-flash, llama3
providerstringNoAPI provider. 'auto' detects from base_url. One of: auto, openai, anthropic, gemini, local.
rate_limit_rpmnumberNoMax requests per minute. 0 = unlimited
systemstringNoSystem / persona instructions
temperaturenumberNoCreativity: 0.0 (precise) to 2.0 (creative). Default 0.7

Output fields: content, input_tokens, model, output_tokens, provider.

Image Generation ​

image_gen version 1.0.0

Generate images from a text prompt. Cloud: GPT Image 1/2 (OpenAI), Nano Banana/Gemini (Google), Flux Pro/2 Pro (BFL). Local: Automatic1111, ComfyUI.

Ports. In: input (In), reference_images (Reference Images); Out: output (Out).

FieldTypeRequiredNotes
providerstringYesProvider. gpt_image_1 recommended for cloud. a1111/comfyui for local inference. imagen4/nano_banana -> NanoBanana; dalle3 -> gpt-image-1 (legacy aliases). One of: gpt_image_1, gpt_image_2, flux_pro, flux_2_pro, imagen4, nano_banana, dalle3, a1111, comfyui.
api_keystringNoAPI key from Connections. OpenAI key for GPT Image; Google AI key for NanoBanana; BFL key for Flux. Not used for a1111 or comfyui.
aspect_ratiostringNoNanoBanana / Gemini only. Supported: 1:1 1:4 1:8 2:3 3:2 3:4 4:1 4:3 4:5 5:4 8:1 9:16 16:9 21:9. Default: 1:1
base_urlstringNoLocal provider base URL (a1111/comfyui). e.g. http://127.0.0.1:7860 for a1111, http://127.0.0.1:8188 for comfyui. May embed credentials: http://user:pass@host:port
cfg_scalenumberNoa1111 only. Classifier-free guidance scale (default 7.0).
heightnumberNoflux_pro: 256-1440 rounded to nearest 32. flux_2_pro: min 64. a1111: 64-2048 rounded to nearest 8. Not used by other providers. Default: 768 (flux_pro) / 1024 (flux_2_pro) / 512 (a1111)
modelstringNoNanoBanana / Gemini only. Default gemini-2.5-flash-image, which Google shuts down on March 15 2027. gemini-nano-banana-2.1 and gemini-3.1-flash-lite-image (1K images only) are Google's replacements; Google's docs do not confirm they work through this node's request, so a refusal comes back as an API error with Google's message. One of: gemini-2.5-flash-image, gemini-nano-banana-2.1, gemini-3.1-flash-lite-image.
nnumberNoImages to generate (1-4, default 1). GPT Image, NanoBanana and Flux send one request per image; a1111 sends one batch. Not used by comfyui: the workflow decides.
negative_promptstringNoa1111 only. Things to exclude from the image.
passwordstringNoa1111 only. Basic auth password. Overrides any password in base_url.
promptstringNoImage generation prompt. Required for every provider except comfyui, where the text lives in the workflow JSON.
qualitystringNoGPT Image only. Default: auto One of: auto, low, medium, high.
sizestringNoGPT Image only. gpt_image_1: 1024x1024|1536x1024|1024x1536|auto. gpt_image_2: WxH divisible by 16, or same presets. Default: 1024x1024
stepsnumberNoa1111 only. Sampling steps (1-150, default 20).
timeout_secondsnumberNoa1111 only. HTTP request timeout in seconds. Raise for large batch_size or high step counts on slower hardware. Default 300, max 1800 (30 min).
usernamestringNoa1111 only. Basic auth username. Overrides any username in base_url.
widthnumberNoflux_pro: 256-1440 rounded to nearest 32. flux_2_pro: min 64. a1111: 64-2048 rounded to nearest 8. Not used by other providers. Default: 1024 (a1111: 512)
workflowobjectNocomfyui only. Workflow in ComfyUI API format (export via Settings → Enable Dev Mode → Save API Format).

Output fields: count, files, source.

Text Splitter ​

text_splitter version 1.0.0

Split a long text into smaller chunks by characters, words, sentences, or paragraphs.

Ports. In: input (In); Out: output (Chunks).

FieldTypeRequiredNotes
textstringYesThe text to split into chunks
chunk_sizenumberNoMaximum size of each chunk (in the unit specified by mode), 1 or more. Default: 1000 chars / 200 words / 5 sentences / 3 paragraphs
extra_abbreviationsstringNoSentences mode only. Extra abbreviations whose dot does not end a sentence, separated by commas or new lines, e.g. 'Kap., Anm., o.ä.'. Not case-sensitive; the trailing dot is optional. Up to 200 entries of up to 20 letters or dots each.
modestringNoHow to split: chars (by character count), words, sentences, or paragraphs. Default: chars One of: chars, words, sentences, paragraphs.
overlapnumberNoHow much each chunk overlaps with the previous one (same unit as chunk_size). Overlap helps AI maintain context. Default: 100 chars / 20 words / 1 sentence / 0 paragraphs
source_fieldstringNoOptional: dot-path to a string field in the connected node's output, e.g. 'body' or 'content'. Fails if the field is not found. Overrides text.

Output fields: chunk_size, chunks, mode, overlap, total_chars, total_chunks.

Logic nodes ​

Collect Files ​

collect_files version 1.0.0

Gather files from multiple upstream sources into a single list for downstream processing.

Ports. In: input (Source); Out: output (Out). The ports depend on the config, so these are the defaults.

FieldTypeRequiredNotes
sourcesarrayNoSource slots — each has id, name, source_expr (auto-populated by canvas wire)

Output fields: count, files, source.

If / Condition ​

if_condition version 1.0.0

Branch the workflow on a condition. True paths go to one output, false to another. Set Left Value, Operator and Right Value, or write one Condition string. Text comparisons (==, !=, contains) ignore case; numbers compare numerically.

Ports. In: input (In); Out: on_true (True), on_false (False).

FieldTypeRequiredNotes
conditionstringNoCondition as one string, used when Left Value and Right Value are both blank. Examples: '{{temperature_2m}} > 20', '{{status}} == ok', '{{count}} >= 5', '{{tags}} contains urgent'. ==, != and contains ignore case.
lhsstringNoLeft Value. With Operator and Right Value, replaces Condition: each side is kept whole, so a value that contains '>' or ' contains ' is not misread.
opstringNoOperator for Left Value and Right Value. ==, != and contains ignore case; the others compare numbers. One of: ==, !=, >, >=, <, <=, contains.
rhsstringNoRight Value.

Loop (For Each) ​

loop version 2.0.0

Run a downstream branch once for each item in a list, then continue with the collected results.

Ports. In: input (In); Out: loop_body (Each Item), done (Done).

FieldTypeRequiredNotes
array_fieldstringYesDot-path to the array to iterate, e.g. 'items' or 'response.results'
source_nodestringYesNode ID to read the array from.
index_varstringNoVariable name for the current index (default: 'index')
item_varstringNoVariable name for the current item (default: 'item')
max_iterationsnumberNoStop after this many items instead of the full array (default: no limit — every item runs). 0 or blank also means no limit. Can only lower the bound: a value larger than the array, or larger than the 10,000-item cap, has no effect beyond the array's own length.

Output fields: all_results, done, index, item, items, total.

Merge ​

merge version 1.0.0

Wait for all incoming parallel branches to complete, then continue as a single execution path.

Ports. In: input (In); Out: output (Out).

FieldTypeRequiredNotes
modestringNoHow to combine inputs: object (keyed by node ID) or array (values only) One of: object, array.

Stop ​

stop version 1.0.0

End this branch of the workflow. Downstream nodes on this path will not run; other independent branches are unaffected.

Ports. In: input (In); Out: none.

FieldTypeRequiredNotes
reasonstringNoReason to log when stopping

Switch ​

switch version 1.0.0

Route the workflow to one of several branches based on a value match, like a switch statement. Matching is exact and case-sensitive; a field path can index arrays (items.0.status).

Ports. In: input (In); Out: case_1 (Case 1), case_2 (Case 2), case_3 (Case 3), case_4 (Case 4), case_5 (Case 5), case_6 (Case 6), case_7 (Case 7), case_8 (Case 8), default (Default).

FieldTypeRequiredNotes
casesstringYesJSON array of cases: [{"match": "ok", "port": "case_1"}, ...]. Matches are exact and case-sensitive.
fieldstringYesField path to switch on, e.g. status or response.code or items.0.status
source_nodestringYesNode ID to read field from
default_portstringNoPort to route to when no case matches (default: 'default')

Output fields: data, matched_case, value.

Utility nodes ​

Delay ​

delay version 1.0.0

Pause the workflow for a fixed duration before continuing to the next node.

Ports. In: input (In); Out: output (Out).

FieldTypeRequiredNotes
durationnumberNoHow long to wait Default: 1.
unitstringNoOne of: ms, s, m, h. Default: s.

Get Variable ​

get_variable version 1.0.0

Read a named workflow variable set earlier in the run by a Set Variable node.

Ports. In: input (In); Out: output (Out).

FieldTypeRequiredNotes
keystringYesVariable name to retrieve
defaultanyNoValue to return when the variable is not found (in this run, or in the DB if persist is true).
persistbooleanNoIf true, fall back to DB when variable not found in this run Default: false.

JSON ​

json version 1.0.0

Parse a JSON string into an object, or serialise an object into a JSON string.

Ports. In: input (In); Out: output (Out).

FieldTypeRequiredNotes
operationstringYesOne of: parse, stringify, extract, merge, array_get.
indexnumberNoArray index for array_get Default: 0.
input_textstringNoJSON string to parse
pointerstringNoJSON pointer e.g. /user/name or /0/temperature
source_nodestringNoNode ID whose output stringify, extract, merge and array_get read. Leave blank to read the whole run context (deprecated).

Output fields: result.

Output ​

output version 1.0.0

Mark the final output of the workflow. Required for the Chat Panel and the embeddable widget.

Ports. In: input (In); Out: output (Out).

FieldTypeRequiredNotes
fieldstringNoSpecific field to extract, e.g. 'content' or 'body.text'. Leave blank to show everything.
labelstringNoLabel shown above the result (default: 'Result')
source_nodestringNoNode ID to display output from. Leave blank to use incoming data.

Output fields: label, output_type, type, value.

Set Variable ​

set_variable version 1.0.0

Store a value in a named workflow variable accessible to downstream nodes via Get Variable or expressions.

Ports. In: input (In); Out: output (Out).

FieldTypeRequiredNotes
keystringYesVariable name
persistbooleanNoIf true, persist value to DB so it survives between runs Default: false.
valueanyNoValue to store (any JSON type)

Text to File ​

text_to_file version 1.0.0

Converts a text string into a file object. Use between AI Prompt and Save to Folder to write AI output to disk.

Ports. In: input (In); Out: output (Out).

FieldTypeRequiredNotes
contentstringYesText content to encode as a file
filenamestringNoOutput filename (default: output.<format>)
formatstringNoOutput format. Falls back to the filename extension, then 'txt', when omitted. pdf/docx produce real binary documents (headings rendered from leading #/##/###; docx also renders bold/italic); other formats pass the text through unchanged. PDF uses a built-in Latin-1 font: other characters (CJK, emoji) are replaced with '?' and reported in the node log. One of: txt, md, html, csv, json, pdf, docx.
mime_typestringNoMIME type (default: chosen from the format, e.g. text/csv for csv)

Output fields: files.

Transform Data ​

transform version 1.0.0

Reshape or extract data from the previous node's output using a template or expression.

Ports. In: input (In); Out: output (Out).

FieldTypeRequiredNotes
mappingsarrayYes
source_nodestringYesNode ID to pull output from

Wait ​

wait version 1.0.0

Pause the workflow for a fixed duration, or check a field once and route to Done (match) or Timed out (no match).

Ports. In: input (In); Out: output (Done), timed_out (Timed out).

FieldTypeRequiredNotes
modestringYesduration: wait a fixed time. condition: check once whether a value matches; routes to Done if it does, Timed out if not (no waiting). One of: duration, condition.
duration_secsnumberNoSeconds to wait (duration mode). Default 5.
expectedanyNoValue the field must equal to leave through Done (condition mode). "200" matches 200 and "true" matches true; a missing or null field never matches.
fieldstringNoDot-path into upstream node outputs to check, e.g. 'node_http.status' (condition mode).
poll_interval_secsnumberNoNo longer used. Kept so saved workflows load; the condition is checked once.
timeout_secsnumberNoNo longer used. Kept so saved workflows load; a condition that does not match routes to Timed out immediately.

Output fields: mode, timed_out, waited_ms.