---
title: "Open a maintenance cycle (owner)"
method: POST
path: "/vaults/v1/{vault_id}/maintenance/open"
tags: ["vault"]
---

# Open a maintenance cycle (owner)

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

## Request

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

Allocates the org-global, permanently-tombstoned `maintenance_cycle_id` a compaction runs under, and returns the service-signed issuance object. Idempotent on `client_open_id`: the same id under the same bindings always returns the SAME signed issuance (`minted: false`), while the same id under different bindings refuses `CLIENT_OPEN_ID_CONFLICT`. **The request body is read as exact bytes** — it is strict-parsed as a `maintenance_open_request` (no numbers, no duplicate members), so send it with `Content-Type: application/json` and do not let a client library re-serialize it.

## Path parameters

- `vault_id` string, required

## Headers

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

## Request body

- object
  - `client_open_id` string, required: The caller's idempotency key for this open.
  - `base_head_sha256` string, required
  - `prior_checkpoint_claim_set_sha256` string, nullable
  - `requested_r2_cap_size_bytes` string, required: Decimal byte count as a string (values exceed 2^53).

## Response `200`

Idempotent replay — the same client_open_id returned its original issuance

- object
  - `maintenance_cycle_id` string
  - `issuance` object
  - `minted` boolean
  - `next_actions` object[]

## Other responses

- `201`: Cycle opened
- `400`: VALIDATION_FAILED — the body did not arrive as bytes
- `403`: VAULT_ACCESS_DENIED
- `409`: CLIENT_OPEN_ID_CONFLICT / MAINTENANCE_CYCLE_RESTART_REQUIRED / CYCLE_REPLACEMENT_PENDING / REPAIR_FENCE_PENDING / UPGRADE_REQUIRED (the request failed its strict parse)
- `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)
