---
title: "Get workflow status"
method: GET
path: "/api/v1/workflows/{workflow_id}"
tags: ["Workflow Control Plane"]
---

# Get workflow status

`GET /api/v1/workflows/{workflow_id}`

## Request

- Base URL: `https://orchestrator.getaxonflow.com`
- URL: `https://orchestrator.getaxonflow.com/api/v1/workflows/{workflow_id}`
- Auth: none declared
- TypeScript: <https://skmtc.dev/getaxonflow/apis/axonflow-orchestrator-api/docs/api/v1/workflows/:workflow_id/get.ts> (a function with typed inputs; its response is checked against the schema)

Get the current status of a workflow including all step decisions

## Path parameters

- `workflow_id` string, required

## Response `200`

Workflow status

- WorkflowStatusResponse
  - `workflow_id` string
  - `workflow_name` string
  - `source` 'langgraph' | 'langchain' | 'crewai' | 'external'
  - `status` 'in_progress' | 'completed' | 'aborted' | 'failed'
  - `trace_id` string: External trace ID for correlation with Langsmith, Datadog, or OpenTelemetry
  - `current_step_index` integer
  - `total_steps` integer
  - `started_at` string, date-time
  - `completed_at` string, date-time
  - `metadata` object
  - `steps` WorkflowStepInfo[]
    - `step_id` string
    - `step_index` integer
    - `step_name` string
    - `step_type` 'llm_call' | 'tool_call' | 'connector_call' | 'human_task'
    - `decision` 'allow' | 'block' | 'require_approval'
    - `approval_status` 'pending' | 'approved' | 'rejected' | 'expired'
    - `gate_checked_at` string, date-time
    - `approved_by` string: User email of the approver when `approval_status` is `approved`. Empty for `pending`, and empty for `expired` (auto-timeout — no human reviewer) or for `rejected` paths without a recorded reviewer.
    - `completed_at` string, date-time: When the step transitioned to a terminal state (approved, rejected, or auto-completed). Pair with `gate_checked_at` to compute approval latency.
    - `decision_reason` string: Free-form rationale recorded alongside the decision — populated by the approver when present, or by the policy engine for auto-decisions. Per-step audit context.

## Other responses

- `404`: Resource not found (triplet envelope)

---

[API](https://skmtc.dev/getaxonflow/apis/axonflow-orchestrator-api.md) - [All operations](https://skmtc.dev/getaxonflow/apis/axonflow-orchestrator-api/llms.txt) - [OpenAPI document](https://skmtc.dev/getaxonflow/apis/axonflow-orchestrator-api/revisions/f408ef3ec9dd?raw)
