---
title: "Get unified execution status"
method: GET
path: "/api/v1/unified/executions/{id}"
tags: ["Unified Executions"]
---

# Get unified execution status

`GET /api/v1/unified/executions/{id}`

## Request

- Base URL: `https://orchestrator.getaxonflow.com`
- URL: `https://orchestrator.getaxonflow.com/api/v1/unified/executions/{id}`
- Auth: none declared. Required headers: `X-Tenant-ID`, `X-Org-ID`
- TypeScript: <https://skmtc.dev/getaxonflow/apis/axonflow-orchestrator-api/docs/api/v1/unified/executions/:id/get.ts> (a function with typed inputs; its response is checked against the schema)

Returns the unified status record for a MAP plan or WCP workflow
execution. The id is resolved across both subsystems (direct
execution id, `plan_...` plan ids, `wf_`/`wcp_` workflow ids).
Requires both `X-Tenant-ID` and `X-Org-ID`; a tenant/org mismatch
returns 404 (not 403) to avoid a cross-tenant existence oracle.

## Path parameters

- `id` string, required

## Headers

- `X-Tenant-ID` string, required
- `X-Org-ID` string, required

## Response `200`

Unified execution status

- UnifiedExecutionStatus: Unified status record covering both MAP plans and WCP workflows. Distinct from the replay Execution schema and from the MAP StepStatus schema.
  - `execution_id` string
  - `execution_type` 'map_plan' | 'wcp_workflow'
  - `name` string
  - `source` string
  - `status` 'pending' | 'running' | 'completed' | 'failed' | 'cancelled' | 'aborted' | 'expired'
  - `current_step_index` integer
  - `total_steps` integer
  - `progress_percent` number, double
  - `started_at` string, date-time
  - `completed_at` string, date-time
  - `duration` string
  - `estimated_cost_usd` number, double
  - `actual_cost_usd` number, double
  - `steps` UnifiedStepStatus[]
    - `step_id` string
    - `step_index` integer
    - `step_name` string
    - `step_type` 'llm_call' | 'tool_call' | 'connector_call' | 'human_task' | 'synthesis' | 'action' | 'gate'
    - `status` 'pending' | 'running' | 'completed' | 'failed' | 'skipped' | 'blocked' | 'approval'
    - `started_at` string, date-time
    - `ended_at` string, date-time
    - `duration` string
    - `decision` 'allow' | 'block' | 'require_approval'
    - `decision_reason` string
    - `policies_matched` string[]
    - `approval_status` 'pending' | 'approved' | 'rejected' | 'expired'
    - `approved_by` string
    - `approved_at` string, date-time
    - `rejected_by` string
    - `rejected_at` string, date-time
    - `model` string
    - `provider` string
    - `cost_usd` number, double
    - `tokens_in` integer
    - `tokens_out` integer
    - `input` unknown
    - `output` unknown
    - `result_summary` string
    - `error` string
  - `error` string
  - `tenant_id` string
  - `org_id` string
  - `user_id` string
  - `client_id` string
  - `metadata` object
  - `created_at` string, date-time
  - `updated_at` string, date-time

## Other responses

- `400`: Missing execution id
- `401`: Missing tenant or org identity headers
- `404`: Execution not found (or belongs to another tenant/org)
- `500`: Failed to resolve execution

---

[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)
