---
title: How to Checkpoint a MicroVM (public)
description: Create a checkpoint of a MicroVM, create new MicroVMs from it, and delete it using the Control Panel, doctl, or the API.
product: Microvms
url: https://docs.digitalocean.com/products/microvms/how-to/checkpoint/
last_updated: "2026-10-09"
---

> **For AI agents:** The documentation index is at [https://docs.digitalocean.com/llms.txt](https://docs.digitalocean.com/llms.txt). Markdown versions of pages use the same URL with `index.html.md` in place of the HTML page (for example, append `index.html.md` to the directory path instead of opening the HTML document).

# How to Checkpoint a MicroVM (public)

DigitalOcean MicroVMs are lightweight virtual machines that run a container image in an isolated kernel, pause automatically when idle, and resume on the next request with memory, files, and processes intact.

A DigitalOcean MicroVM checkpoint captures a MicroVM’s memory and disk. New MicroVMs created from the checkpoint start from that state and inherit its region, size, image, and environment variables. For what a new MicroVM inherits and the checkpoint statuses, see [MicroVM Checkpoints](https://docs.digitalocean.com/products/microvms/concepts/checkpoints/index.html.md).

You can create a checkpoint of a running or paused MicroVM with `doctl` or the API. The Control Panel requires the MicroVM to be running.

## Checkpoint a MicroVM Using the Control Panel

Go to the [**MicroVMs** page](https://cloud.digitalocean.com/microvms), select the MicroVM, click the **Checkpoints** tab, then click **Create checkpoint**. If the MicroVM is paused, resume it first. The capture runs in the background, and the checkpoint appears on the **Checkpoints** tab when it is ready.

To create a MicroVM from the checkpoint, go to the [**Create MicroVM** page](https://cloud.digitalocean.com/microvms/new). Under **Choose an image**, open **Checkpoint** and select the checkpoint. The region and size come from the checkpoint. Complete the remaining settings as described in [How to Create a MicroVM](https://docs.digitalocean.com/products/microvms/how-to/create/index.html.md#create-a-microvm-using-the-control-panel).

To delete a checkpoint, open its menu on the **Checkpoints** tab and click **Delete**, then confirm in the **Delete checkpoint** window. You can no longer create MicroVMs from a deleted checkpoint.

## Checkpoint a MicroVM Using doctl

Create a checkpoint. `--name` is optional:

```shell
doctl compute microvm checkpoint create <your-microvm-id> --name example-checkpoint
```

List a MicroVM’s checkpoints, newest first:

```shell
doctl compute microvm checkpoint list --microvm-id <your-microvm-id>
```

Check whether a checkpoint is ready. It is ready when its status is `CHECKPOINT_AVAILABLE`:

```shell
doctl compute microvm checkpoint get <your-checkpoint-id>
```

Create a MicroVM from the checkpoint. The region, size, image, and environment variables come from the checkpoint:

```shell
doctl compute microvm create example-from-checkpoint \
  --checkpoint-id <your-checkpoint-id>
```

Delete the checkpoint. The command prompts for confirmation, and `--force` skips the prompt:

```shell
doctl compute microvm checkpoint delete <your-checkpoint-id>
```

You cannot delete a checkpoint while it is still being captured.

## Checkpoint a MicroVM Using the API

Send a `POST` request to `/v2/microvms/<your-microvm-id>/checkpoints` to create a checkpoint. `name` is optional:

```shell
curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
  -d '{"name": "example-checkpoint"}' \
  "https://api.digitalocean.com/v2/microvms/<your-microvm-id>/checkpoints"
```

Poll the checkpoint with a `GET` request to `/v2/microvms/checkpoints/<your-checkpoint-id>` until `status` is `CHECKPOINT_AVAILABLE`:

```shell
curl -X GET \
  -H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
  "https://api.digitalocean.com/v2/microvms/checkpoints/<your-checkpoint-id>"
```

To list a MicroVM’s checkpoints, newest first, send a `GET` request to `/v2/microvms/checkpoints` with the `microvm_id` query parameter:

```shell
curl -X GET \
  -H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
  "https://api.digitalocean.com/v2/microvms/checkpoints?microvm_id=<your-microvm-id>"
```

### Create a MicroVM from a Checkpoint Using the API

Send a `POST` request to `/v2/microvms` with `source.checkpoint_id` set to the checkpoint’s ID. Omit `region`, `size`, and `environment`, which come from the checkpoint:

```shell
curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
  -d '{
    "name": "example-from-checkpoint",
    "source": {"checkpoint_id": "<your-checkpoint-id>"}
  }' \
  "https://api.digitalocean.com/v2/microvms"
```

The request usually returns with the new MicroVM already `running`.

### Delete a Checkpoint Using the API

Send a `DELETE` request to `/v2/microvms/checkpoints/<your-checkpoint-id>`:

```shell
curl -X DELETE \
  -H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
  "https://api.digitalocean.com/v2/microvms/checkpoints/<your-checkpoint-id>"
```

The request returns HTTP 400 while the checkpoint is still being captured.