---
title: "Get Workflow Execution"
method: GET
path: "/workspaces/{workspace_id}/workflow-executions/{execution_id}"
tags: ["workflow-executions"]
---

# Get Workflow Execution

`GET /workspaces/{workspace_id}/workflow-executions/{execution_id}`

## Request

- Base URL: `https://platform.tracecat.com/api`
- URL: `https://platform.tracecat.com/api/workspaces/{workspace_id}/workflow-executions/{execution_id}`
- Auth: one of:
  - API key in cookie `fastapiusersauth`
  - HTTP bearer

Get a workflow execution.

## Path parameters

- `workspace_id` string, uuid, required
- `execution_id` string, required

## Response `200`

Successful Response

- WorkflowExecutionRead
  - `id` string, required: The ID of the workflow execution
  - `run_id` string, required: The run ID of the workflow execution
  - `start_time` string, date-time, required: The start time of the workflow execution
  - `execution_time` string, date-time, nullable: When this workflow run started or should start.
  - `close_time` string, date-time, nullable: When the workflow was closed if closed.
  - `status` 'RUNNING' | 'COMPLETED' | 'FAILED' | 'CANCELED' | 'TERMINATED' | 'CONTINUED_AS_NEW' | 'TIMED_OUT', required
  - `workflow_type` string, required
  - `task_queue` string, required
  - `history_length` integer, required: Number of events in the history
  - `parent_wf_exec_id` string, nullable
  - `trigger_type` 'manual' | 'scheduled' | 'webhook' | 'case' | 'form', required: Trigger type for a workflow execution.
  - `execution_type` 'draft' | 'published': Execution type for a workflow execution. Distinguishes between draft (development) and published (production) executions.
  - `events` WorkflowExecutionEvent[], required: The events in the workflow execution
    - `event_id` integer, required
    - `event_time` string, date-time, required
    - `event_type` 'WORKFLOW_EXECUTION_STARTED' | 'WORKFLOW_EXECUTION_COMPLETED' | 'WORKFLOW_EXECUTION_FAILED' | 'WORKFLOW_EXECUTION_TERMINATED' | 'WORKFLOW_EXECUTION_CANCELED' | 'WORKFLOW_EXECUTION_CONTINUED_AS_NEW' | 'WORKFLOW_EXECUTION_TIMED_OUT' | 'ACTIVITY_TASK_SCHEDULED' | 'ACTIVITY_TASK_STARTED' | 'ACTIVITY_TASK_COMPLETED' | 'ACTIVITY_TASK_FAILED' | 'ACTIVITY_TASK_TIMED_OUT' | 'ACTIVITY_TASK_CANCELED' | 'CHILD_WORKFLOW_EXECUTION_STARTED' | 'CHILD_WORKFLOW_EXECUTION_COMPLETED' | 'CHILD_WORKFLOW_EXECUTION_FAILED' | 'CHILD_WORKFLOW_EXECUTION_CANCELED' | 'CHILD_WORKFLOW_EXECUTION_TERMINATED' | 'START_CHILD_WORKFLOW_EXECUTION_INITIATED' | 'CHILD_WORKFLOW_EXECUTION_TIMED_OUT' | 'WORKFLOW_EXECUTION_SIGNALED' | 'WORKFLOW_EXECUTION_UPDATE_ACCEPTED' | 'WORKFLOW_EXECUTION_UPDATE_REJECTED' | 'WORKFLOW_EXECUTION_UPDATE_COMPLETED', required: The event types we care about.
    - `task_id` integer, required
    - `event_group` EventGroupTypeVar
      - `event_id` integer, required
      - `udf_namespace` string, required
      - `udf_name` string, required
      - `udf_key` string, required
      - `action_id` string, nullable
      - `action_ref` string, nullable
      - `action_title` string, nullable
      - `action_description` string, nullable
      - `action_input` union, required
        - RunActionInput: This object contains all the information needed to execute an action.
          - `task` ActionStatementOutput, required
            - `ref` string, required: Unique reference for the task
            - `description` string
            - `action` string, required: Action type. Equivalent to the UDF key.
            - `args` object: Arguments for the action
            - `depends_on` string[]: Task dependencies
            - `run_if` string, nullable: Condition to run the task
            - `for_each` union: Iterate over a list of items and run the task for each item.
              - …
            - `retry_policy` ActionRetryPolicy
              - …
            - `start_delay` number: Delay before starting the action in seconds. If `wait_until` is also provided, the `wait_until` timer will take precedence.
            - `wait_until` string, nullable: Wait until a specific date and time before starting. Overrides `start_delay` if both are provided.
            - `join_strategy` 'any' | 'all'
            - `environment` string, nullable: Override environment for this action's execution. Can be a template expression.
            - `tunnel` string, nullable: Name of a workspace tunnel to route this action's HTTP(S) traffic through. Overrides the workflow's default tunnel.
            - `mask_output` boolean: If true, redact this action's result in workflow execution API responses while preserving internal workflow data flow between actions.
            - `unsafe_disable_secret_error_withholding` boolean: Legacy field, ignored. Error diagnostics always mask known secrets and observed secret-derived values.
          - `exec_context` ExecutionContext, required: Workflow execution context with typed fields. ACTIONS and TRIGGER are always present. Other fields are optional since contexts may be built incrementally during workflow execution.
            - `ACTIONS` object, required
            - `TRIGGER` union, required
              - …
            - `ENV` DSLEnvironment: DSL Environment context. Has metadata about the workflow.
              - …
            - `SECRETS` object
            - `VARS` object
            - `var` object
          - `run_context` RunContext, required: This is the runtime context model for a workflow run. Passed into activities.
            - `wf_id` string, required
            - `wf_exec_id` string, required
            - `wf_run_id` string, uuid4, required
            - `environment` string, required
            - `logical_time` string, date-time, required
            - `tunnel` string, nullable
          - `stream_id` string
          - `session_id` string, uuid, nullable
          - `agent_session_id` string, uuid, nullable
          - `registry_lock` RegistryLock, required: Registry version lock with action-level bindings for O(1) resolution. Attributes: origins: Maps repository origin to pinned version string. Example: {"tracecat_registry": "2024.12.10.123456"} actions: Maps action name to its source origin. Example: {"core.transform.reshape": "tracecat_registry"} origin_fingerprints: Optional immutable manifest fingerprints for origins. New executors use the builtin fingerprint to decide whether their bundled tracecat_registry package is an exact match for the lock.
            - `origins` object, required
            - `actions` object, required
            - `origin_fingerprints` object
        - DSLRunArgs
          - `role` Role, required: The identity, intrinsic bindings, and resolved authorization context. User roles ---------- - User roles are authenticated via JWT. - The `user_id` is the user's JWT 'sub' claim. - User roles do not have an associated `service_id`, this must be None. Service roles ------------- - Service roles are authenticated via API key. - Used for internal services to authenticate with the API. - A service's `user_id` is the user it's acting on behalf of. This can be None for internal services.
            - `type` 'user' | 'service' | 'service_account' | 'scim', required
            - `workspace_id` string, uuid, nullable
            - `bound_workspace_id` string, uuid, nullable
            - `organization_id` string, uuid, nullable
            - `user_id` string, uuid, nullable
            - `service_account_id` string, uuid, nullable
            - `scim_connection_id` string, uuid, nullable
            - `service_id` 'tracecat-api' | 'tracecat-bootstrap' | 'tracecat-cli' | 'tracecat-executor' | 'tracecat-agent-executor' | 'tracecat-case-duration-sync' | 'tracecat-case-triggers' | 'tracecat-llm-gateway' | 'tracecat-mcp' | 'tracecat-runner' | 'tracecat-schedule-runner' | 'tracecat-service' | 'tracecat-ui', required
            - `is_platform_superuser` boolean
            - `scopes` string[], nullable
          - `dsl` DSLInput: DSL definition for a workflow. The difference between this and a normal workflow engine is that here, our workflow execution order is defined by the DSL itself, independent of a workflow scheduler. With a traditional This allows the execution of the workflow to be fully deterministic.
            - `title` string, required
            - `description` string, required
            - `entrypoint` DSLEntrypointOutput, required
              - …
            - `actions` ActionStatementOutput[], required
              - …
            - `config` DSLConfigOutput: This is the runtime configuration for the workflow. Activities don't need access to this.
              - …
            - `triggers` Trigger[]
              - …
            - `returns` unknown
            - `error_handler` string, nullable: The action ref to handle errors.
          - `wf_id` string, required
          - `trigger_inputs` union
            - InlineObject: Data stored inline (not externalized).
              - …
            - ExternalObject: Data externalized to blob storage.
              - …
            - CollectionObject: Handle to a collection manifest stored in blob storage. Represents huge collections without embedding list[StoredObject] in history. The manifest contains chunk references for paged access. This is a small, history-safe handle. The actual data lives in chunked blobs referenced by the manifest. Attributes: manifest_ref: Reference to the manifest blob containing chunk refs. count: Total number of elements in the collection. chunk_size: Number of items per chunk. element_kind: Whether elements are raw values or StoredObject handles. schema_version: Manifest schema version for forward compatibility.
              - …
          - `parent_run_context` RunContext: This is the runtime context model for a workflow run. Passed into activities.
            - `wf_id` string, required
            - `wf_exec_id` string, required
            - `wf_run_id` string, uuid4, required
            - `environment` string, required
            - `logical_time` string, date-time, required
            - `tunnel` string, nullable
          - `runtime_config` DSLConfigOutput: This is the runtime configuration for the workflow. Activities don't need access to this.
            - `environment` string: The workflow's target execution environment. This is used to isolate secrets across different environments.If not provided, the default environment (default) is used.
            - `timeout` number: Workflow timeout in seconds. If set to 0, the workflow has no timeout.
            - `tunnel` string, nullable: Default workspace tunnel for actions that do not set their own.
          - `timeout` string, duration: Platform activity start-to-close timeout.
          - `schedule_id` string, nullable: The schedule ID that triggered this workflow, if any. Auto-converts from legacy 'sch-<hex>' format.
          - `execution_type` 'draft' | 'published': Execution type for a workflow execution. Distinguishes between draft (development) and published (production) executions.
          - `time_anchor` string, date-time, nullable: The workflow's logical time anchor for FN.now() and related functions. If not provided, computed from TemporalScheduledStartTime (for schedules) or workflow start_time (for other triggers). Stored as UTC.
          - `registry_lock` RegistryLock: Registry version lock with action-level bindings for O(1) resolution. Attributes: origins: Maps repository origin to pinned version string. Example: {"tracecat_registry": "2024.12.10.123456"} actions: Maps action name to its source origin. Example: {"core.transform.reshape": "tracecat_registry"} origin_fingerprints: Optional immutable manifest fingerprints for origins. New executors use the builtin fingerprint to decide whether their bundled tracecat_registry package is an exact match for the lock.
            - `origins` object, required
            - `actions` object, required
            - `origin_fingerprints` object
          - `fixed_action_results` object: Results reused from a previous run, keyed by action ref. Matching root-scope actions use these instead of executing.
        - GetWorkflowDefinitionActivityInputs
          - `role` Role, required: The identity, intrinsic bindings, and resolved authorization context. User roles ---------- - User roles are authenticated via JWT. - The `user_id` is the user's JWT 'sub' claim. - User roles do not have an associated `service_id`, this must be None. Service roles ------------- - Service roles are authenticated via API key. - Used for internal services to authenticate with the API. - A service's `user_id` is the user it's acting on behalf of. This can be None for internal services.
            - `type` 'user' | 'service' | 'service_account' | 'scim', required
            - `workspace_id` string, uuid, nullable
            - `bound_workspace_id` string, uuid, nullable
            - `organization_id` string, uuid, nullable
            - `user_id` string, uuid, nullable
            - `service_account_id` string, uuid, nullable
            - `scim_connection_id` string, uuid, nullable
            - `service_id` 'tracecat-api' | 'tracecat-bootstrap' | 'tracecat-cli' | 'tracecat-executor' | 'tracecat-agent-executor' | 'tracecat-case-duration-sync' | 'tracecat-case-triggers' | 'tracecat-llm-gateway' | 'tracecat-mcp' | 'tracecat-runner' | 'tracecat-schedule-runner' | 'tracecat-service' | 'tracecat-ui', required
            - `is_platform_superuser` boolean
            - `scopes` string[], nullable
          - `workflow_id` string, required
          - `version` integer, nullable
          - `task` ActionStatementOutput
            - `ref` string, required: Unique reference for the task
            - `description` string
            - `action` string, required: Action type. Equivalent to the UDF key.
            - `args` object: Arguments for the action
            - `depends_on` string[]: Task dependencies
            - `run_if` string, nullable: Condition to run the task
            - `for_each` union: Iterate over a list of items and run the task for each item.
              - …
            - `retry_policy` ActionRetryPolicy
              - …
            - `start_delay` number: Delay before starting the action in seconds. If `wait_until` is also provided, the `wait_until` timer will take precedence.
            - `wait_until` string, nullable: Wait until a specific date and time before starting. Overrides `start_delay` if both are provided.
            - `join_strategy` 'any' | 'all'
            - `environment` string, nullable: Override environment for this action's execution. Can be a template expression.
            - `tunnel` string, nullable: Name of a workspace tunnel to route this action's HTTP(S) traffic through. Overrides the workflow's default tunnel.
            - `mask_output` boolean: If true, redact this action's result in workflow execution API responses while preserving internal workflow data flow between actions.
            - `unsafe_disable_secret_error_withholding` boolean: Legacy field, ignored. Error diagnostics always mask known secrets and observed secret-derived values.
        - UnreadableTemporalPayload: Structured placeholder for Temporal payloads that cannot be decoded.
          - `error` 'unreadable_temporal_payload'
          - `error_type` string, required
          - `encoding` string, required
          - `payload_size_bytes` integer, required
      - `action_result` unknown
      - `current_attempt` integer, nullable
      - `retry_policy` ActionRetryPolicy
        - `max_attempts` integer: Total number of execution attempts. 0 means unlimited, 1 means no retries.
        - `timeout` integer: Timeout for the action in seconds. Agent-backed AI actions clamp to the deployment's agent timeout bounds (see ActionStatement).
        - `retry_until` string, nullable: Retry until a specific condition is met.
      - `start_delay` number
      - `join_strategy` 'any' | 'all'
      - `related_wf_exec_id` union
        - string
        - string
    - `failure` EventFailure
      - `message` string, required
      - `cause` object, nullable
      - `root_cause_message` string, nullable
    - `result` unknown
    - `role` Role: The identity, intrinsic bindings, and resolved authorization context. User roles ---------- - User roles are authenticated via JWT. - The `user_id` is the user's JWT 'sub' claim. - User roles do not have an associated `service_id`, this must be None. Service roles ------------- - Service roles are authenticated via API key. - Used for internal services to authenticate with the API. - A service's `user_id` is the user it's acting on behalf of. This can be None for internal services.
      - `type` 'user' | 'service' | 'service_account' | 'scim', required
      - `workspace_id` string, uuid, nullable
      - `bound_workspace_id` string, uuid, nullable
      - `organization_id` string, uuid, nullable
      - `user_id` string, uuid, nullable
      - `service_account_id` string, uuid, nullable
      - `scim_connection_id` string, uuid, nullable
      - `service_id` 'tracecat-api' | 'tracecat-bootstrap' | 'tracecat-cli' | 'tracecat-executor' | 'tracecat-agent-executor' | 'tracecat-case-duration-sync' | 'tracecat-case-triggers' | 'tracecat-llm-gateway' | 'tracecat-mcp' | 'tracecat-runner' | 'tracecat-schedule-runner' | 'tracecat-service' | 'tracecat-ui', required
      - `is_platform_superuser` boolean
      - `scopes` string[], nullable
    - `parent_wf_exec_id` string, nullable
    - `workflow_timeout` number, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/tracecat/apis/tracecat-api.md) - [All operations](https://skmtc.dev/tracecat/apis/tracecat-api/llms.txt) - [OpenAPI document](https://skmtc.dev/tracecat/apis/tracecat-api/revisions/2efdda25045f?raw)
