stepIQ

Pipeline Format

Pipelines are defined in YAML or JSON. Each pipeline has a name, optional variables, an input schema, a list of steps, and output delivery configuration.

You can validate any pipeline definition without saving it using POST /api/pipelines/validate

Pipeline definition

The top-level fields of a pipeline definition:

FieldTypeRequiredDescription
namestringYesPipeline name, used in logs and UI
descriptionstringNoHuman-readable description
versionintegerYesSchema version (currently 1)
variablesobjectNo'Global variables accessible via <code>{{vars.xxx}}</code>'
inputobjectNoInput schema for trigger-time data
stepsarrayYesOrdered list of pipeline steps

Step types

Each step in a pipeline has a type that determines how it executes. The default type is llm.

TypeDescription
llmDefault. Sends prompt to a model and returns text output.
transformNo model call. Manipulate data with JSON extract, regex, or templates.
conditionBranch based on previous step output.
parallelRun multiple steps concurrently and merge results.
webhookCall an external HTTP endpoint.
human_reviewPause pipeline and wait for human approval before continuing.
codeRun sandboxed Python or JavaScript code on the output.

Variable interpolation

Use Handlebars-like syntax to reference data in prompts and configurations. Variables are resolved at execution time.

SyntaxDescription
{{input.xxx}} Trigger-time inputs from the user
{{vars.xxx}} Pipeline-level global variables
{{steps.<id>.output}} Full output from a previous step
{{steps.<id>.output.field}} JSON field access on step output
{{env.xxx}} User-defined encrypted secrets
{{#if condition}}...{{/if}} Conditional blocks (Handlebars-like)

Output delivery

Configure where the final pipeline output gets delivered. Multiple delivery targets can be specified.

If input.schema is defined, inbound webhook payloads are validated and invalid payloads are rejected with 422.

For outbound webhooks, add signing_secret_name so receivers can verify signatures.

output:
  from: summarize
  deliver:
    - type: webhook
      url: https://example.com/stepiq/webhook
      method: POST
      signing_secret_name: WEBHOOK_SIGNING_SECRET

Webhook

POST to any URL with a signed JSON envelope. Set signing_secret_name on the delivery target and store the secret in user or pipeline secrets.

Email

Send output via email with configurable subject and recipients.

API Response

Return output directly in the API response body.