---
title: "Abort a maintenance cycle before its first checkpoint (owner)"
method: POST
path: "/vaults/v1/{vault_id}/maintenance/abort"
tags: ["vault"]
---

# Abort a maintenance cycle before its first checkpoint (owner)

`POST /vaults/v1/{vault_id}/maintenance/abort`

## Request

- Base URL: `https://api.run402.com`
- URL: `https://api.run402.com/vaults/v1/{vault_id}/maintenance/abort`
- Auth: one of:
  - API key in header `SIGN-IN-WITH-X`
  - HTTP bearer

Owner abort, legal ONLY while the cycle is still `PREPARED` — once the first checkpoint is admitted the cycle has replaced state and the only exits are the machine's own terminals. Reports the terminal's publication state truthfully: `deferred` means the terminal is prepared and the platform worker will publish it, and is not a failure. Every release, conversion, and eligibility change happens only when that terminal is applied.

## Path parameters

- `vault_id` string, required

## Headers

- `SIGN-IN-WITH-X` string, required

## Request body

- object
  - `maintenance_cycle_id` string, required: `mc_<32 hex>`.

## Response `200`

Abort accepted

- object
  - `maintenance_cycle_id` string
  - `terminal_publication` string
  - `cycle` object, nullable
  - `next_actions` object[]

## Other responses

- `400`: VALIDATION_FAILED — malformed maintenance_cycle_id
- `403`: VAULT_ACCESS_DENIED — also returned for a cycle that is not this vault's
- `409`: MAINTENANCE_CYCLE_RESTART_REQUIRED (past the first checkpoint) / CYCLE_REPLACEMENT_PENDING
- `503`: SERVICE_UNAVAILABLE — storage or the service signing key is not provisioned

---

[API](https://skmtc.dev/run402/apis/run402-api.md) · [All operations](https://skmtc.dev/run402/apis/run402-api/llms.txt) · [OpenAPI document](https://skmtc.dev/run402/apis/run402-api/revisions/893607557f50?raw)
