Workflow Builder Guide
The Workflow Builder is a visual drag-and-drop editor for creating processing pipelines.
Nodes
Nodes are the building blocks of workflows. Each node performs one operation.
Node Types
- Input Nodes (blue) — select files to process
- Process Nodes (purple) — apply transformations (resize, texture generation, 3D conversion, etc.)
- Output Nodes (green) — define where results go
- Logic Nodes — conditional branching (If/Else, Switch, Split)
Adding Nodes
- Node Library (left panel) — browse by category, search by name
- Drag and Drop — drag a node from the library onto the canvas
- Context Menu — right-click a connection to insert a node inline
Connecting Nodes
Click an output port and drag to an input port. The builder validates connections — incompatible types show a warning.
Execution
Single Run
Click Run with files selected on input nodes.
Batch Mode
Select multiple files on an input node. Each file is processed independently through the workflow.
Monitoring
- Per-run progress bar with rolling ETA based on the scheduler's prediction model (refines as upstream nodes finish).
- Click any running node to open its live log tail (streamed from Redis as the worker writes).
- Failed nodes show the error message inline; retry / skip / cancel options surface on hover.
- Long-running batches show per-file status in the Build queue panel — open it from the canvas toolbar at any time.
Saving & Loading
- Save — saves the current workflow version
- Save As — creates a copy with a new name
- Load — browse your saved workflows and versions
- Import/Export — share workflows as JSON files
Edit Node Definitions
Click Edit (pencil icon) in the toolbar to manage node definitions:
- View all registered nodes
- See hardware variant build status
- Trigger calibration runs (
POST /node_definitions/{id}/calibrate) - Delete custom nodes
Automate it (API)
Anything you build visually can be driven over the API. A workflow is versioned — you run a specific version id.
BASE=https://dev-api.modtechlabs.com
# Get a Bearer token from your sk_ key (see /api-reference#authentication)
TOKEN=$(curl -s -X POST "$BASE/api-keys/token" -H "Content-Type: application/json" \
-d '{"api_key": "sk_your_key_here"}' | jq -r .access_token)
AUTH="Authorization: Bearer $TOKEN"
# Export a workflow as a ZIP bundle (back it up, diff it, or move it between tenants)
curl -s "$BASE/workflows/7/export" -H "$AUTH" -o my-workflow.zip
# Import that ZIP elsewhere (multipart upload)
curl -s -X POST "$BASE/workflows/import-zip" -H "$AUTH" \
-F "file=@my-workflow.zip"
# Run a saved version against input files
curl -s -X POST "$BASE/workflows/workflow-versions/42/run" -H "$AUTH" \
-H "Content-Type: application/json" -d '{"cog_ids": [123]}'
See Getting Started → Quickstart with the API for the full upload → run → poll → download loop in Python and JavaScript.
Versions
Every Save creates a new version of the workflow; Save As makes a copy under a new name. You can Load any saved workflow and pick an earlier version to open or run. (There's no in-place "rollback" button — load the older version and save it forward if you want to revert.)