How to Checkpoint a MicroVMpublic

Last verified 9 Oct 2026

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.

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, 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. 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.

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:

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

List a MicroVM’s checkpoints, newest first:

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:

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:

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:

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:

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:

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:

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:

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>:

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.

We can't find any results for your search.

Try using different keywords or simplifying your search terms.