# Automatic snapshots

> How VMYard captures running KVM machines on an interval, how many automatic snapshots it keeps, and how to see and delete them.

VMYard captures a **running** machine on an interval, so a recent copy exists without stopping it. Each capture is an ordinary [snapshot](/docs/guides/snapshots) with `source: "automatic"`: you can [restore it as a new machine](/docs/guides/fork-and-restore) like any other.

## How captures work

- **Every 5 minutes** by default, a running machine is due for its next automatic snapshot.
- A machine whose disk hasn't changed since its last ready automatic snapshot (same boot, same disk writes) is skipped, so an idle machine doesn't pile up copies. Without fresh metrics it is captured anyway.
- A machine with an operation still running, a previous capture included, waits for the next interval.
- The machine keeps running in the same boot. VMYard copies it at one instant and uploads the copy; the copy is never a machine you see. Operations you request during a capture wait for its upload.
- Only **KVM machines** on hosts that support it are captured. Docker development machines are not.
- Automatic snapshots are `cold` by default: the disk only, uploading just the parts that changed.

These are the defaults; operators of a deployment can change the interval, the number kept, and the tier, or turn captures off.

## How many are kept

Each machine keeps its newest **10** ready automatic snapshots (and its newest 10 failed ones). Older automatic snapshots are deleted as new ones become ready. Retention **never** removes snapshots you took (`source: "api"`), [tier-policy](/docs/guides/snapshots#stopped-machines-move-down-the-tiers) snapshots, or [templates](/docs/guides/templates), and automatic snapshots don't count toward the 20-snapshot limit.

A capture that loses its copy before the upload finishes fails with `snapshot_copy_discarded`; the machine is unchanged and the next interval takes another. Each ready capture emits the [`snapshot.ready` webhook](/docs/guides/webhooks) with `source: "automatic"`.

## See how fresh a machine's copy is

Every machine reports `latest_snapshot`: its newest snapshot that is pending or ready (templates and failed pushes are left out), or `null`.

```json
"latest_snapshot": {
  "id": "0b6f1c2e-…",
  "created_at": "2026-10-12T09:10:00Z",
  "completed_at": "2026-10-12T09:10:41Z",
  "source": "automatic",
  "status": "ready",
  "tier": "cold"
}
```

`created_at` is the instant the copy was taken. The console's machine list shows its age with the source, and an **Automatic** badge for captures; the machine overview shows the same under **Latest snapshot**.

## Find and delete automatic snapshots

The **Snapshots** tab filters a machine's snapshots by source: **Manual** (`api`), **Stop (tier policy)** (`tier_policy`), and **Automatic** (`automatic`). **Delete automatic** removes all of a machine's automatic snapshots at once:

```sh
curl -X DELETE "$VMYARD_API_URL/v1/machines/$MACHINE_ID/snapshots?source=automatic" \
  -H "Authorization: Bearer $VMYARD_API_KEY"
```

Captures continue while the machine runs. See [Delete several snapshots](/docs/guides/snapshots#delete-several-snapshots) for the answer's format.
