Steps
What each step type does and what its fields expect
A step is one action in a workflow. Every step's config fields accept
{{ <stepId>.<path> }} expressions that resolve against the trigger input and
every prior step's output — see Expressions.
Add a step
- Open the workflow's canvas.
- Click the + on a step's handle and pick the step type.
- Click the step and fill in its fields. The sections below say what each type expects.
Step types
HTTP Request
Calls any URL and returns its response.
| Field | Notes |
|---|---|
url |
required |
method |
defaults to GET |
headers |
object |
body |
sent as JSON when present |
Its output has three parts you can reference in later steps: status (the
response's status code), ok (true if the request succeeded), and body
(the response itself — read as JSON automatically when that's what came
back, otherwise left as plain text). An error response doesn't stop the
workflow on its own; add a Condition step after it to branch on status or
ok.
API Call
Calls one operation of an API you've connected by its OpenAPI (3.x)
definition — set up on the Connections page, by URL or
pasted JSON/YAML. Pick the connection, then the operation (METHOD /path — summary); Alur builds the request from the spec, including auth, so
nothing but the operation's own parameters and body need filling in.
| Field | Notes |
|---|---|
connectionId |
which connection to call |
operationId |
which operation on that connection |
params |
the operation's path/query/header parameters |
body |
the operation's request body fields, when they're a flat set of primitive properties |
bodyText |
raw JSON body instead, when the operation's body doesn't fit that shape |
Its output works the same way as HTTP Request's: status, ok, and body.
See Connections for which login methods are supported
and how refreshing a connection affects steps that use it.
Zernio
Posts to a social account or replies to a comment through your Zernio connection. A rejected request (bad key, platform rule, duplicate content) fails the step instead of returning data. See Zernio for the actions, their fields and how failures and retries work.
Send Email
Sends an email from your own verified domain through the email connection you choose in the step (a Resend connection). A rejected request (invalid key, unverified domain, invalid address) fails the step instead of returning data. See Send Email for the fields and how failures and retries work.
Mayar
Creates an invoice with a payment link, or reads an invoice, through your Mayar (Payment) connection. A request Mayar refuses fails the step, and Create invoice is never retried automatically. See Mayar payments.
AI Text
Sends a prompt to an AI model through your OpenAI-compatible
connection and returns the text it writes as {{ step.text }}. A rejected
request or an empty reply fails the step instead of returning data. See
AI Text for the fields and how failures and billing work.
AI Image
Sends a prompt to an AI image model through your OpenAI-compatible
connection and saves the picture to your Media library. The step returns
{{ step.fileId }}, which a Posting step can publish. A rejected request or a
reply with no image fails the step instead of returning data. See
AI Image for the fields and how failures and billing work.
AI Video
Sends a prompt to an AI video model through an OpenRouter, Higgsfield or HeyGen
connection, waits for the provider to finish (usually a few minutes), and saves
the video to your Media library. The step returns {{ step.fileId }}. A
rejected request, a refused job or a timeout fails the step instead of returning
data. See AI Video for the fields, how waiting works and how
billing works.
Posting
Publishes text and images to one or more social accounts through your Zernio connection. It is the simpler alternative to the Zernio step's Post action. See Posting.
Database
Adds, finds, updates or deletes rows in one of your tables. See Database step.
Condition
Branches the workflow. Downstream edges from a Condition step are followed
depending on which handle they're connected from — true or false.
| Field | Notes |
|---|---|
left |
value or expression |
operator |
equals, not_equals, greater_than, less_than, contains |
right |
value or expression |
Its output is a single true/false result.
For each
Repeats the steps connected to it once for every item in a list. See For each step.
Approval
Pauses the run, emails a private link, and continues on Approved or Rejected when the person decides (or on Rejected when the time limit passes). See Approval step.
Delay
Pauses the workflow for a fixed duration before continuing to the next step.
| Field | Notes |
|---|---|
duration |
e.g. "30s", "5m", "2h", "1d"; defaults to "1m" |
Call Workflow
Fires another one of your own published workflows and moves on immediately — it doesn't wait for the target to finish, and nothing the target produces flows back into this run.
| Field | Notes |
|---|---|
workflowId |
the target workflow — must be one of your own, published at least once, not paused, and can't create a cycle (itself, or any workflow already in this call's chain — A calling B calling A included) |
params |
filled in against the target's trigger input fields |
Its output is the new run's ID, so you can look it up later — the step itself doesn't wait for that run to finish or read anything back from it.

