---
title: "Reclaim a stalled allocation (owner-only)"
method: POST
path: "/vaults/v1/{vault_id}/allocations/reclaim"
tags: ["vault"]
---

# Reclaim a stalled allocation (owner-only)

`POST /vaults/v1/{vault_id}/allocations/reclaim`

## Request

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

Owner-only (`gitvault.create`). After the reclaim window with no genesis, supersedes the stalled allocation (republished with `status: "superseded"`) and issues a fresh one at generation + 1 with the reclaimer's own creator keys. Serialized with genesis admission on the vault row: once a generation-zero admission passed its irreversible fence, reclaim is refused.

## Path parameters

- `vault_id` string, required

## Headers

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

## Request body

- object
  - `client_creation_id` string, required: 32 lowercase hex — MUST differ from the superseded allocation's.
  - `creator_signing_pubkey` string, required
  - `creator_encryption_pubkey` string, required

## Response `201`

Fresh allocation issued

- object
  - `repo_id` string
  - `project_id` string
  - `org_id` string, uuid
  - `allocation_generation` integer
  - `allocation` object: The control-plane-signed `allocation` record, exactly as stored.
  - `allocation_sha256` string
  - `deduplicated` boolean
  - `next_actions` object[]

## Other responses

- `400`: VALIDATION_FAILED — the presented `client_creation_id` is the superseded allocation's; a reclaim must present a NEW one
- `403`: Not authorized (VAULT_ACCESS_DENIED)
- `409`: VAULT_CREATION_CONFLICT — a genesis exists, or the reclaim window has not elapsed

---

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