---
title: "Cancel Sweep V1"
method: POST
path: "/v1/sweeps/{public_id}/cancel"
tags: ["v1", "sweeps"]
---

# Cancel Sweep V1

`POST /v1/sweeps/{public_id}/cancel`

## Request

- Base URL: `https://thrustlab.com`
- URL: `https://thrustlab.com/v1/sweeps/{public_id}/cancel`
- Auth: HTTP bearer

## Path parameters

- `public_id` string, required

## Request body

- SweepCancelBody
  - `save_partial` boolean

## Response `200`

Successful Response

- SweepResource
  - `analysis_type` string, required
  - `battery_component_id` string, required
  - `cancel_requested_at` string, nullable: When a cancel was requested for a RUNNING sweep. The status stays `running` until the worker honours it at its next point, keeping the points already solved. Null when no cancel was requested; a QUEUED sweep cancels immediately instead and never sets this.
  - `completed_at` string, nullable: When the sweep reached a terminal state — completed, failed or canceled. Null until then.
  - `completed_points` integer, required
  - `created_at` string, nullable: When the sweep was submitted.
  - `credits_breakdown` SweepCreditsBreakdown: How this sweep's credit cost was arrived at. A sweep bills one compute unit per evaluation point per physical rotor, so `points * rotors * cu_per_point_per_rotor` is today's price. `total` is what was actually charged: a sweep submitted before the pricing change of 2026-09-03 was billed under a sub-linear curve and reports that lower figure, which is why the two can differ on an old run.
    - `cu_per_point_per_rotor` integer, required: Compute units billed per point per rotor.
    - `points` integer, required: Evaluation points in the grid.
    - `rotors` integer, required: Physical rotors the grid was solved for.
    - `total` integer, required: Credits actually charged for this sweep.
  - `credits_cost` integer, required
  - `dispatched_at` string, nullable: When the sweep was handed to the worker queue. Null while it is parked and has never been dispatched. NOT the start of execution: launch_intent=run dispatches at submit, so this can equal created_at while the sweep waits for a slot.
  - `error` object, nullable, required
  - `id` string, required
  - `input_snapshot` object, nullable
  - `inputs` SweepInputs, required
    - `airspeed_m_s` number, required
    - `battery_charge_pct` number, required
    - `density_kg_m3` number, required
    - `solver` string, required
  - `is_starred` boolean, required
  - `name` string, nullable, required
  - `object` 'sweep', required
  - `plot_config_json` object[], nullable, required
  - `progress` number, nullable, required
  - `project_id` string, required
  - `propeller_model` string
  - `rotor_groups` RotorGroupResource[], required
    - `coax_position_m` number
    - `coax_stack_id` integer
    - `count` integer, required
    - `esc_motor_wire_resistance_mohm` number, required
    - `esc_pwm_frequency_khz` number
    - `esc_resistance_mohm` number, required
    - `esc_sync_rectification` boolean
    - `esc_timing` string
    - `esc_type` string, required
    - `label` string, required
    - `motor_component_id` string, nullable, required
    - `propeller_component_id` string, nullable
    - `propeller_label` object, nullable: The printed size a Fast-model rotor ran from: diameter_m, pitch_m, num_blades, family, chord_ratio, camber_pct, and optionally weight_g and max_rpm. Null on a Full-model rotor.
    - `rotation_sense` integer
    - `throttle_pct` number, required
  - `snapshot_version` integer
  - `solver_engine` string
  - `started_at` string, nullable: When a worker claimed the sweep and solving began. Null until then. started_at - dispatched_at is the wait for a slot; completed_at - started_at is the solve itself.
  - `status` 'draft' | 'queued' | 'running' | 'completed' | 'failed' | 'canceled', required
  - `summary` object, nullable, required
  - `sweep_config` object, nullable, required
  - `total_points` integer, required

## Other responses

- `422`: Validation Error

---

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