> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wrenn.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# GET /v1/snapshots — List available capsule templates

> GET /v1/snapshots — List all capsule templates available to your team. Filter by type=base or type=snapshot. Use the name field with POST /v1/capsules.

Use this endpoint to retrieve all templates available to your team. The response includes both base templates (pre-built images provided by Wrenn) and snapshot templates (images you have created from running capsules). Use the `name` field from any returned template as the `template` parameter when creating a new capsule.

## Endpoint

```http theme={null}
GET https://app.wrenn.dev/api/v1/snapshots
```

## Authentication

<ParamField header="X-API-Key" type="string" required>
  Your team's API key. Pass the full `wrn_...` key value.
</ParamField>

## Query parameters

<ParamField query="type" type="string">
  Filter templates by type. Accepted values: `"base"` (built-in images) or `"snapshot"` (team-created snapshots). Omit to return all templates.
</ParamField>

### Example requests

```bash theme={null}
# List all templates
curl https://app.wrenn.dev/api/v1/snapshots \
  -H "X-API-Key: wrn_your_api_key_here"

# List only snapshot templates created by your team
curl "https://app.wrenn.dev/api/v1/snapshots?type=snapshot" \
  -H "X-API-Key: wrn_your_api_key_here"
```

## Response

Returns `200 OK` with an array of `Template` objects.

<ResponseField name="name" type="string" required>
  The template name. Pass this value as `template` when creating a capsule.
</ResponseField>

<ResponseField name="type" type="string" required>
  Either `"base"` (a built-in Wrenn image) or `"snapshot"` (created from a running capsule).
</ResponseField>

<ResponseField name="vcpus" type="integer">
  Number of vCPUs the template was captured with. May be `null` for base templates.
</ResponseField>

<ResponseField name="memory_mb" type="integer">
  Memory in MiB the template was captured with. May be `null` for base templates.
</ResponseField>

<ResponseField name="size_bytes" type="integer">
  Total size of the template files on disk, in bytes.
</ResponseField>

<ResponseField name="created_at" type="string" required>
  ISO 8601 timestamp of when the template was created.
</ResponseField>

### Example response

```json theme={null}
[
  {
    "name": "minimal",
    "type": "base",
    "vcpus": null,
    "memory_mb": null,
    "size_bytes": 268435456,
    "created_at": "2024-01-01T00:00:00Z"
  },
  {
    "name": "my-template",
    "type": "snapshot",
    "vcpus": 2,
    "memory_mb": 1024,
    "size_bytes": 536870912,
    "created_at": "2024-11-01T10:00:00Z"
  }
]
```

## Python SDK

```python theme={null}
from wrenn import WrennClient, Capsule

with WrennClient() as client:
    # List all templates
    templates = client.snapshots.list()
    for t in templates:
        print(t.name, t.type)

# Use a template name when creating a capsule
capsule = Capsule(template="my-template", wait=True)
```

<Note>
  The `name` field is what you pass as the `template` parameter in `POST /v1/capsules`. Base template names like `"minimal"` are always available; snapshot names are scoped to your team.
</Note>
