Workflow Runs And Statuses

Every workflow start creates a run. Runs snapshot the workflow definition, track each step, and keep enough detail to inspect, retry, rerun, and deliver output.

Run Start Kinds

ValueMeaning
eventStarted by an integration event.
scheduleStarted by a Dawn schedule event.
manualStarted by a person from the UI or API.
agentStarted by an agent/tool.
one_offStarted as a one-off workflow execution.

Run Statuses

StatusMeaning
queuedRun exists but a worker has not claimed it yet.
runningRun is actively executing or waiting for active steps.
cancel_requestedCancellation has been requested but cleanup is not complete.
completedRun completed successfully.
failedRun ended with a failure. Inspect step errors and run error.
canceledRun was canceled.

Active statuses are queued, running, and cancel_requested. Terminal statuses are completed, failed, and canceled.

Step Statuses

StatusMeaning
queuedStep is waiting for dependencies and worker execution.
runningStep is executing.
completedStep completed.
failedStep failed.
canceledStep was canceled.
skippedStep did not run because graph logic skipped it.

Step Outcome Kinds

OutcomeMeaning
succeededStep completed successfully.
failedStep failed.
canceledStep was canceled.
condition_skippedA condition evaluated false.
dependency_skippedA dependency was skipped, so this step was skipped too.
dependency_failedA dependency failed, so this step could not run.
graph_blockedThe graph could not make progress.
timed_outStep or run exceeded the allowed duration.

Use status for the broad lifecycle and outcomeKind for why a terminal step ended the way it did.

Run List Fields

GET /api/v1/workspaces/{workspaceId}/workflow-runs supports filtering by workflow, status, query, cursor, and limit.

The list response contains:

FieldMeaning
itemsCurrent page of run summaries.
nextCursorCursor for the next page.
hasMoreWhether another page exists.
totalCountTotal count matching the current filters.

Run summary fields:

FieldMeaning
idRun ID.
workflowIdWorkflow definition ID.
workflowNameWorkflow name at run time.
startKindWhy the run started.
statusRun status.
providerProvider that started the run when event-triggered.
eventTypeEvent type when event-triggered.
subjectTitleHuman-readable subject.
subjectUrlProvider subject URL when available.
startedAtStart timestamp.
completedAtCompletion timestamp.
durationMsDuration when known.
errorRun-level error when failed.
createdAtRow creation timestamp.

Run Details Fields

GET /api/v1/workspaces/{workspaceId}/workflow-runs/{runId} returns the run summary plus:

FieldMeaning
workspaceIdWorkspace ID.
scopeKindWorkflow scope, such as workspace or private.
ownerUserIdOwner for private workflows.
triggerEventIdStored workflow event ID when event-triggered.
startedByUserIdUser that manually started or reran the run.
startedByAgentRunIdAgent run that started this run when applicable.
startedByWorkflowRunIdOriginal run ID when this is a rerun.
subjectKindSubject kind.
subjectExternalIdProvider subject ID/key.
triggerEventNormalized event JSON.
manualInputManual input JSON.
definitionSnapshotWorkflow definition snapshot used by this run.
stepsStep details.
deliveriesDelivery details.

Runs use a definition snapshot so historical run inspection does not change when the workflow definition is edited later.

Step Details Fields

FieldMeaning
idWorkflow run step ID.
workflowStepIdDefinition step ID when present.
orderStep order.
nodeKeyGraph node key.
dependsOnDependency node keys.
nameStep name.
stepTypeagent_run or control.
agentRunIdChild agent run ID for agent-run steps.
conversationIdChild conversation ID for agent-run steps.
statusStep status.
outcomeKindTerminal outcome kind.
inputStep input JSON.
outputTextText output.
outputStructured output JSON when available.
startedAtStep start timestamp.
completedAtStep completion timestamp.
durationMsStep duration.
errorStep error.

Delivery Types

Delivery typePurpose
workspace_notificationWorkspace notification for terminal workflow output.
personal_notificationPersonal notification target.
monitor_notificationDawn Monitor notification surface.
channel_resultChannel result delivery target.
slack_dmSlack direct message target.
workflow_output_importOutput imported into a Dawn thread.

Delivery status values are pending, delivering, delivered, and failed.

Delivery Details Fields

FieldMeaning
idDelivery ID.
deliveryTypeDelivery type.
statusDelivery status.
deliveredAtDelivery timestamp when successful.
lastErrorLast delivery error.
targetConversationIdTarget Dawn conversation when applicable.
targetMessageIdTarget Dawn message when applicable.
targetAgentProfileIdTarget agent profile when applicable.
targetExternalConversationIdTarget external conversation/thread when applicable.

Cancel, Rerun, Retry

Available run-control endpoints:

EndpointPurpose
POST /workflow-runs/{runId}/cancelCancel one active run.
POST /workflow-runs/active/cancelCancel active runs, optionally for one workflow.
POST /workflow-runs/{runId}/rerunCreate a new run with the same workflow and subject/input context.
POST /workflow-runs/{runId}/steps/{runStepId}/retryReset a failed terminal step and its dependents for another attempt.
DELETE /workflow-runs/{runId}Delete one finished run.
DELETE /workflow-runs/finishedDelete finished runs, optionally by workflow or status.

Rerun creates a new run. Step retry reuses the same run and resets the chosen step plus dependent steps. Retrying a step that was skipped only makes sense when its blockers are also reset or already successful.

Output Delivery

Completed workflow output can be imported into Dawn threads:

EndpointPurpose
POST /workflow-runs/{runId}/deliver-current-threadImport output into an existing conversation.
POST /workflow-runs/{runId}/deliver-new-threadCreate a new thread and import output.

Request fields:

FieldMeaning
targetConversationIdExisting conversation for current-thread delivery.
stepIdOptional step whose output should be delivered.
outputTextOptional explicit output text.
includeAllStepOutputsInclude output from all steps instead of only the selected/final step.

Use output delivery to move automated work into a human discussion without requiring every workflow result to create a chat thread automatically.