API Reference
Error Responses
All endpoints return errors in a consistent format:200- Success201- Created202- Accepted (async operation started)400- Bad Request (invalid input)401- Unauthorized (missing or invalid token)404- Not Found500- Internal Server Error
Pagination
Endpoints that return lists support pagination via query parameters:| Parameter | Default | Max | Description |
|---|---|---|---|
offset | 0 | - | Number of records to skip |
limit | 20 | 10000 | Maximum records to return |
Cron Expression Reference
Schedules use standard cron expressions:0 2 * * *- Every day at 2:00 AM0 0 * * 0- Every Sunday at midnight*/30 * * * *- Every 30 minutes0 9-17 * * 1-5- Every hour from 9 AM to 5 PM, Monday to Friday
Workflow Step Types
Reference documentation for workflow step types used in YAML workflow definitions.bash
Execute shell commands on the local system or configured runner.| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Unique step name |
type | string | Yes | Must be bash |
command | string | No* | Single command to execute |
commands | array | No* | Sequential commands |
parallel_commands | array | No* | Commands to run in parallel |
timeout | int | No | Timeout in seconds |
log | string | No | Log message displayed during execution |
pre_condition | string | No | Condition that must be true to run |
exports | map | No | Variables to export after execution |
command, commands, or parallel_commands is required.
function
Execute utility functions written in JavaScript via Otto VM.| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Unique step name |
type | string | Yes | Must be function |
function | string | No* | Single function to execute |
functions | array | No* | Sequential functions |
parallel_functions | array | No* | Functions to run in parallel |
function, functions, or parallel_functions is required.
parallel-steps
Run multiple steps concurrently.| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Unique step name |
type | string | Yes | Must be parallel-steps |
parallel_steps | array | Yes | Array of steps to run concurrently |
foreach
Iterate over items from a file or array.| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Unique step name |
type | string | Yes | Must be foreach |
input | string | Yes | File path or array to iterate over |
variable | string | Yes | Loop variable name (use [[variable]]) |
step | object | Yes | Step to execute for each item |
parallel | int | No | Number of parallel iterations |
remote-bash
Execute commands in Docker containers or via SSH.| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Unique step name |
type | string | Yes | Must be remote-bash |
step_runner | string | Yes | docker or ssh |
step_runner_config | object | No | Runner-specific configuration |
command | string | No* | Command to execute |
commands | array | No* | Sequential commands |
http
Make HTTP requests and capture responses.| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Unique step name |
type | string | Yes | Must be http |
url | string | Yes | Request URL |
method | string | No | HTTP method (default: GET) |
headers | map | No | Request headers |
request_body | string | No | Request body for POST/PUT |
timeout | int | No | Timeout in seconds |
<step_name>_status_code- HTTP status code<step_name>_body- Response body<step_name>_headers- Response headers
llm
Execute LLM (Large Language Model) API calls for AI-powered analysis.| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Unique step name |
type | string | Yes | Must be llm |
messages | array | No* | Chat messages (role + content) |
is_embedding | bool | No | Set to true for embeddings |
embedding_input | array | No* | Strings to embed |
llm_config | object | No | Step-level LLM configuration |
tools | array | No | Tool definitions for function calling |
tool_choice | string | No | Tool selection (auto, none, etc.) |
extra_llm_parameters | map | No | Additional provider-specific params |
timeout | int | No | Timeout in seconds |
messages or embedding_input (with is_embedding: true) is required.
Message Format:
<step_name>_llm_resp- Full response object (id, model, usage, content, tool_calls)<step_name>_content- Just the content string for easy access