# Save the disk and release the machine `POST /v1/sandboxes/{sandbox}/stop` **In this build:** Works on the simulator or a real VM. **Scope:** `sandbox.stop` **CLI:** `harebox stop` ## Request: `StopRequest` | Field | Type | Notes | |---|---|---| | `force` | `boolean` | Stop now using the last good snapshot. Newer writes are lost. | | `pre_stop_command` | `string` | | ## Response: 202 `Sandbox` | Field | Type | Notes | |---|---|---| | `id` (required) | `string` | | | `name` | `string` | | | `state` (required) | `LifecycleState` | | | `conditions` (required) | `array` | | | `condition_details` | `object` | Why each condition applies, and for sleep, what is keeping the sandbox awake. | | `region` (required) | `Region` | | | `tier` (required) | `Tier` | | | `size` (required) | `Size` | | | `image` | `string` | Base image: ubuntu-24.04. | | `location` | `object` | Where the sandbox runs now. Read-only: HareBox places sandboxes itself and may move them on resume. | | `created_by` | `string` | The API key that created this sandbox. A key's monthly budget counts what it created. | | `project` | `string or null` | | | `fleet` | `string or null` | | | `labels` | `Labels` | | | `environment` | `object or null` | | | `template` | `string or null` | | | `forked_from` | `string or null` | | | `ipv4` | `string or null` | | | `ipv6` | `string or null` | | | `subdomain` | `string` | | | `sleep` | `SleepPolicy` | | | `deadline` | `string or null` | Absolute stop time. Null means none. | | `visibility` | `string` | One of: `private`, `shared` | | `capabilities` (required) | `object` | What this sandbox can do right now. Agents should check these rather than infer them. | | `hydration` | `object or null` | | | `simulated` | `boolean` | True when the machine is the labelled simulator rather than a real VM. | | `fork_ids` | `array` | All new sandboxes, when a fork asked for a count. | | `meter` | `object` | | | `created_at` (required) | `string` | | | `ready_at` | `string or null` | | Errors follow [one format](../errors.html).