---
title: "Delete Runs"
method: POST
path: "/api/v1/runs/delete"
tags: ["Runs"]
---

# Delete Runs

`POST /api/v1/runs/delete`

Deletes up to 250 runs in one fail-soft, non-transactional request. Each run is processed independently. A valid batch returns `200` even when some items fail; inspect `results` and `summary` for per-run outcomes. Invalid request bodies are rejected before mutating any run.

## Request body

- BatchDeleteRunsRequest — Run IDs to delete as one bounded fail-soft batch.
  - `run_ids` string[], required — Run IDs to process, in result order.
  - `force` boolean — Whether to force deletion of active runs. Defaults to `false`.

## Response `200`

Batch processed

- BatchDeleteRunsResponse — Per-run results for a fail-soft batch delete request.
  - `results` BatchDeleteRunsResult[], required — Results ordered exactly like the request `run_ids`.
    - `run_id` string, required — Run ID from the request item.
    - `ok` boolean, required — Whether this item succeeded.
    - `outcome` 'deleted' | 'already_absent' | 'sandbox_preserved' | 'conflict' | 'error', required — Machine-readable item outcome.
    - `sandbox` DeleteRunSandbox
      - `provider` 'local' | 'docker' | 'daytona', required — Sandbox provider discriminator.
      - `id` string, required
    - `error` ErrorResponseEntry — A single error entry in an error response.
      - `status` string, required — HTTP status code as a string.
      - `title` string, required — Short error classification.
      - `detail` string, required — Human-readable error description.
      - `code` string — Optional machine-readable error code for structured client handling.
      - `request_id` string, uuid — Server-generated request identifier; matches the x-request-id response header.
  - `summary` BatchDeleteRunsSummary, required — Aggregate counts for a batch delete request.
    - `requested` integer, required — Number of requested run IDs.
    - `succeeded` integer, required — Number of item results with `ok=true`.
    - `failed` integer, required — Number of item results with `ok=false`.

## Other responses

- `400` — Invalid batch request
- `401` — Not authenticated
- `500` — Request-level server error

---

[API](https://skmtc.net/fabro-sh/apis/fabro-run-api.md) · [All operations](https://skmtc.net/fabro-sh/apis/fabro-run-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/fabro-sh/fabro-run-api/versions/bee030053823/schema)
