Concepts
Built-in nodes
25 nodes ship with the platform. Each one is data plus behavior — the editor renders its form automatically.
Triggers
| Type id | What it does |
|---|---|
trigger.manual | Starts a run from the editor or POST /workflows/:id/run. |
trigger.webhook | Starts active workflows on POST /api/hooks/:path — outputs { body, headers, query }. |
trigger.schedule | Starts active workflows on a cron schedule in any IANA timezone — outputs { cron, timezone, scheduledFor, firedAt }. |
Logic & flow
| Type id | What it does |
|---|---|
logic.condition | Routes items to the true or false output. |
logic.delay | Pauses a branch for a duration (up to 120 s); cancellation-aware. |
logic.approval | Pauses the run until a person approves or rejects it — see Human approval. |
workflow.call | Runs another saved workflow to completion and returns its output. |
logic.loop | Runs another saved workflow once per item in a list and collects the outputs in order. |
Data & code
| Type id | What it does |
|---|---|
data.set | Sets, renames and composes fields with expressions. |
code.javascript | Runs JavaScript over the inputs — $json is the first input, return the output. |
http.request | Calls any HTTP API; honors per-node timeout and retries. |
postgres.query | Parameterized SQL against a Postgres database. |
s3.object | Put, get or delete an object in S3 or any S3-compatible store. |
AI
| Type id | What it does |
|---|---|
ai.generate | Text generation through the AI Router — auto or a pinned model; reports model, tokens and cost. |
ai.compare | One prompt to two models, compared side by side on output, cost and latency. |
ai.ensemble | One prompt across several models, combined as all results, first success or majority vote. |
memory.store | Saves text into a memory namespace — see Memory & RAG. |
memory.recall | Semantic search over a memory namespace. |
rag.ingest | Parses, chunks and indexes a document into a knowledge base. |
rag.query | Hybrid search over a knowledge base, returning cited chunks. |
Integrations
| Type id | What it does |
|---|---|
slack.send | Posts a Slack message through a bot. |
telegram.send | Sends a Telegram message through a bot. |
email.send | Sends an email over SMTP. |
github.request | Calls the GitHub REST API. |
sheets.append | Appends rows to a Google Sheet (needs an access token with the spreadsheets scope). |
Credentials
Nodes that talk to other systems — postgres.query, email.send, github.request, sheets.append, s3.object, slack.send, telegram.send — take an optional Credential. An admin stores the secret once with POST /api/credentials; it is encrypted at rest and decrypted only inside the run, so workflows reference it by id and never carry passwords or tokens in their definition.
How nodes work
A node is a declarative description — its palette entry and parameter form — plus an execute function. Because the parameters are data, DirectStudio renders every node’s configuration form automatically. The full catalog, with every parameter, is available at GET /api/node-types.