---
title: "Get Workflow Run"
method: GET
path: "/workflows/v1/workflow-runs/{workflow_run_id}"
tags: ["Workflow Runs"]
---

# Get Workflow Run

`GET /workflows/v1/workflow-runs/{workflow_run_id}`

Endpoint to retrieve a workflow run by its ID.

## Path parameters

- `workflow_run_id` string, required

## Response `200`

Successful Response

- WorkflowRunsResponse — Response model for a single workflow run. Contains a WorkflowRunsModel object.
  - `workflow_run` WorkflowRunsModel, required — Stores a workflow run present in the workflow system. Each workflow run is associated with a specific workflow and represents a specific execution of that workflow.
    - `team_id` string, nullable — ID of the team that owns this edge
    - `created_by` string, nullable — ID of the user who created this edge
    - `updated_by` string, nullable — ID of the user who last updated this edge
    - `created_at` string, date-time
    - `updated_at` string, date-time
    - `_id` string
    - `workflow_run` WorkflowRunOutput — Represents a workflow run, which is a specific execution of a workflow.
      - `logical_id` string, nullable — Unique ID associated with this particular run of the workflow
      - `workflow_id` string, nullable — ID of the workflow being run
      - `version_number` integer, nullable — Version number of the workflow this run is associated with. 0 is the initial version (default).
      - `status` 'not_started' | 'started' | 'running' | 'failed' | 'completed' | 'paused' | 'waiting_for_user_input' | 'cancelled' | 'aborted_looping_risk'
      - `termination_source` string, nullable — Describes what caused the run to reach a terminal state (especially FAILED). None for normal completions. Well-known values: 'execution_error', 'stale_run_reaper', 'finally_safety_net'.
      - `input_output_pairs` WorkflowRunInputOutputPairOutput[] — List of input-output pairs. Each pair corresponds to each contiguous execution segment of the workflow
        - `run_input` WorkflowRunInputOutput — Input to the workflow, used to kick off or resume a workflow run.
          - `dynamic_variables` object — Dynamic variable values that will replace the '{{...}}' placeholders in the prompts, condition strings, tool signatures, etc.
          - `runtime_variables` object — Runtime variables that will replace the '[[...]]' placeholders in the prompts, condition strings, tool signatures, etc.
          - `miscellaneous` object — Miscellaneous run-input data
          - `command` 'start' | 'data' | 'resume' | 'pause' | 'stop'
          - `workflow_id` string, nullable — DB Object ID of the workflow to run
          - `version_number` integer, nullable — Version number of the workflow this run is associated with. 0 is the initial version (default).
          - `run_by` string, nullable — Identifier of the user or system that initiated the workflow run
          - `workflow_run_id` string, nullable — ID of the workflow run to resume
          - `team_id` string, nullable — Team ID associated with this workflow run, used for vendor credential lookup
          - `start_node_logical_id` string, nullable — Optional logical ID of the node to start execution from, bypassing the default start node.
          - `initial_state` object, nullable — Optional serialized WorkflowState to resume execution with context.
          - `thread_to_node_inputs` object — Mapping of thread IDs to node inputs
          - `welcome_message` string, nullable — Voice-engine opening line, seeded as the first assistant message on the first run only.
        - `run_output` WorkflowRunOutput — recursive
        - `evaluation` object, nullable — Evaluation result for this specific turn/pair.
        - `iteration_end_state_miscellaneous` object, nullable — A lightweight capture of global state details at the end of the iteration, like history trackers and active threads, to allow accurate resumption without serializing the entire state.
        - `comments` CommentConfig[] — Reviewer comments on this turn as a whole, as opposed to on one of its events
          - `logical_id` string, nullable — Unique identifier for the comment
          - `content` string, nullable — Content of the comment
          - `createdBy` string, nullable — ID of the user who created this edge
          - `updatedBy` string, nullable — ID of the user who last updated this edge
          - `createdAt` string, date-time
          - `updatedAt` string, date-time
        - `ratings` RatingConfig[] — Reviewer ratings of this turn as a whole, at most one per user
          - `logical_id` string, nullable — Unique identifier for the rating
          - `value` 'down' | 'up' | 'strong_up', required — Quality judgement a reviewer can leave on a workflow run event or turn. Stored as the string, never as the numeric score: a score is derivable (see ``RATING_SCORES``) and keeping the name means new values can be added without re-interpreting existing records.
          - `createdBy` string, nullable — ID of the user who created this rating
          - `updatedBy` string, nullable — ID of the user who last updated this rating
          - `createdAt` string, date-time
          - `updatedAt` string, date-time
      - `run_by` string, nullable — Identifier of the user or system that initiated the workflow run
      - `comments` CommentConfig[] — List of comments associated with the workflow run
        - `logical_id` string, nullable — Unique identifier for the comment
        - `content` string, nullable — Content of the comment
        - `createdBy` string, nullable — ID of the user who created this edge
        - `updatedBy` string, nullable — ID of the user who last updated this edge
        - `createdAt` string, date-time
        - `updatedAt` string, date-time
      - `llm_token_usage` LLMTokenUsage — Token usage information for a workflow run, including total tokens and breakdown by model and provider.
        - `total_input_tokens` integer, nullable — The number of input/prompt tokens used
        - `total_output_tokens` integer, nullable — The number of output/completion tokens used
        - `total_tokens` integer, nullable — The total number of tokens used
        - `call_count_with_user_keys` integer, nullable — The number of LLM calls made using user-provided vendor API keys
        - `call_count_with_fallback_keys` integer, nullable — The number of LLM calls made using fallback environment API keys
        - `call_count` integer, nullable — The number of LLM calls
        - `breakdown_by_models` LLMTokenUsageByModel[], nullable — Breakdown of token usage by LLM model and provider
          - `response_model` string, nullable — The LLM model used
          - `provider` string, nullable — The provider used for the response
          - `total_input_tokens` integer, nullable — The number of input/prompt tokens used
          - `total_output_tokens` integer, nullable — The number of output/completion tokens used
          - `total_tokens` integer, nullable — The total number of tokens used
          - `call_count_with_user_keys` integer, nullable — The number of LLM calls made using user-provided vendor API keys
          - `call_count_with_fallback_keys` integer, nullable — The number of LLM calls made using fallback environment API keys
          - `call_count` integer, nullable — The number of LLM calls
      - `llm_latency_stats` LLMLatencyStats — Latency statistics for a workflow run, including total calls, average latency, and breakdown by model.
        - `call_count` integer, nullable — The number of LLM calls
        - `total_latency_milliseconds` integer, nullable — The total latency across all calls in milliseconds
        - `average_latency_milliseconds` number, nullable — The average latency per call in milliseconds
        - `breakdown_by_models` LLMLatencyStatsByModel[], nullable — Breakdown of latency stats by LLM model and provider
          - `response_model` string, nullable — The LLM model used
          - `provider` string, nullable — The provider used for the response
          - `call_count` integer, nullable — The number of LLM calls
          - `total_latency_milliseconds` integer, nullable — The total latency across all calls in milliseconds
          - `average_latency_milliseconds` number, nullable — The average latency per call in milliseconds
      - `version_name` string, nullable — Version name of the workflow this run is associated with
      - `workflow_config_fully_hydrated` WorkflowConfigFullyHydratedOutput
        - `workflow_config` WorkflowConfigOutput
          - `logical_id` string, nullable — Unique identifier for the workflow
          - `name` string, nullable — Name of the workflow
          - `description` string, nullable — Description of the workflow
          - `category` string, nullable — Category of the workflow (e.g. 'User Created', 'System Examples', 'System Internal')
          - `attachable_llm_config_id` string, nullable — ID of the named LLM Configuration to use. If provided, overrides inline configuration.
          - `llms_config` union — Workflow level configuration for LLM based nodes used in the workflow. This will be used if no specific LLM configuration is provided for a node
            - AzureOpenAILLMConfigOutput
              - …
            - OpenAILLMConfigOutput
              - …
            - GoogleLLMConfigOutput
              - …
            - AnthropicLLMConfigOutput
              - …
            - BedrockLLMConfigOutput
              - …
            - CustomLLMConfigOutput
              - …
            - WorkflowDefaultLLMConfigOutput
              - …
            - NoLLMConfigOutput
              - …
            - LLMGroupConfigOutput
              - …
            - LLMGroupWithBackchannelConfigOutput
              - …
          - `main_response_config` PromptConfig
            - `prompt` string, nullable — System prompt for the LLM
          - `backchannel_response_config` PromptConfig
            - `prompt` string, nullable — System prompt for the LLM
          - `default_prompt_prefix` string, nullable — If present, this string will be added as prefix to every node's system prompt
          - `default_prompt_suffix` string, nullable — If present, this string will be added as suffix to every node's system prompt
          - `ignore_content_received_during_llm_tool_call_specification` boolean — If true, every LLM node in this workflow behaves as if ignore_content_received_during_llm_tool_call_specification is true, and every tool behaves as if ignore_content_received_during_llm_tool_call_specification is true: free-text content the LLM returns in the same response as one or more tool calls is ignored and treated as empty.
          - `tools_config` ToolsConfig
            - `tools` union[] — List of tool configurations
              - …
          - `mcp_servers` MCPServerConfig[], nullable — List of MCP server connections. Tools discovered from these servers are available to nodes with use_mcp_tools enabled.
            - `name` string, nullable — Display name for this MCP server connection
            - `server_url` string, required — MCP server URL (e.g. 'https://mcp.example.com/mcp')
            - `api_headers` object, nullable — HTTP headers to include when connecting to the MCP server (e.g. {'Authorization': 'Bearer ...'})
          - `global_condition_evaluation_method` 'tool_call' | 'independent_llm_evaluations'
          - `nodes` string[] — List of node configurations in the workflow
          - `edges` string[] — List of edge configurations in the workflow
          - `evaluation_config` EvaluationConfigOutput
            - `evaluator_workflow_id` string, nullable — ID of the workflow to be used as the evaluator
            - `evaluator_workflow_version_number` integer, nullable — Version number of the evaluator workflow to be used. If not specified, the active version will be used.
            - `enable_turn_by_turn_evaluation` boolean — If true, enables turn-by-turn evaluation of the workflow execution
          - `guardrail_strikes_config` GuardrailStrikesConfig
            - `max_guardrail_nodes_before_escalation` integer, nullable — Maximum number of times guardrail nodes may be entered (from a non-guardrail node) before the workflow escalates. None disables the feature.
            - `escalation_node_logical_id` string, nullable — Logical ID of the node to transition to when the escalation threshold is reached. If None (or it does not resolve to a node), the workflow finishes instead.
            - `escalation_message` string, nullable — Message sent to the user just before the workflow finishes when the escalation threshold is reached and no escalation node is configured. Supports dynamic/runtime variable templating. If None, the workflow finishes silently.
          - `miscellaneous` object — Miscellaneous config data that can be used by the workflow
          - `access_config` object, nullable — Access control configuration for the workflow
            - `access_level` 'personal' | 'team' | 'system' — Enum representing different access control levels.
            - `access_list` string[], nullable — List of user IDs that have access to this workflow
        - `node_configs` union[] — List of node configurations for runtime
          - union
            - WorkerLLMNodeConfigOutput
              - …
            - SayLLMNodeConfigOutput
              - …
            - SayStaticMessageNodeConfigOutput
              - …
            - SuperNodeConfigOutput
              - …
            - WorkflowRunFetchNodeConfigOutput
              - …
            - WorkflowRunEvalLLMNodeConfigOutput — Configuration for nodes that evaluate workflow runs. Evaluator nodes are used to assess, summarize and score outputs from workflow runs.
              - …
            - ToolNodeConfigOutput
              - …
            - StartConversationNodeConfigOutput
              - …
            - EndConversationNodeConfigOutput
              - …
            - SendSMSNodeConfigOutput
              - …
            - GoogleDocsNodeConfigOutput
              - …
            - HttpRequestNodeConfigOutput
              - …
            - AthenaPatientsSearchNodeConfigOutput
              - …
            - AthenaPatientsCreateNodeConfigOutput
              - …
            - AthenaPatientsUpdateNodeConfigOutput
              - …
            - AthenaAppointmentsCreateNodeConfigOutput
              - …
            - DeduplicateNodeConfigOutput
              - …
            - FieldExtractorNodeConfigOutput
              - …
            - NoOpNodeConfigOutput — A node that runs and succeeds without doing anything else. Use it as a placeholder for an unbuilt step, as a fan-in junction so several branches can converge on a single outgoing edge, or as a deterministic zero-cost stand-in in tests. This is not the same as setting ``disabled=True``. A disabled node is skipped entirely and emits no events at all, so downstream conditional edges have nothing to branch on. A no-op node runs: it emits the usual start/end node events and writes a success flag to the thread state.
              - …
        - `edge_configs` union[] — List of edge configurations for runtime
          - union
            - DirectEdgeConfigOutput
              - …
            - ConditionalEdgeConfigOutput
              - …
            - CompanionEdgeConfigOutput
              - …
        - `dynamic_variables` object — Dynamic variables that can be used across nodes and edges
        - `runtime_variables` object — Runtime variables that can be used across nodes and edges
      - `workflow_run_id` string, nullable — DB Object ID of this workflow run
      - `miscellaneous` object, nullable — Miscellaneous metadata that can be used by the workflow run
      - `voice_conversation_id` string, nullable — ID of the voice conversation/call that produced this workflow run, if any. Used to cross-link the run with its conversation log in the dashboard.
      - `source_workflow_run_id` string, nullable — For evaluation runs, this is the id of the original workflow run being evaluated. For checkpoint resumed runs, this is the id of the parent run being cloned.
      - `checkpoint_source_turn_index` integer, nullable — For checkpoint resumed runs, this stores the turn index of the parent run that was cloned.
      - `carried_over_llm_token_usage` LLMTokenUsage — Token usage information for a workflow run, including total tokens and breakdown by model and provider.
        - `total_input_tokens` integer, nullable — The number of input/prompt tokens used
        - `total_output_tokens` integer, nullable — The number of output/completion tokens used
        - `total_tokens` integer, nullable — The total number of tokens used
        - `call_count_with_user_keys` integer, nullable — The number of LLM calls made using user-provided vendor API keys
        - `call_count_with_fallback_keys` integer, nullable — The number of LLM calls made using fallback environment API keys
        - `call_count` integer, nullable — The number of LLM calls
        - `breakdown_by_models` LLMTokenUsageByModel[], nullable — Breakdown of token usage by LLM model and provider
          - `response_model` string, nullable — The LLM model used
          - `provider` string, nullable — The provider used for the response
          - `total_input_tokens` integer, nullable — The number of input/prompt tokens used
          - `total_output_tokens` integer, nullable — The number of output/completion tokens used
          - `total_tokens` integer, nullable — The total number of tokens used
          - `call_count_with_user_keys` integer, nullable — The number of LLM calls made using user-provided vendor API keys
          - `call_count_with_fallback_keys` integer, nullable — The number of LLM calls made using fallback environment API keys
          - `call_count` integer, nullable — The number of LLM calls
      - `carried_over_llm_latency_stats` LLMLatencyStats — Latency statistics for a workflow run, including total calls, average latency, and breakdown by model.
        - `call_count` integer, nullable — The number of LLM calls
        - `total_latency_milliseconds` integer, nullable — The total latency across all calls in milliseconds
        - `average_latency_milliseconds` number, nullable — The average latency per call in milliseconds
        - `breakdown_by_models` LLMLatencyStatsByModel[], nullable — Breakdown of latency stats by LLM model and provider
          - `response_model` string, nullable — The LLM model used
          - `provider` string, nullable — The provider used for the response
          - `call_count` integer, nullable — The number of LLM calls
          - `total_latency_milliseconds` integer, nullable — The total latency across all calls in milliseconds
          - `average_latency_milliseconds` number, nullable — The average latency per call in milliseconds
      - `is_evaluation_run` boolean — Flag indicating if this workflow run is an evaluation run triggered automatically after another workflow run completed
      - `evaluation_run_info` object, nullable — Contains information about the evaluation that was triggered for a workflow run. This is stored in the source workflow run after evaluation completes.
        - `evaluation_workflow_run_id` string, nullable — ID of the evaluation workflow run that was triggered for this source workflow run.
    - `debug_info` WorkflowRunsDebugInfo — Debug information for workflow runs. Currently empty but intentionally kept for future extensibility.
    - `schedule_id` string
    - `is_copilot_run` boolean — This run is an Emily copilot conversation, not a customer workflow run. Excluded from every run listing and from the copilot's own read tools; listed only for super-admins, because the transcript carries the output of every tool the model called across the team.
    - `copilot_session_id` string, nullable — The copilot session id this run records. Set only on copilot runs.
  - `workflow_deleted` boolean — True when the workflow backing this run no longer exists (was deleted).
  - `feedback_users` object — Display identities for every user referenced by this run's feedback, keyed by user id. Shipped with the run so the client can attribute a comment or rating without holding a copy of the team roster; ids that no longer resolve are simply absent.

## Other responses

- `422` — Validation Error

## Changes

- **2026-08-27** `35cbea12a781` — 4 info
  - the `llms_config` response's property default value changed from `{"logical_id":"llm_9dec1f99-a33e-4abe-b971-8f3e409cc617","provider":"default_provider","streaming":false,"max_retries":3,"max_parse_retries":3,"model_kwargs":{},"do_not_split_sentences":false,"type":"no_llm"}` to `{"logical_id":"llm_bbd2f738-3c3d-42f0-baaf-293ac91c24c4","provider":"default_provider","streaming":false,"max_retries":3,"max_parse_retries":3,"model_kwargs":{},"do_not_split_sentences":false,"type":"no_llm"}` for the status `200`
  - the `llms_config` response's property default value changed from `{"logical_id":"llm_f4d38a71-aa7d-4005-9e67-e4d4415852f6","provider":"default_provider","streaming":false,"max_retries":3,"max_parse_retries":3,"model_kwargs":{},"do_not_split_sentences":false,"type":"global_default_llm"}` to `{"logical_id":"llm_a7f2c24c-3ce7-4519-b8bc-78f17f76968e","provider":"default_provider","streaming":false,"max_retries":3,"max_parse_retries":3,"model_kwargs":{},"do_not_split_sentences":false,"type":"global_default_llm"}` for the status `200`
  - the `llms_config` response's property default value changed from `{"logical_id":"llm_f4d38a71-aa7d-4005-9e67-e4d4415852f6","provider":"default_provider","streaming":false,"max_retries":3,"max_parse_retries":3,"model_kwargs":{},"do_not_split_sentences":false,"type":"global_default_llm"}` to `{"logical_id":"llm_a7f2c24c-3ce7-4519-b8bc-78f17f76968e","provider":"default_provider","streaming":false,"max_retries":3,"max_parse_retries":3,"model_kwargs":{},"do_not_split_sentences":false,"type":"global_default_llm"}` for the status `200`
  - the `llms_config` response's property default value changed from `{"logical_id":"llm_f4d38a71-aa7d-4005-9e67-e4d4415852f6","provider":"default_provider","streaming":false,"max_retries":3,"max_parse_retries":3,"model_kwargs":{},"do_not_split_sentences":false,"type":"global_default_llm"}` to `{"logical_id":"llm_a7f2c24c-3ce7-4519-b8bc-78f17f76968e","provider":"default_provider","streaming":false,"max_retries":3,"max_parse_retries":3,"model_kwargs":{},"do_not_split_sentences":false,"type":"global_default_llm"}` for the status `200`
- …earlier changes not shown

[Full history](https://skmtc.dev/interactly/apis/interactly-api-3/changes/workflows/v1/workflow-runs/:workflow_run_id/get.md)

---

[API](https://skmtc.dev/interactly/apis/interactly-api-3.md) · [All operations](https://skmtc.dev/interactly/apis/interactly-api-3/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/interactly/interactly-api-3/revisions/35cbea12a781/schema)
