---
title: "Cancel a pending plan"
method: POST
path: "/api/v1/plan/{id}/cancel"
tags: ["Multi-Agent Planning"]
---

# Cancel a pending plan

`POST /api/v1/plan/{id}/cancel`

## Request

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

Cancel a plan that has not yet completed execution.
Only plans with status `pending` or `executing` can be cancelled.
Returns 409 if the plan is already completed or cancelled.

## Path parameters

- `id` string, required

## Request body

- object
  - `reason` string: Optional cancellation reason

## Response `200`

Plan cancelled successfully

- CancelPlanResponse
  - `success` boolean
  - `plan_id` string
  - `status` 'cancelled'
  - `message` string: Human-readable summary of the cancel outcome (e.g. "Plan cancelled — 3 of 5 steps had already executed and were rolled back"). Useful for end-user UI; programmatic callers should prefer `status`.

## Other responses

- `404`: Plan not found
- `409`: Plan cannot be cancelled (already completed or cancelled)

---

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