---
title: "Execute DAG synchronously and wait for completion"
method: POST
path: "/dags/{fileName}/start-sync"
tags: ["dags"]
---

# Execute DAG synchronously and wait for completion

`POST /dags/{fileName}/start-sync`

Creates a DAG-run from the DAG definition, starts its execution, waits for it to complete (or timeout), and returns the full execution details including node statuses.

**Important behaviors:**
- If the timeout is exceeded, the DAG run continues executing in the background. The 408 response includes the `dagRunId` so clients can monitor or cancel the run.
- If the DAG reaches a 'waiting' status (human-in-the-loop approval needed), the endpoint returns immediately with 200 and the current status.

## Path parameters

- `fileName` string, regex, required — Name of the DAG file

## Query parameters

- `remoteNode` string

## Request body

- object
  - `params` string — Parameters to pass to the DAG-run in JSON format
  - `dagRunId` string — Optional ID for the DAG-run, if not provided a new one will be generated
  - `dagName` string — Optional DAG name override to use for the created dag-run
  - `singleton` boolean — If true, prevent starting if DAG is already running (returns 409 conflict)
  - `labels` string[] — Additional labels to apply to the DAG-run (format: key=value or key-only). Merged with labels defined in the DAG spec. Mutually exclusive with deprecated `tags`; the server returns HTTP 400 if both are set.
  - `tags` string[] — Deprecated alias for Labels. Additional labels to apply to the DAG-run (format: key=value or key-only). Merged with labels defined in the DAG spec. Mutually exclusive with `labels`; the server returns HTTP 400 if both are set.
  - `timeout` integer, required — Maximum seconds to wait for DAG execution to complete (required)

## Response `200`

DAG-run completed (or reached waiting status)

- object
  - `dagRun` DAGRunDetails, required — Detailed status information for the steps within a DAG-run.
    - `dagRunId` string, required — Unique identifier for the DAG-run. The special value 'latest' can be used to reference the most recent DAG-run.
    - `name` string, regex, required — Name of the DAG
    - `workspace` string — Workspace label value for the DAG-run. Omitted for default DAG-runs and invalid workspace labels.
    - `status` 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8, required — Numeric status code indicating current DAG-run state: 0: "Not started" 1: "Running" 2: "Failed" 3: "Aborted" 4: "Success" 5: "Queued" 6: "Partial Success" 7: "Waiting for approval" 8: "Rejected"
    - `statusLabel` 'not_started' | 'running' | 'failed' | 'aborted' | 'succeeded' | 'queued' | 'partially_succeeded' | 'waiting' | 'rejected', required — Human-readable status description for the DAG-run
    - `queuedAt` string — RFC 3339 timestamp when the DAG-run was queued
    - `autoRetryCount` integer, required — Number of scheduler-issued DAG auto-retries already consumed for this DAG-run
    - `autoRetryLimit` integer, nullable — Configured DAG-level automatic retry limit captured for this DAG-run; null when DAG-level automatic retry is not configured
    - `scheduleTime` string — RFC 3339 timestamp of when the DAG-run was scheduled to run
    - `startedAt` string, required — RFC 3339 timestamp when the DAG-run started
    - `finishedAt` string, required — RFC 3339 timestamp when the DAG-run finished
    - `artifactsAvailable` boolean, required — Whether artifact files are available for this DAG-run
    - `params` string — Runtime parameters passed to the DAG-run in JSON format
    - `workerId` string — ID of the worker that executed this DAG-run ('local' for local execution)
    - `triggerType` 'unknown' | 'scheduler' | 'manual' | 'webhook' | 'subdag' | 'retry' | 'catchup' — How the DAG-run was initiated
    - `labels` string[] — List of labels for categorizing and filtering DAG runs
    - `tags` string[] — Deprecated alias for labels. List of labels for categorizing and filtering DAG runs
    - `rootDAGRunName` string, required — Name of the root DAG-run
    - `rootDAGRunId` string, required — ID of the root DAG-run
    - `parentDAGRunName` string — Name of the parent DAG-run
    - `parentDAGRunId` string — ID of the parent DAG-run
    - `log` string, required — Path to the log file
    - `nodes` Node[], required — Status of individual steps within the DAG-run
      - `step` Step, required — Individual task definition that performs a specific operation in a DAG-run
        - `name` string, required — Unique identifier for the step within the DAG-run
        - `id` string — Optional short identifier for the step. Can be used in variable references like ${id.stdout} to access step properties. Must be unique within the DAG if specified
        - `description` string — Human-readable description of what the step does
        - `dir` string — Working directory for executing the step's command
        - `commands` CommandEntry[] — List of commands to execute sequentially
          - `command` string, required — The command to execute
          - `args` string[] — Arguments for the command
        - `script` string — Script content if the step executes a script file
        - `stdout` string — File path for capturing standard output
        - `stderr` string — File path for capturing standard error
        - `output` string — Variable name to store the step's output
        - `call` string — The name of the DAG to execute as a sub DAG-run
        - `params` string — Parameters to pass to the sub DAG-run in JSON format
        - `parallel` object — Configuration for parallel execution of the step
          - `items` union — Array of items to process in parallel. Can be a static array or a reference to a variable containing an array
            - string[]
            - string
          - `maxConcurrent` integer — Maximum number of parallel executions. Default is 10 if not specified
        - `depends` string[] — List of step names that must complete before this step can start
        - `repeatPolicy` RepeatPolicy — Configuration for step repeat behavior
          - `repeat` 'while' | 'until' — Repeat execution mode for steps
          - `interval` integer — Time in seconds to wait between repeat attempts
          - `limit` integer — Maximum number of times to repeat the step
          - `backoff` union
            - boolean — When true, uses default multiplier of 2.0
            - number, float — Custom exponential backoff multiplier
          - `maxIntervalSec` integer — Maximum interval in seconds (caps exponential growth)
          - `condition` Condition — Precondition that must be satisfied before running a step or DAG-run
            - `condition` string, required — Expression or check to evaluate. When `expected` is omitted, the value runs as a command check using the same variable expansion rules as shell `command` steps.
            - `expected` string — Expected result of the condition evaluation. When set, Dagu compares the evaluated string output instead of using command exit status.
            - `negate` boolean — If true, inverts the condition result (run when condition does NOT match)
            - `error` string — Error message if the condition is not met
            - `matched` boolean — Whether the condition was met
          - `exitCode` integer[] — List of exit codes that trigger repeat behavior
        - `mailOnError` boolean — Whether to send email notifications on step failure
        - `preconditions` Condition[] — Conditions that must be met before the step can start
          - `condition` string, required — Expression or check to evaluate. When `expected` is omitted, the value runs as a command check using the same variable expansion rules as shell `command` steps.
          - `expected` string — Expected result of the condition evaluation. When set, Dagu compares the evaluated string output instead of using command exit status.
          - `negate` boolean — If true, inverts the condition result (run when condition does NOT match)
          - `error` string — Error message if the condition is not met
          - `matched` boolean — Whether the condition was met
        - `timeoutSec` integer — Maximum execution time for the step in seconds. If set, this timeout takes precedence over the DAG-level timeout for this step.
        - `executorConfig` object — Executor configuration for this step
          - `type` string — Type of executor (e.g., 'wait', 'http', 'docker', 'command')
          - `config` object — Executor-specific configuration
        - `router` object — Router configuration for switch/case routing
          - `value` string, required — Expression to evaluate (e.g., '${STATUS}')
          - `routes` object[], required
            - `pattern` string, required — Match pattern (exact or 're:regex')
            - `targets` string[], required — Step names to route to
        - `approval` ApprovalConfig — Configuration for a human approval gate on a step
          - `prompt` string — Message displayed to the approver
          - `input` string[] — List of expected input field names from the approver
          - `required` string[] — Subset of input fields that must be provided
          - `rewindTo` string — Optional step name to restart from when the approver pushes the step back. Must reference the step itself or an upstream dependency.
      - `stdout` string, required — Path to the standard output log file for this step
      - `stderr` string, required — Path to the standard error log file for this step
      - `startedAt` string, required — RFC3339 timestamp when the step started
      - `finishedAt` string, required — RFC3339 timestamp when the step finished
      - `status` 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9, required — Numeric status code indicating current node state: 0: "Not started" 1: "Running" 2: "Failed" 3: "Aborted" 4: "Success" 5: "Skipped" 6: "Partial Success" 7: "Waiting for approval" 8: "Rejected" 9: "Retrying"
      - `statusLabel` 'not_started' | 'running' | 'failed' | 'aborted' | 'succeeded' | 'skipped' | 'partially_succeeded' | 'waiting' | 'rejected' | 'retrying', required — Human-readable status description for the node
      - `retryCount` integer, required — Number of retry attempts made for this step
      - `doneCount` integer, required — Number of successful completions for repeating steps
      - `subRuns` SubDAGRun[] — List of sub DAG-runs associated with this step
        - `dagRunId` string, required — Unique identifier for the DAG-run. The special value 'latest' can be used to reference the most recent DAG-run.
        - `params` string — Parameters passed to the sub DAG-run in JSON format
        - `dagName` string — Name of the executed sub-DAG. For chat tool calls, this is the tool DAG name.
      - `subRunsRepeated` SubDAGRun[] — List of repeated sub DAG-runs when using repeatPolicy
        - `dagRunId` string, required — Unique identifier for the DAG-run. The special value 'latest' can be used to reference the most recent DAG-run.
        - `params` string — Parameters passed to the sub DAG-run in JSON format
        - `dagName` string — Name of the executed sub-DAG. For chat tool calls, this is the tool DAG name.
      - `error` string — Error message if the step failed
      - `approvedAt` string — RFC3339 timestamp when the step was approved
      - `approvedBy` string — Username of who approved the step
      - `approvalInputs` object — Key-value inputs provided during approval
      - `rejectedAt` string — RFC3339 timestamp when the step was rejected
      - `rejectedBy` string — Username of who rejected the step
      - `rejectionReason` string — Optional reason for rejection
      - `approvalIteration` integer — Number of times this step has been pushed back for re-execution
      - `pushBackInputs` object — Key-value inputs from the last push-back, injected as environment variables during re-execution
      - `pushBackHistory` PushBackHistoryEntry[] — Chronological push-back history for this step
        - `iteration` integer, required — Push-back iteration number
        - `by` string — Authenticated user who pushed the step back
        - `at` string, date-time — RFC3339 timestamp when the push-back was recorded
        - `inputs` object — Inputs provided for this push-back event
    - `onExit` Node — Status of an individual step within a DAG-run
      - `step` Step, required — Individual task definition that performs a specific operation in a DAG-run
        - `name` string, required — Unique identifier for the step within the DAG-run
        - `id` string — Optional short identifier for the step. Can be used in variable references like ${id.stdout} to access step properties. Must be unique within the DAG if specified
        - `description` string — Human-readable description of what the step does
        - `dir` string — Working directory for executing the step's command
        - `commands` CommandEntry[] — List of commands to execute sequentially
          - `command` string, required — The command to execute
          - `args` string[] — Arguments for the command
        - `script` string — Script content if the step executes a script file
        - `stdout` string — File path for capturing standard output
        - `stderr` string — File path for capturing standard error
        - `output` string — Variable name to store the step's output
        - `call` string — The name of the DAG to execute as a sub DAG-run
        - `params` string — Parameters to pass to the sub DAG-run in JSON format
        - `parallel` object — Configuration for parallel execution of the step
          - `items` union — Array of items to process in parallel. Can be a static array or a reference to a variable containing an array
            - string[]
            - string
          - `maxConcurrent` integer — Maximum number of parallel executions. Default is 10 if not specified
        - `depends` string[] — List of step names that must complete before this step can start
        - `repeatPolicy` RepeatPolicy — Configuration for step repeat behavior
          - `repeat` 'while' | 'until' — Repeat execution mode for steps
          - `interval` integer — Time in seconds to wait between repeat attempts
          - `limit` integer — Maximum number of times to repeat the step
          - `backoff` union
            - boolean — When true, uses default multiplier of 2.0
            - number, float — Custom exponential backoff multiplier
          - `maxIntervalSec` integer — Maximum interval in seconds (caps exponential growth)
          - `condition` Condition — Precondition that must be satisfied before running a step or DAG-run
            - `condition` string, required — Expression or check to evaluate. When `expected` is omitted, the value runs as a command check using the same variable expansion rules as shell `command` steps.
            - `expected` string — Expected result of the condition evaluation. When set, Dagu compares the evaluated string output instead of using command exit status.
            - `negate` boolean — If true, inverts the condition result (run when condition does NOT match)
            - `error` string — Error message if the condition is not met
            - `matched` boolean — Whether the condition was met
          - `exitCode` integer[] — List of exit codes that trigger repeat behavior
        - `mailOnError` boolean — Whether to send email notifications on step failure
        - `preconditions` Condition[] — Conditions that must be met before the step can start
          - `condition` string, required — Expression or check to evaluate. When `expected` is omitted, the value runs as a command check using the same variable expansion rules as shell `command` steps.
          - `expected` string — Expected result of the condition evaluation. When set, Dagu compares the evaluated string output instead of using command exit status.
          - `negate` boolean — If true, inverts the condition result (run when condition does NOT match)
          - `error` string — Error message if the condition is not met
          - `matched` boolean — Whether the condition was met
        - `timeoutSec` integer — Maximum execution time for the step in seconds. If set, this timeout takes precedence over the DAG-level timeout for this step.
        - `executorConfig` object — Executor configuration for this step
          - `type` string — Type of executor (e.g., 'wait', 'http', 'docker', 'command')
          - `config` object — Executor-specific configuration
        - `router` object — Router configuration for switch/case routing
          - `value` string, required — Expression to evaluate (e.g., '${STATUS}')
          - `routes` object[], required
            - `pattern` string, required — Match pattern (exact or 're:regex')
            - `targets` string[], required — Step names to route to
        - `approval` ApprovalConfig — Configuration for a human approval gate on a step
          - `prompt` string — Message displayed to the approver
          - `input` string[] — List of expected input field names from the approver
          - `required` string[] — Subset of input fields that must be provided
          - `rewindTo` string — Optional step name to restart from when the approver pushes the step back. Must reference the step itself or an upstream dependency.
      - `stdout` string, required — Path to the standard output log file for this step
      - `stderr` string, required — Path to the standard error log file for this step
      - `startedAt` string, required — RFC3339 timestamp when the step started
      - `finishedAt` string, required — RFC3339 timestamp when the step finished
      - `status` 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9, required — Numeric status code indicating current node state: 0: "Not started" 1: "Running" 2: "Failed" 3: "Aborted" 4: "Success" 5: "Skipped" 6: "Partial Success" 7: "Waiting for approval" 8: "Rejected" 9: "Retrying"
      - `statusLabel` 'not_started' | 'running' | 'failed' | 'aborted' | 'succeeded' | 'skipped' | 'partially_succeeded' | 'waiting' | 'rejected' | 'retrying', required — Human-readable status description for the node
      - `retryCount` integer, required — Number of retry attempts made for this step
      - `doneCount` integer, required — Number of successful completions for repeating steps
      - `subRuns` SubDAGRun[] — List of sub DAG-runs associated with this step
        - `dagRunId` string, required — Unique identifier for the DAG-run. The special value 'latest' can be used to reference the most recent DAG-run.
        - `params` string — Parameters passed to the sub DAG-run in JSON format
        - `dagName` string — Name of the executed sub-DAG. For chat tool calls, this is the tool DAG name.
      - `subRunsRepeated` SubDAGRun[] — List of repeated sub DAG-runs when using repeatPolicy
        - `dagRunId` string, required — Unique identifier for the DAG-run. The special value 'latest' can be used to reference the most recent DAG-run.
        - `params` string — Parameters passed to the sub DAG-run in JSON format
        - `dagName` string — Name of the executed sub-DAG. For chat tool calls, this is the tool DAG name.
      - `error` string — Error message if the step failed
      - `approvedAt` string — RFC3339 timestamp when the step was approved
      - `approvedBy` string — Username of who approved the step
      - `approvalInputs` object — Key-value inputs provided during approval
      - `rejectedAt` string — RFC3339 timestamp when the step was rejected
      - `rejectedBy` string — Username of who rejected the step
      - `rejectionReason` string — Optional reason for rejection
      - `approvalIteration` integer — Number of times this step has been pushed back for re-execution
      - `pushBackInputs` object — Key-value inputs from the last push-back, injected as environment variables during re-execution
      - `pushBackHistory` PushBackHistoryEntry[] — Chronological push-back history for this step
        - `iteration` integer, required — Push-back iteration number
        - `by` string — Authenticated user who pushed the step back
        - `at` string, date-time — RFC3339 timestamp when the push-back was recorded
        - `inputs` object — Inputs provided for this push-back event
    - `onSuccess` Node — Status of an individual step within a DAG-run
      - `step` Step, required — Individual task definition that performs a specific operation in a DAG-run
        - `name` string, required — Unique identifier for the step within the DAG-run
        - `id` string — Optional short identifier for the step. Can be used in variable references like ${id.stdout} to access step properties. Must be unique within the DAG if specified
        - `description` string — Human-readable description of what the step does
        - `dir` string — Working directory for executing the step's command
        - `commands` CommandEntry[] — List of commands to execute sequentially
          - `command` string, required — The command to execute
          - `args` string[] — Arguments for the command
        - `script` string — Script content if the step executes a script file
        - `stdout` string — File path for capturing standard output
        - `stderr` string — File path for capturing standard error
        - `output` string — Variable name to store the step's output
        - `call` string — The name of the DAG to execute as a sub DAG-run
        - `params` string — Parameters to pass to the sub DAG-run in JSON format
        - `parallel` object — Configuration for parallel execution of the step
          - `items` union — Array of items to process in parallel. Can be a static array or a reference to a variable containing an array
            - string[]
            - string
          - `maxConcurrent` integer — Maximum number of parallel executions. Default is 10 if not specified
        - `depends` string[] — List of step names that must complete before this step can start
        - `repeatPolicy` RepeatPolicy — Configuration for step repeat behavior
          - `repeat` 'while' | 'until' — Repeat execution mode for steps
          - `interval` integer — Time in seconds to wait between repeat attempts
          - `limit` integer — Maximum number of times to repeat the step
          - `backoff` union
            - boolean — When true, uses default multiplier of 2.0
            - number, float — Custom exponential backoff multiplier
          - `maxIntervalSec` integer — Maximum interval in seconds (caps exponential growth)
          - `condition` Condition — Precondition that must be satisfied before running a step or DAG-run
            - `condition` string, required — Expression or check to evaluate. When `expected` is omitted, the value runs as a command check using the same variable expansion rules as shell `command` steps.
            - `expected` string — Expected result of the condition evaluation. When set, Dagu compares the evaluated string output instead of using command exit status.
            - `negate` boolean — If true, inverts the condition result (run when condition does NOT match)
            - `error` string — Error message if the condition is not met
            - `matched` boolean — Whether the condition was met
          - `exitCode` integer[] — List of exit codes that trigger repeat behavior
        - `mailOnError` boolean — Whether to send email notifications on step failure
        - `preconditions` Condition[] — Conditions that must be met before the step can start
          - `condition` string, required — Expression or check to evaluate. When `expected` is omitted, the value runs as a command check using the same variable expansion rules as shell `command` steps.
          - `expected` string — Expected result of the condition evaluation. When set, Dagu compares the evaluated string output instead of using command exit status.
          - `negate` boolean — If true, inverts the condition result (run when condition does NOT match)
          - `error` string — Error message if the condition is not met
          - `matched` boolean — Whether the condition was met
        - `timeoutSec` integer — Maximum execution time for the step in seconds. If set, this timeout takes precedence over the DAG-level timeout for this step.
        - `executorConfig` object — Executor configuration for this step
          - `type` string — Type of executor (e.g., 'wait', 'http', 'docker', 'command')
          - `config` object — Executor-specific configuration
        - `router` object — Router configuration for switch/case routing
          - `value` string, required — Expression to evaluate (e.g., '${STATUS}')
          - `routes` object[], required
            - `pattern` string, required — Match pattern (exact or 're:regex')
            - `targets` string[], required — Step names to route to
        - `approval` ApprovalConfig — Configuration for a human approval gate on a step
          - `prompt` string — Message displayed to the approver
          - `input` string[] — List of expected input field names from the approver
          - `required` string[] — Subset of input fields that must be provided
          - `rewindTo` string — Optional step name to restart from when the approver pushes the step back. Must reference the step itself or an upstream dependency.
      - `stdout` string, required — Path to the standard output log file for this step
      - `stderr` string, required — Path to the standard error log file for this step
      - `startedAt` string, required — RFC3339 timestamp when the step started
      - `finishedAt` string, required — RFC3339 timestamp when the step finished
      - `status` 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9, required — Numeric status code indicating current node state: 0: "Not started" 1: "Running" 2: "Failed" 3: "Aborted" 4: "Success" 5: "Skipped" 6: "Partial Success" 7: "Waiting for approval" 8: "Rejected" 9: "Retrying"
      - `statusLabel` 'not_started' | 'running' | 'failed' | 'aborted' | 'succeeded' | 'skipped' | 'partially_succeeded' | 'waiting' | 'rejected' | 'retrying', required — Human-readable status description for the node
      - `retryCount` integer, required — Number of retry attempts made for this step
      - `doneCount` integer, required — Number of successful completions for repeating steps
      - `subRuns` SubDAGRun[] — List of sub DAG-runs associated with this step
        - `dagRunId` string, required — Unique identifier for the DAG-run. The special value 'latest' can be used to reference the most recent DAG-run.
        - `params` string — Parameters passed to the sub DAG-run in JSON format
        - `dagName` string — Name of the executed sub-DAG. For chat tool calls, this is the tool DAG name.
      - `subRunsRepeated` SubDAGRun[] — List of repeated sub DAG-runs when using repeatPolicy
        - `dagRunId` string, required — Unique identifier for the DAG-run. The special value 'latest' can be used to reference the most recent DAG-run.
        - `params` string — Parameters passed to the sub DAG-run in JSON format
        - `dagName` string — Name of the executed sub-DAG. For chat tool calls, this is the tool DAG name.
      - `error` string — Error message if the step failed
      - `approvedAt` string — RFC3339 timestamp when the step was approved
      - `approvedBy` string — Username of who approved the step
      - `approvalInputs` object — Key-value inputs provided during approval
      - `rejectedAt` string — RFC3339 timestamp when the step was rejected
      - `rejectedBy` string — Username of who rejected the step
      - `rejectionReason` string — Optional reason for rejection
      - `approvalIteration` integer — Number of times this step has been pushed back for re-execution
      - `pushBackInputs` object — Key-value inputs from the last push-back, injected as environment variables during re-execution
      - `pushBackHistory` PushBackHistoryEntry[] — Chronological push-back history for this step
        - `iteration` integer, required — Push-back iteration number
        - `by` string — Authenticated user who pushed the step back
        - `at` string, date-time — RFC3339 timestamp when the push-back was recorded
        - `inputs` object — Inputs provided for this push-back event
    - `onFailure` Node — Status of an individual step within a DAG-run
      - `step` Step, required — Individual task definition that performs a specific operation in a DAG-run
        - `name` string, required — Unique identifier for the step within the DAG-run
        - `id` string — Optional short identifier for the step. Can be used in variable references like ${id.stdout} to access step properties. Must be unique within the DAG if specified
        - `description` string — Human-readable description of what the step does
        - `dir` string — Working directory for executing the step's command
        - `commands` CommandEntry[] — List of commands to execute sequentially
          - `command` string, required — The command to execute
          - `args` string[] — Arguments for the command
        - `script` string — Script content if the step executes a script file
        - `stdout` string — File path for capturing standard output
        - `stderr` string — File path for capturing standard error
        - `output` string — Variable name to store the step's output
        - `call` string — The name of the DAG to execute as a sub DAG-run
        - `params` string — Parameters to pass to the sub DAG-run in JSON format
        - `parallel` object — Configuration for parallel execution of the step
          - `items` union — Array of items to process in parallel. Can be a static array or a reference to a variable containing an array
            - string[]
            - string
          - `maxConcurrent` integer — Maximum number of parallel executions. Default is 10 if not specified
        - `depends` string[] — List of step names that must complete before this step can start
        - `repeatPolicy` RepeatPolicy — Configuration for step repeat behavior
          - `repeat` 'while' | 'until' — Repeat execution mode for steps
          - `interval` integer — Time in seconds to wait between repeat attempts
          - `limit` integer — Maximum number of times to repeat the step
          - `backoff` union
            - boolean — When true, uses default multiplier of 2.0
            - number, float — Custom exponential backoff multiplier
          - `maxIntervalSec` integer — Maximum interval in seconds (caps exponential growth)
          - `condition` Condition — Precondition that must be satisfied before running a step or DAG-run
            - `condition` string, required — Expression or check to evaluate. When `expected` is omitted, the value runs as a command check using the same variable expansion rules as shell `command` steps.
            - `expected` string — Expected result of the condition evaluation. When set, Dagu compares the evaluated string output instead of using command exit status.
            - `negate` boolean — If true, inverts the condition result (run when condition does NOT match)
            - `error` string — Error message if the condition is not met
            - `matched` boolean — Whether the condition was met
          - `exitCode` integer[] — List of exit codes that trigger repeat behavior
        - `mailOnError` boolean — Whether to send email notifications on step failure
        - `preconditions` Condition[] — Conditions that must be met before the step can start
          - `condition` string, required — Expression or check to evaluate. When `expected` is omitted, the value runs as a command check using the same variable expansion rules as shell `command` steps.
          - `expected` string — Expected result of the condition evaluation. When set, Dagu compares the evaluated string output instead of using command exit status.
          - `negate` boolean — If true, inverts the condition result (run when condition does NOT match)
          - `error` string — Error message if the condition is not met
          - `matched` boolean — Whether the condition was met
        - `timeoutSec` integer — Maximum execution time for the step in seconds. If set, this timeout takes precedence over the DAG-level timeout for this step.
        - `executorConfig` object — Executor configuration for this step
          - `type` string — Type of executor (e.g., 'wait', 'http', 'docker', 'command')
          - `config` object — Executor-specific configuration
        - `router` object — Router configuration for switch/case routing
          - `value` string, required — Expression to evaluate (e.g., '${STATUS}')
          - `routes` object[], required
            - `pattern` string, required — Match pattern (exact or 're:regex')
            - `targets` string[], required — Step names to route to
        - `approval` ApprovalConfig — Configuration for a human approval gate on a step
          - `prompt` string — Message displayed to the approver
          - `input` string[] — List of expected input field names from the approver
          - `required` string[] — Subset of input fields that must be provided
          - `rewindTo` string — Optional step name to restart from when the approver pushes the step back. Must reference the step itself or an upstream dependency.
      - `stdout` string, required — Path to the standard output log file for this step
      - `stderr` string, required — Path to the standard error log file for this step
      - `startedAt` string, required — RFC3339 timestamp when the step started
      - `finishedAt` string, required — RFC3339 timestamp when the step finished
      - `status` 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9, required — Numeric status code indicating current node state: 0: "Not started" 1: "Running" 2: "Failed" 3: "Aborted" 4: "Success" 5: "Skipped" 6: "Partial Success" 7: "Waiting for approval" 8: "Rejected" 9: "Retrying"
      - `statusLabel` 'not_started' | 'running' | 'failed' | 'aborted' | 'succeeded' | 'skipped' | 'partially_succeeded' | 'waiting' | 'rejected' | 'retrying', required — Human-readable status description for the node
      - `retryCount` integer, required — Number of retry attempts made for this step
      - `doneCount` integer, required — Number of successful completions for repeating steps
      - `subRuns` SubDAGRun[] — List of sub DAG-runs associated with this step
        - `dagRunId` string, required — Unique identifier for the DAG-run. The special value 'latest' can be used to reference the most recent DAG-run.
        - `params` string — Parameters passed to the sub DAG-run in JSON format
        - `dagName` string — Name of the executed sub-DAG. For chat tool calls, this is the tool DAG name.
      - `subRunsRepeated` SubDAGRun[] — List of repeated sub DAG-runs when using repeatPolicy
        - `dagRunId` string, required — Unique identifier for the DAG-run. The special value 'latest' can be used to reference the most recent DAG-run.
        - `params` string — Parameters passed to the sub DAG-run in JSON format
        - `dagName` string — Name of the executed sub-DAG. For chat tool calls, this is the tool DAG name.
      - `error` string — Error message if the step failed
      - `approvedAt` string — RFC3339 timestamp when the step was approved
      - `approvedBy` string — Username of who approved the step
      - `approvalInputs` object — Key-value inputs provided during approval
      - `rejectedAt` string — RFC3339 timestamp when the step was rejected
      - `rejectedBy` string — Username of who rejected the step
      - `rejectionReason` string — Optional reason for rejection
      - `approvalIteration` integer — Number of times this step has been pushed back for re-execution
      - `pushBackInputs` object — Key-value inputs from the last push-back, injected as environment variables during re-execution
      - `pushBackHistory` PushBackHistoryEntry[] — Chronological push-back history for this step
        - `iteration` integer, required — Push-back iteration number
        - `by` string — Authenticated user who pushed the step back
        - `at` string, date-time — RFC3339 timestamp when the push-back was recorded
        - `inputs` object — Inputs provided for this push-back event
    - `onAbort` Node — Status of an individual step within a DAG-run
      - `step` Step, required — Individual task definition that performs a specific operation in a DAG-run
        - `name` string, required — Unique identifier for the step within the DAG-run
        - `id` string — Optional short identifier for the step. Can be used in variable references like ${id.stdout} to access step properties. Must be unique within the DAG if specified
        - `description` string — Human-readable description of what the step does
        - `dir` string — Working directory for executing the step's command
        - `commands` CommandEntry[] — List of commands to execute sequentially
          - `command` string, required — The command to execute
          - `args` string[] — Arguments for the command
        - `script` string — Script content if the step executes a script file
        - `stdout` string — File path for capturing standard output
        - `stderr` string — File path for capturing standard error
        - `output` string — Variable name to store the step's output
        - `call` string — The name of the DAG to execute as a sub DAG-run
        - `params` string — Parameters to pass to the sub DAG-run in JSON format
        - `parallel` object — Configuration for parallel execution of the step
          - `items` union — Array of items to process in parallel. Can be a static array or a reference to a variable containing an array
            - string[]
            - string
          - `maxConcurrent` integer — Maximum number of parallel executions. Default is 10 if not specified
        - `depends` string[] — List of step names that must complete before this step can start
        - `repeatPolicy` RepeatPolicy — Configuration for step repeat behavior
          - `repeat` 'while' | 'until' — Repeat execution mode for steps
          - `interval` integer — Time in seconds to wait between repeat attempts
          - `limit` integer — Maximum number of times to repeat the step
          - `backoff` union
            - boolean — When true, uses default multiplier of 2.0
            - number, float — Custom exponential backoff multiplier
          - `maxIntervalSec` integer — Maximum interval in seconds (caps exponential growth)
          - `condition` Condition — Precondition that must be satisfied before running a step or DAG-run
            - `condition` string, required — Expression or check to evaluate. When `expected` is omitted, the value runs as a command check using the same variable expansion rules as shell `command` steps.
            - `expected` string — Expected result of the condition evaluation. When set, Dagu compares the evaluated string output instead of using command exit status.
            - `negate` boolean — If true, inverts the condition result (run when condition does NOT match)
            - `error` string — Error message if the condition is not met
            - `matched` boolean — Whether the condition was met
          - `exitCode` integer[] — List of exit codes that trigger repeat behavior
        - `mailOnError` boolean — Whether to send email notifications on step failure
        - `preconditions` Condition[] — Conditions that must be met before the step can start
          - `condition` string, required — Expression or check to evaluate. When `expected` is omitted, the value runs as a command check using the same variable expansion rules as shell `command` steps.
          - `expected` string — Expected result of the condition evaluation. When set, Dagu compares the evaluated string output instead of using command exit status.
          - `negate` boolean — If true, inverts the condition result (run when condition does NOT match)
          - `error` string — Error message if the condition is not met
          - `matched` boolean — Whether the condition was met
        - `timeoutSec` integer — Maximum execution time for the step in seconds. If set, this timeout takes precedence over the DAG-level timeout for this step.
        - `executorConfig` object — Executor configuration for this step
          - `type` string — Type of executor (e.g., 'wait', 'http', 'docker', 'command')
          - `config` object — Executor-specific configuration
        - `router` object — Router configuration for switch/case routing
          - `value` string, required — Expression to evaluate (e.g., '${STATUS}')
          - `routes` object[], required
            - `pattern` string, required — Match pattern (exact or 're:regex')
            - `targets` string[], required — Step names to route to
        - `approval` ApprovalConfig — Configuration for a human approval gate on a step
          - `prompt` string — Message displayed to the approver
          - `input` string[] — List of expected input field names from the approver
          - `required` string[] — Subset of input fields that must be provided
          - `rewindTo` string — Optional step name to restart from when the approver pushes the step back. Must reference the step itself or an upstream dependency.
      - `stdout` string, required — Path to the standard output log file for this step
      - `stderr` string, required — Path to the standard error log file for this step
      - `startedAt` string, required — RFC3339 timestamp when the step started
      - `finishedAt` string, required — RFC3339 timestamp when the step finished
      - `status` 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9, required — Numeric status code indicating current node state: 0: "Not started" 1: "Running" 2: "Failed" 3: "Aborted" 4: "Success" 5: "Skipped" 6: "Partial Success" 7: "Waiting for approval" 8: "Rejected" 9: "Retrying"
      - `statusLabel` 'not_started' | 'running' | 'failed' | 'aborted' | 'succeeded' | 'skipped' | 'partially_succeeded' | 'waiting' | 'rejected' | 'retrying', required — Human-readable status description for the node
      - `retryCount` integer, required — Number of retry attempts made for this step
      - `doneCount` integer, required — Number of successful completions for repeating steps
      - `subRuns` SubDAGRun[] — List of sub DAG-runs associated with this step
        - `dagRunId` string, required — Unique identifier for the DAG-run. The special value 'latest' can be used to reference the most recent DAG-run.
        - `params` string — Parameters passed to the sub DAG-run in JSON format
        - `dagName` string — Name of the executed sub-DAG. For chat tool calls, this is the tool DAG name.
      - `subRunsRepeated` SubDAGRun[] — List of repeated sub DAG-runs when using repeatPolicy
        - `dagRunId` string, required — Unique identifier for the DAG-run. The special value 'latest' can be used to reference the most recent DAG-run.
        - `params` string — Parameters passed to the sub DAG-run in JSON format
        - `dagName` string — Name of the executed sub-DAG. For chat tool calls, this is the tool DAG name.
      - `error` string — Error message if the step failed
      - `approvedAt` string — RFC3339 timestamp when the step was approved
      - `approvedBy` string — Username of who approved the step
      - `approvalInputs` object — Key-value inputs provided during approval
      - `rejectedAt` string — RFC3339 timestamp when the step was rejected
      - `rejectedBy` string — Username of who rejected the step
      - `rejectionReason` string — Optional reason for rejection
      - `approvalIteration` integer — Number of times this step has been pushed back for re-execution
      - `pushBackInputs` object — Key-value inputs from the last push-back, injected as environment variables during re-execution
      - `pushBackHistory` PushBackHistoryEntry[] — Chronological push-back history for this step
        - `iteration` integer, required — Push-back iteration number
        - `by` string — Authenticated user who pushed the step back
        - `at` string, date-time — RFC3339 timestamp when the push-back was recorded
        - `inputs` object — Inputs provided for this push-back event
    - `preconditions` Condition[] — List of preconditions that must be met before the DAG-run can start
      - `condition` string, required — Expression or check to evaluate. When `expected` is omitted, the value runs as a command check using the same variable expansion rules as shell `command` steps.
      - `expected` string — Expected result of the condition evaluation. When set, Dagu compares the evaluated string output instead of using command exit status.
      - `negate` boolean — If true, inverts the condition result (run when condition does NOT match)
      - `error` string — Error message if the condition is not met
      - `matched` boolean — Whether the condition was met
    - `specFromFile` boolean — Whether this DAG-run still has a usable source file on disk, so reschedule can load the current spec from that file instead of the stored historical YAML snapshot.
    - `sourceFileName` string, regex — Name of the DAG file

## Other responses

- `400` — Invalid request parameters or labels
- `408` — Timeout waiting for DAG execution to complete. The DAG run continues executing in the background.
- `409` — DAG is already running (singleton mode) or dagRunId already exists
- `default` — Generic error response

## Changes

- **2026-05-24** (v1) `8a2d5d3e9608` — 4 warning
  - added the new `rate_limited` enum value to the `allOf[#/components/schemas/Error]/code` response property for the response status `408`
  - added the new `rate_limited` enum value to the `code` response property for the response status `400`
  - added the new `rate_limited` enum value to the `code` response property for the response status `409`
  - added the new `rate_limited` enum value to the `code` response property for the response status `default`
- **2026-04-30** (v1) `50e1d517afc1` — 19 warning, 16 info
  - removed the request property `profile`
  - removed the optional property `dagRun/allOf[#/components/schemas/DAGRunSummary]/conditions` from the response with the `200` status
  - removed the optional property `dagRun/allOf[#/components/schemas/DAGRunSummary]/profileName` from the response with the `200` status
  - removed the optional property `dagRun/allOf[subschema #2]/nodes/items/step/outputs` from the response with the `200` status
  - …31 more

[Change history](https://skmtc.dev/dagucloud/apis/dagu/changes/dags/:fileName/start-sync/post.md)

---

[API](https://skmtc.dev/dagucloud/apis/dagu.md) · [All operations](https://skmtc.dev/dagucloud/apis/dagu/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/dagucloud/dagu/revisions/8a2d5d3e9608/schema)
