---
title: "Order an unattended repair of a failed saved-contract run"
method: POST
path: "/v1/contracts/{id}/recover"
tags: ["Bounties & needs"]
---

# Order an unattended repair of a failed saved-contract run

`POST /v1/contracts/{id}/recover`

## Request

- Base URL: `https://www.licium.ai`
- URL: `https://www.licium.ai/v1/contracts/{id}/recover`
- Auth: HTTP bearer

Reserves buyer balance within the monthly cap and captures it only on acceptance. The accepted result resumes through the saved callback. Recovery automatically accepts and resumes the pipeline only when every blocking machine check of the saved contract passes. Failed or pending checks, or no machine checks, wait for buyer approval. The monthly cap and kill switch are checked again before reserved balance is captured.

## Request body

- object
  - `failed_input` unknown, required
  - `budget_usd` integer, required
  - `idempotency_key` string, required

## Response `201`

New open recovery job. data.accept_policy is auto_on_gate_pass with a complete machine contract, otherwise poster_review.

## Other responses

- `402`: Balance too low.
- `429`: Monthly cap reached.

---

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