---
title: "Get plan execution status"
method: GET
path: "/api/v1/plan/{id}"
tags: ["Multi-Agent Planning"]
---

# Get plan execution status

`GET /api/v1/plan/{id}`

## Request

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

Retrieve the status of a plan by ID.

Returns detailed execution status including:
- Overall plan status (pending, executing, completed, failed, expired)
- Step-level progress with completion percentage
- Duration and cost tracking
- Error details if execution failed

**New in #1075:** Response now includes unified execution tracking with:
- `steps` array with individual step status
- `progress_percent` for real-time progress
- `duration` for elapsed time
- `estimated_cost_usd` and `actual_cost_usd` for cost tracking

## Path parameters

- `id` string, required

## Response `200`

Plan status retrieved successfully

- PlanStatusResponse: Unified execution status for MAP plans. Provides step-level progress tracking, duration, and cost information. Compatible with the unified ExecutionStatus schema.
  - `plan_id` string, required: Original plan identifier
  - `execution_id` string: Unified execution ID for cross-system tracking
  - `status` 'pending' | 'executing' | 'completed' | 'failed' | 'expired' | 'cancelled' | 'aborted' | 'awaiting_approval', required: Current execution status
  - `query` string, required: Original user query that created the plan
  - `domain` string, required: Domain classification of the plan
  - `total_steps` integer, required: Total number of steps in the plan
  - `completed_steps` integer: Number of completed steps
  - `progress_percent` number, float: Completion percentage (0-100)
  - `duration` string: Human-readable elapsed duration
  - `estimated_cost_usd` number, float: Estimated total cost in USD
  - `actual_cost_usd` number, float: Actual cost incurred so far in USD
  - `created_at` string, date-time: When the plan was created
  - `started_at` string, date-time: When execution started
  - `completed_at` string, date-time: When execution completed (if terminal)
  - `expires_at` string, date-time: When the plan expires
  - `error` string: Error message if status is failed
  - `steps` StepStatus[]: Detailed status of each step
    - `step_id` string, required: Unique step identifier
    - `step_index` integer, required: Position in the execution sequence (0-based)
    - `step_name` string, required: Human-readable step name
    - `step_type` 'llm_call' | 'tool_call' | 'connector_call' | 'human_task' | 'synthesis' | 'action' | 'gate': Type of step operation
    - `status` 'pending' | 'running' | 'completed' | 'failed' | 'skipped' | 'blocked' | 'approval', required: Current step status
    - `duration` string: Human-readable step duration
    - `started_at` string, date-time: When the step started
    - `ended_at` string, date-time: When the step ended
    - `model` string: LLM model used (for llm_call steps)
    - `provider` string: LLM provider (for llm_call steps)
    - `cost_usd` number, float: Cost of this step in USD
    - `input_tokens` integer: Number of input tokens (for LLM steps)
    - `output_tokens` integer: Number of output tokens (for LLM steps)
    - `error` string: Error message if step failed
  - `metadata` object: Additional plan metadata

## Other responses

- `404`: Plan not found
- `410`: Plan expired
- `503`: Plan service unavailable

---

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