---
title: "Get Execution Status"
method: GET
path: "/api/workflows/{id}/executions/{executionId}"
tags: ["Workflows"]
---

# Get Execution Status

`GET /api/workflows/{id}/executions/{executionId}`

Get the current status of a workflow execution. Returns the run's lifecycle state (`running`, `paused`, `completed`, `failed`, etc.), timing, error, and optionally per-block outputs. Designed for polling — works for any execution, including ones that pause and resume.

## Path parameters

- `id` string, required
- `executionId` string, required

## Query parameters

- `includeOutput` 'true' | 'false'
- `selectedOutputs` string

## Response `200`

Execution status returned.

- WorkflowExecutionStatus — Current status of a workflow execution.
  - `executionId` string — The unique identifier of the execution.
  - `workflowId` string — The unique identifier of the workflow.
  - `status` 'pending' | 'running' | 'paused' | 'completed' | 'failed' | 'cancelled' — Current normalized lifecycle status. `paused` is set when a row exists in pausedExecutions with status `paused` or `partially_resumed`; otherwise the workflowExecutionLogs row's status field is used.
  - `trigger` 'api' | 'manual' | 'schedule' | 'webhook' | 'chat' — What triggered the execution.
  - `level` 'info' | 'warning' | 'error' — Log level of the execution.
  - `startedAt` string, date-time — ISO 8601 timestamp when execution started.
  - `endedAt` string, date-time, nullable — ISO 8601 timestamp when execution ended. Null while the run is in flight.
  - `totalDurationMs` integer, nullable — Total duration of the execution in milliseconds. Null while the run is in flight.
  - `paused` object, nullable — Pause-state details. Present only when status is `paused`.
    - `pausedAt` string, date-time — ISO 8601 timestamp when the workflow was paused.
    - `resumeAt` string, date-time, nullable — Earliest scheduled resume time across active pause points. Null for human-only pauses.
    - `pauseKind` 'time' | 'human', nullable — What kind of pause the workflow is waiting on.
    - `blockedOnBlockId` string, nullable — The block currently blocking resume.
    - `pausedExecutionId` string — ID of the paused-execution row, useful for cross-referencing with the human-in-the-loop endpoints.
    - `pausePointCount` integer — Total number of pause points recorded for this execution.
    - `resumedCount` integer — Number of pause points already resumed.
  - `cost` object, nullable — Cost summary. Detailed token / model breakdown lives on the /v1/logs detail endpoint.
    - `total` number — Total cost in USD.
  - `error` string, nullable — Error message. Present only when status is `failed`.
  - `finalOutput` object, nullable — The workflow's final output. Returned only when ?includeOutput=true AND status is `completed`.
  - `blockOutputs` object, nullable — Per-block outputs keyed by the selector string. Returned only when `?selectedOutputs` is set.

## Other responses

- `401` — Invalid or missing API key. Ensure the X-API-Key header is set with a valid key.
- `404` — The requested resource was not found. Verify the ID is correct and belongs to your workspace.

---

[API](https://skmtc.dev/simstudioai/apis/sim-api.md) · [All operations](https://skmtc.dev/simstudioai/apis/sim-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/simstudioai/sim-api/revisions/66a471c5b1df/schema)
