---
title: "Retry blocked work after verified cleanup"
method: POST
path: "/v1/agents/{id}/runs/{run_id}/retry"
tags: ["Managed agents"]
---

# Retry blocked work after verified cleanup

`POST /v1/agents/{id}/runs/{run_id}/retry`

## Request

- Base URL: `/` (relative, and the document was published on a file host, not at the API’s origin)
- URL: `/v1/agents/{id}/runs/{run_id}/retry`
- Auth: HTTP bearer

Retains the accepted revision, spending policy and external-effect history. Unknown effects require explicit reconciliation before retry.

## Path parameters

- `id` string, required
- `run_id` string, required

## Headers

- `Idempotency-Key` string, required

## Response `202`

Success

- ManagedAgentRun
  - `attempt_budget_usd` number, nullable: Immutable attempt reservation accepted for this logical run. Absent for the legacy allocation policy.
  - `recovery_policy` 'checkpoint-v1': Accepted application-state recovery policy. Omitted for revisions with explicit file recovery.
  - `checkpoint_id` string: Current committed application-state checkpoint, including an empty baseline. This identity can differ from the latest capture reported by checkpoint_status.
  - `checkpoint_status` 'pending' | 'ready' | 'committed' | 'failed': Latest capture status. Ready means uploaded files are verified but not yet committed with the journal boundary.
  - `checkpoint_error` string: Failure code for the latest application-state capture. A failed capture does not replace committed recovery state.
  - `last_checkpoint_at` string, date-time: Commit time of the current useful application-state checkpoint. Omitted for empty baselines and runs without saved state.
  - `payload_expired` boolean
  - `id` string, required
  - `agent_id` string, required
  - `revision` integer, required
  - `session` string
  - `status` 'queued' | 'starting' | 'running' | 'waiting' | 'recovering' | 'blocked' | 'completed' | 'cancelled', required
  - `reason` string
  - `input` unknown
  - `result` unknown
  - `deadline` string, date-time
  - `next_wake_at` string, date-time
  - `created_at` string, date-time
  - `updated_at` string, date-time
  - `sandbox_id` string
  - `exec_id` string
  - `attempt` integer
  - `segment` integer
  - `startup` SandboxStartup: Measured startup stages. Missing durations are unobserved. Overlapping durations must not be added into elapsed latency.
    - `stage` string
    - `acquisition_ms` integer
    - `image_preparation_ms` integer
    - `project_download_ms` integer
    - `project_materialization_ms` integer
    - `checkpoint_download_ms` integer
    - `checkpoint_restore_ms` integer
    - `setup_ms` integer
    - `driver_start_ms` integer
    - `image_cache_reads` integer
    - `image_cache_hits` integer
    - `project_prefetched` boolean
    - `checkpoint_prefetched` boolean
    - `warm_claimed` boolean
    - `warm_miss_reason` string
  - `group_id` string: Present for a task belonging to a static agent group.
  - `task_key` string
  - `depends_on` string[]: Immutable prerequisite task keys within the group.

## Other responses

- `default`: Operation refused with a diagnostic and next action

## Changes

- **2026-10-01** `ba84c74aeec8`: 4 info
  - added the optional property `attempt_budget_usd` to the response with the `202` status
  - added the optional property `depends_on` to the response with the `202` status
  - added the optional property `group_id` to the response with the `202` status
  - added the optional property `task_key` to the response with the `202` status
- **2026-10-01** `544fef290a54`: 4 warning
  - removed the optional property `attempt_budget_usd` from the response with the `202` status
  - removed the optional property `depends_on` from the response with the `202` status
  - removed the optional property `group_id` from the response with the `202` status
  - removed the optional property `task_key` from the response with the `202` status
- **2026-09-27** `6beb2f6dc3ca`: 1 info
  - added the optional property `attempt_budget_usd` to the response with the `202` status
- **2026-09-27** `3116341c21c1`: 3 info
  - added the optional property `depends_on` to the response with the `202` status
  - added the optional property `group_id` to the response with the `202` status
  - added the optional property `task_key` to the response with the `202` status

[Operation history](https://skmtc.dev/nodus-compute/apis/nodus-infrastructure-execution-api/changes/v1/agents/:id/runs/:run_id/retry/post.md)

---

[API](https://skmtc.dev/nodus-compute/apis/nodus-infrastructure-execution-api.md) - [All operations](https://skmtc.dev/nodus-compute/apis/nodus-infrastructure-execution-api/llms.txt) - [OpenAPI document](https://skmtc.dev/nodus-compute/apis/nodus-infrastructure-execution-api/revisions/a59210899d95?raw)
