---
title: "Submit a prune intent (owner)"
method: POST
path: "/vaults/v1/{vault_id}/prune-intents"
tags: ["vault"]
---

# Submit a prune intent (owner)

`POST /vaults/v1/{vault_id}/prune-intents`

## Request

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

Publishes the owner-signed `prune_intent`. Everything fallible happens before the intent's pre-I/O fence; once that transaction commits nothing refuses and the platform worker replays the remaining steps identically, so `stored: false` means “the create-only intent write is not yet observed”, never “this failed”. **The request body is read as exact bytes** — the intent is strict-parsed and signature-verified over exactly what you sent, 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: The complete signed `prune_intent` object, sent verbatim.

## Response `201`

Intent fenced (and, when observed, stored)

- object
  - `object_id` string
  - `repo_id` string
  - `state` string
  - `gc_epoch` string
  - `candidate_count` integer
  - `stored` boolean
  - `next_actions` object[]

## Other responses

- `400`: VALIDATION_FAILED — the body did not arrive as bytes
- `403`: VAULT_ACCESS_DENIED
- `409`: GC_EPOCH_STALE / STAGE_CANDIDATE_RESERVED / REPAIR_FENCE_PENDING / CYCLE_REPLACEMENT_PENDING / UPGRADE_REQUIRED (the intent failed its strict parse) / VAULT_BYO_PRUNE_NOT_SUPPORTED (a storage_profile byo vault: run402 cannot delete from a bucket it holds no credential to, and client-executed deletion has not shipped)
- `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)
