Workflows

sim workflows is also spelled sim workflow.

Every command below also accepts the global options.

Activate workflow version

sim workflows activate create <workflowId> <version> [options]

Activate Workflow Version (personal API key required)

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.
versionYesNumeric deployment version.

Options

OptionRequiredDescription
-y, --yesYesConfirm this operation.

Apply workflow operations

sim workflows operations apply <workflowId> [options]

Apply Workflow Operations (personal API key required)

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Options

OptionRequiredDescription
--dry-runNoValidate and lint without persisting. The response is identical to the committed write of the same body, so a caller can inspect lint and then re-send the request for real. Nothing is written, no audit entry is recorded, and collaborators are not notified.
--no-dry-runNoSend --dry-run as false.
--operations <json|@file>YesEdits to apply, in a single batch, keyed by operation_type: [{"operation_type":"add","block_id":"my-fn","params":{"type":"function","name":"My Fn","inputs":{"code":"return {ok:true}"}}},{"operation_type":"edit","block_id":"<uuid>","params":{"name":"Renamed","connections":{"success":"my-fn"}}},{"operation_type":"delete","block_id":"<uuid>"}]. Also extract_from_subflow, whose params carry {"subflowId":"<loop-id>"}, and insert_into_subflow, which creates a block and so takes an add’s params plus that subflowId (JSON, or @path / @- to read a file or stdin).
--atomicNoFail the whole batch when any operation is declined or any block input would be dropped. The default applies what it can and reports the rest in skipped and inputValidationErrors; true writes nothing and answers 409 instead.
--no-atomicNoSend --atomic as false.
--layout <value>NoWhether to reposition blocks the batch touched. targeted (default) nudges only the affected subgraph; none leaves every position exactly as supplied. Accepted values: targeted, none.
--set-block-enabled <json|@file>NoBlocks to enable or disable, applied after --operations: [{"block_id":"<uuid>","enabled":false}]. Disabling a loop or parallel cascades to its unlocked descendants; enabling a block whose container is disabled is declined (JSON, or @path / @- to read a file or stdin).
-y, --yesNoConfirm this operation (required unless --dry-run).

Update workflow variables

sim workflows variables update <workflowId> [options]

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Options

OptionRequiredDescription
--operations <json|@file>YesVariable changes to apply in order, keyed by operation: [{"operation":"add","name":"my_var","type":"string","value":"hello"},{"operation":"edit","name":"my_var","value":"updated"},{"operation":"delete","name":"my_var"}] (JSON, or @path / @- to read a file or stdin).
-y, --yesYesConfirm this operation.

Cancel a running workflow run

sim workflows runs cancel <runId> [options]

Arguments

ArgumentRequiredDescription
runIdYesUnique workflow run identifier.

Options

OptionRequiredDescription
--workflow <workflowId>YesWorkflow ID.

Show run status

sim workflows runs get <runId> [options]

Show run status (requested outputs are included in JSON or YAML output)

Arguments

ArgumentRequiredDescription
runIdYesUnique workflow run identifier.

Options

OptionRequiredDescription
--workflow <workflowId>YesWorkflow ID.
--include-outputNoInclude the final output in JSON or YAML output.
--select-output <value...>NoInclude blockId or blockId.path values in JSON or YAML output; block names are not resolved on a finished run (space-separated, or @path / @- with one value per line; @@value for a literal leading @).
--include-file-base64NoInline each produced file's bytes as base64. Requires includeOutput. A file above the inline ceiling answers 413 naming its download path; fetch large files from downloadPath instead.
--no-include-file-base64NoSend --include-file-base64 as false.
--base64-max-bytes <value>NoPer-file inline ceiling, lowering but never raising the server limit of 16 MiB.

List runs for a workflow

sim workflows runs list [options]

Options

OptionRequiredDescription
--workflow <workflowId>YesWorkflow ID.
--status <value>NoFilter by run status. Accepted values: pending, running, completed, failed, cancelled, paused.
--trigger <value>NoFilter by trigger type.
--start-date <value>NoOnly include runs started at or after this UTC ISO 8601 timestamp, e.g. 2026-08-06T00:00:00Z. A date without a time, or a timestamp carrying a UTC offset instead of Z, is rejected, as is year 0000, which names no storable instant.
--end-date <value>NoOnly include runs started at or before this UTC ISO 8601 timestamp, e.g. 2026-08-06T00:00:00Z. A date without a time, or a timestamp carrying a UTC offset instead of Z, is rejected, as is year 0000, which names no storable instant.
--limit <n>NoMaximum items to return (0 for everything). Defaults to 100.
--order <value>NoSort direction by run start time. This list is sortable only by run start time, so it takes order in place of sortBy/sortOrder, which it rejects. Accepted values: asc, desc.

Resume a paused run

sim workflows runs resume <runId> [options]

Resume a paused run (output is included in JSON or YAML output)

Arguments

ArgumentRequiredDescription
runIdYesUnique workflow run identifier.

Options

OptionRequiredDescription
--workflow <workflowId>YesWorkflow ID.
--context <value>YesPause context ID returned by run status.
--input <json|@file>NoResume input as JSON (JSON, or @path / @- to read a file or stdin).

Wait for a run to reach a terminal state, then show it

sim workflows runs wait <runId> [options]

Arguments

ArgumentRequiredDescription
runIdYesUnique workflow run identifier.

Options

OptionRequiredDescription
--workflow <workflowId>YesWorkflow ID.
--wait-timeout <seconds>NoGive up after this many seconds, or 0 to wait indefinitely (default: 3600). Bounds the whole wait; SIM_TIMEOUT_SECONDS bounds one request.

Create workflow

sim workflows create [options]

Options

OptionRequiredDescription
--name <value>YesWorkflow name.
--description <value>NoOptional workflow description.
--folder <value>NoFolder path as shown in the app; the leading / is optional.

Create a workflow folder at a path

sim workflows folders create <path>

Arguments

ArgumentRequiredDescription
pathYesFolder path as shown in the app; the leading / is optional

Delete workflow folder

sim workflows folders delete <path> [options]

Arguments

ArgumentRequiredDescription
pathYesFolder path as shown in the app; the leading / is optional

Options

OptionRequiredDescription
--recursiveNoDelete the folder and its descendants.
-y, --yesYesConfirm this operation.

List workflow folders

sim workflows folders list [options]

Also available as sim workflows folders ls.

Options

OptionRequiredDescription
--parent <value>NoDirect parent folder path.
--search <value>NoCase-insensitive substring match against the folder name.
--sort-by <value>NoField used to sort the result. Sorting by name is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: name, createdAt, updatedAt.
--sort-order <value>NoSort direction. Accepted values: asc, desc.

Rename or move a workflow folder

sim workflows folders move <path> <destination>

Also available as sim workflows folders mv.

Arguments

ArgumentRequiredDescription
pathYesFolder path as shown in the app; the leading / is optional
destinationYesFolder path as shown in the app; the leading / is optional

Delete workflow

sim workflows delete <workflowId> [options]

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Options

OptionRequiredDescription
-y, --yesYesConfirm this operation.

Take a workflow’s chat deployment offline

sim workflows chat unpublish <workflowId> [options]

Take a workflow’s chat deployment offline (personal API key required)

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Options

OptionRequiredDescription
-y, --yesYesConfirm this operation.

Show a workflow’s chat deployment

sim workflows chat status <workflowId>

Show a workflow’s chat deployment (personal API key required)

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Publish or replace a workflow’s chat deployment

sim workflows chat publish <workflowId> [options]

Publish or replace a workflow’s chat deployment (personal API key required)

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Options

OptionRequiredDescription
--identifier <value>YesURL slug the deployed chat answers on. Must be free across live deployments.
--title <value>YesTitle shown to visitors.
--description <value>NoDescription shown to visitors. Omitted clears it.
--customizations <json|@file>NoPresentation overrides. Omitted fields take platform defaults. (JSON, or @path / @- to read a file or stdin).
--auth-type <value>NoHow visitors are gated. public leaves the chat open to anyone holding the URL. Accepted values: public, password, email, sso.
--password <value>NoWrite-only password. Required whenever authType is password, and rejected otherwise. Never readable back.
--allowed-emails <json|@file>NoEmail addresses or domains admitted under email and sso gating. At least one is required for those modes. (JSON, or @path / @- to read a file or stdin).
--output-configs <json|@file>NoBlock outputs to surface to visitors. Omitted surfaces none. (JSON, or @path / @- to read a file or stdin).
--include-thinkingNoAllow visitors to receive provider thinking events.
--no-include-thinkingNoSend --include-thinking as false.
--include-tool-callsNoAllow visitors to receive tool lifecycle events.
--no-include-tool-callsNoSend --include-tool-calls as false.
-y, --yesYesConfirm this operation.

Deploy workflow

sim workflows deploy <workflowId> [options]

Deploy Workflow (personal API key required)

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Options

OptionRequiredDescription
--name <value>NoOptional label for the deployment version.
--description <value>NoOptional release note for the deployment version.

Duplicate workflow

sim workflows duplicate create <workflowId> [options]

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Options

OptionRequiredDescription
--name <value>NoName for the copy. Defaults to the source name, deduplicated within the folder.
--folder <value>NoFolder path as shown in the app; the leading / is optional.

Run a deployed workflow or execute saved state manually

sim workflows run <workflowId> [options]

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Options

OptionRequiredDescription
--input <json|@file>NoTrigger input as JSON (JSON, or @path / @- to read a file or stdin).
--asyncNoQueue the run and return immediately.
--execution-timeout-seconds <value>NoRequested server-side timeout for an asynchronous run, in seconds. An upper bound, not the effective timeout: the run uses the smaller of this value and the plan's execution timeout, so requesting more than the plan allows silently yields the plan timeout. Rejected with 400 unless async is true.
--select-output <value...>NoReturn streamed outputs as blockName.path or childWorkflowId.blockName.path; selecting a child workflow applies to every invocation, requires --follow (space-separated, or @path / @- with one value per line; @@value for a literal leading @).
--include-file-base64NoInline eligible output files as base64 content. Rejected when async is true.
--no-include-file-base64NoSend --include-file-base64 as false.
--base64-max-bytes <value>NoMaximum total bytes of file content to inline as base64, lowering but never raising the server limit of 16 MiB. Rejected when async is true.
--run-id <value>NoOne-shot identifier for this run; NOT an idempotency key — reusing a claimed value fails with RUN_ID_CONFLICT instead of replaying the first result, and a fresh value starts another run.
--manualNoRun the current saved workflow state instead of the active deployment.
--trigger <blockId>NoEnter a manual run through this runnable trigger (requires --manual).
--mock-payloadNoUse the selected trigger's server-derived mock payload (requires --manual).
--from-block <blockId>NoRun manually from this saved workflow block.
--source-run <runId>NoPrior run whose persisted state supplies upstream outputs (requires --from-block).
--followNoStream the run as it happens; progress on stderr, result on stdout. The stream reports only success and output, so the result omits the run id and timings a non-streaming run returns.
--include-thinkingNoShow model reasoning while following (requires --follow).
--include-tool-callsNoShow tool calls while following (requires --follow).
sim workflows export <workflowId>

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Get workflow

sim workflows get <workflowId>

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Show a workflow’s current deployment

sim workflows deployment status <workflowId>

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Update workflow public API access

sim workflows deployment update <workflowId> [options]

Update Workflow Public API Access (personal API key required)

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Options

OptionRequiredDescription
--is-public-api <true|false>YesWhether the deployed workflow should accept unauthenticated public API execution. Accepted values: true, false.

Get workflow state

sim workflows state get <workflowId>

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Replace workflow state

sim workflows state replace <workflowId> [options]

Replace Workflow State (personal API key required)

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Options

OptionRequiredDescription
--dry-runNoValidate and lint without persisting. The response is identical to the committed write of the same body, so a caller can inspect lint and then re-send the request for real. Nothing is written, no audit entry is recorded, and collaborators are not notified.
--no-dry-runNoSend --dry-run as false.
--blocks <json|@file>YesBlocks keyed by block id. (JSON, or @path / @- to read a file or stdin).
--edges <json|@file>YesDirected connections between blocks. (JSON, or @path / @- to read a file or stdin).
--loops <json|@file>NoIgnored on write: loop containers are recomputed from blocks. (JSON, or @path / @- to read a file or stdin).
--parallels <json|@file>NoIgnored on write: parallel containers are recomputed from blocks. (JSON, or @path / @- to read a file or stdin).
--variables <json|@file>NoReplacement variable set. Omit to leave the stored variables untouched. (JSON, or @path / @- to read a file or stdin).
-y, --yesNoConfirm this operation (required unless --dry-run).

Get workflow version

sim workflows versions get <workflowId> <version>

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.
versionYesNumeric deployment version.

List workflow versions

sim workflows versions list <workflowId> [options]

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Options

OptionRequiredDescription
--limit <n>NoMaximum items to return (0 for everything). Defaults to 100.

Update workflow version

sim workflows versions update <workflowId> <version> [options]

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.
versionYesNumeric deployment version.

Options

OptionRequiredDescription
--name <value>NoNew label for the deployment version.
--description <value>NoNew release note for the deployment version, or null to clear it. (--description null sends the word, not JSON null).

Import workflow

sim workflows import [options]

Options

OptionRequiredDescription
--workflow <json|@file>YesWorkflow export object, bare workflow state, or JSON string containing either form. (JSON, or @path / @- to read a file or stdin).
--folder <value>NoFolder path as shown in the app; the leading / is optional.
--name <value>NoOverride for the imported workflow name.
--description <value>NoOverride for the imported workflow description.

List workflows

sim workflows list [options]

Options

OptionRequiredDescription
--scope <value>NoWhich lifecycle set to list: active (default) for live workflows, archived for workflows a DELETE archived. The folder filter resolves against active folders only, so pairing it with archived returns an empty page when the containing folder was archived too. Accepted values: active, archived.
--folder <value>NoFolder path as shown in the app; the leading / is optional.
--deployed-onlyNoReturn only workflows with an active deployment when true.
--no-deployed-onlyNoSend --deployed-only as false.
--limit <n>NoMaximum items to return (0 for everything). Defaults to 100.
--search <value>NoCase-insensitive substring match against the resource name.
--sort-by <value>NoField used to sort the result. Sorting by name is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: position, name, createdAt, updatedAt, runCount.
--sort-order <value>NoSort direction. Accepted values: asc, desc.

Move workflows

sim workflows move [options]

Options

OptionRequiredDescription
--workflow <value...>YesWorkflows to move. Duplicates are collapsed. (space-separated, or @path / @- with one value per line; @@value for a literal leading @).
--to <value>YesDestination folder path; / moves the workflows to the workspace root.

Restore an archived workflow

sim workflows restore <workflowId>

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Revert workflow to version

sim workflows revert create <workflowId> <version> [options]

Revert Workflow To Version (personal API key required)

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.
versionYesNumeric deployment version, or active for the currently live version.

Options

OptionRequiredDescription
-y, --yesYesConfirm this operation.

Rollback workflow

sim workflows rollback <workflowId> [options]

Rollback Workflow (personal API key required)

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Options

OptionRequiredDescription
--to-version <value>NoDeployment version to reactivate. Omit to select the previous active version.
-y, --yesYesConfirm this operation.

Take a workflow out of deployment

sim workflows undeploy <workflowId> [options]

Take a workflow out of deployment (personal API key required)

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Options

OptionRequiredDescription
-y, --yesYesConfirm this operation.

Update workflow

sim workflows update <workflowId> [options]

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Options

OptionRequiredDescription
--name <value>NoReplacement workflow name.
--description <value>NoReplacement workflow description; null clears it. (--description null sends the word, not JSON null).
--folder <value>NoFolder path as shown in the app; the leading / is optional.

Move a workflow to a folder

sim workflows mv <workflowId> <folder>

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.
folderYesFolder path as shown in the app; the leading / is optional

List workflow resources and child folders together

sim workflows ls [path] [options]

Arguments

ArgumentRequiredDescription
pathNoFolder path to list; defaults to the root folder

Options

OptionRequiredDescription
--search <text>NoFilter folders and resources by name.
--limit <n>NoMaximum combined items to return (0 for everything). Defaults to 100.

Create a workflow directory at a path

sim workflows mkdir <path>

Arguments

ArgumentRequiredDescription
pathYesFolder path to create; the leading / is optional

On this page