Technical docs

Workflows

Overview

Support reference for organization-owned workflows at `/workflows`.

Routes

  • Library route: `/workflows`
  • Shared editor route: `/skills/[workflow_id]?from=workflows`
  • Shared runs route: `/skills/[workflow_id]/runs?from=workflows`
  • Sidebar/menu label: `Workflows`

Library page

  • Page title: `Workflows`
  • Description: `Create, manage, and monitor automated workflows`
  • Primary action: `Add`
  • Empty state:
  • title: `No workflows`
  • description: `Create your first workflow to get started.`

Table behavior

  • The page reuses the shared skills table hook with `no_employee=true`, so it only lists workflows where `employee_id` is `null`.
  • Search is server-side and is sent as `search` to `GET /api/organizations/{orgId}/workflows`. In backend code that currently filters by workflow `name`.
  • Pagination is server-side.
  • Date chips labeled `Added` and `Updated` are client-side only. They filter the rows already loaded on the current page; they are not sent to the backend.
  • Available columns:
  • `ID`
  • `Name`
  • `Description`
  • `Added`
  • `Updated`
  • `ID` is hidden by default. `Added` is also hidden by default on desktop; mobile hides more columns.
  • Row click opens the shared editor.
  • Row actions:
  • `Logs` -> `/skills/{workflow_id}/runs?from=workflows`
  • `Delete`
  • Bulk action:
  • `Delete`
  • Export is enabled.

Create flow

  • Dialog title: `New Workflow`
  • Fields:
  • workflow name
  • optional description
  • Create always sends `type: structured`.
  • The current dialog does not let users assign an AI teammate or choose an agent workflow type.
  • After create succeeds, the UI redirects straight into the shared editor for that workflow.

Shared editor behavior

  • `/workflows` opens the same `/skills/[workflow_id]` editor used elsewhere, with `from=workflows` for back-navigation.
  • The page opens in read-only mode first.
  • Header actions are currently:
  • `Back to Workflows`
  • `View Runs`
  • `Edit`
  • In edit mode:
  • draft changes auto-save to `PUT /api/organizations/{orgId}/workflows/{workflow_id}/draft` after a 1 second debounce
  • `Reset Draft` clears the saved draft by updating the workflow with `draft: null`
  • `Publish` validates the graph and publishes `flow`, `starting_step_id`, `payload_format`, `state_definition`, `mode`, `debounce_seconds`, and `debounce_key`
  • closing edit mode flushes any pending draft save and resets the canvas back to the published flow

Builder scope

  • Org workflows created from `/workflows` are structured workflows.
  • The current structured builder palette exposes:
  • `Run Skill`
  • `Assign AI`
  • `Condition`
  • `Tool`
  • `Run Code`
  • `User Input`
  • `LLM`
  • `Send Message`
  • `Finish`
  • grouping/support nodes such as `Starting Step` and `Group`
  • Backend workflow types still include `mapping` and `wait_callback`, but those node types are not in the current frontend palette and are not runnable in the processor.

API behavior

  • Library list:
  • `GET /api/organizations/{orgId}/workflows?no_employee=true&page=<n>&limit=<n>&search=<text>`
  • Create:
  • `POST /api/organizations/{orgId}/workflows`
  • Delete and restore:
  • `DELETE /api/organizations/{orgId}/workflows/{workflow_id}/`
  • `POST /api/organizations/{orgId}/workflows/bulk-delete/`
  • `POST /api/organizations/{orgId}/workflows/bulk-restore/`
  • Shared editor:
  • `GET /api/organizations/{orgId}/workflows/{workflow_id}/`
  • `PUT /api/organizations/{orgId}/workflows/{workflow_id}/`
  • `PUT /api/organizations/{orgId}/workflows/{workflow_id}/draft`
  • `POST /api/organizations/{orgId}/workflows/{workflow_id}/publish`
  • Runs surfaces:
  • `GET /api/organizations/{orgId}/workflows/{workflow_id}/runs/`
  • `POST /api/organizations/{orgId}/workflows/{workflow_id}/runs/`
  • `GET /api/organizations/{orgId}/workflows/{workflow_id}/runs/{run_id}/`

Permissions

  • Workflow actions are organization-scoped and authorized by backend checks.

Start building your AI team