# origin storage commands

Every origin storage command with its flags: volumes, storage classes, imports and snapshots.

This page lists every `origin storage` command. Attaching a volume to an instance is an `origin compute` command; see [`attach-volume`](/docs/compute/reference/cli#attach-volume).

## create-volume [#create-volume]

Create a volume, empty or from a snapshot.

```sh
origin storage create-volume [OPTIONS] --project-urn <PROJECT_URN>
```

| Option | Required | Description |
| --- | --- | --- |
| `--project-urn <PROJECT_URN>` | yes | URN of the project. |
| `--size <SIZE>` | no | Size in GiB [default: 8]. |
| `--snapshot-urn <SNAPSHOT_URN>` | no | URN of the backing Snapshot. |
| `--storage-class <STORAGE_CLASS>` | no | Storage class (performance tier). Omitted uses the platform default. Discover the choices with [`list-storage-classes`](#list-storage-classes) |

## list-storage-classes [#list-storage-classes]

List every published storage class (performance tier), with display name, backing media, which one is the default and its `available` flag. Only a class with `available: true` can be passed to `--storage-class`.

```sh
origin storage list-storage-classes
```

This command takes no options.

## list-volumes [#list-volumes]

List the volumes of a project.

```sh
origin storage list-volumes --project-urn <PROJECT_URN>
```

| Option | Required | Description |
| --- | --- | --- |
| `--project-urn <PROJECT_URN>` | yes | URN of the project. |

## get-volume [#get-volume]

Get one volume.

```sh
origin storage get-volume --volume-urn <VOLUME_URN>
```

| Option | Required | Description |
| --- | --- | --- |
| `--volume-urn <VOLUME_URN>` | yes | URN of the Volume. |

## import-volume [#import-volume]

Create a volume whose initial content is a disk image downloaded from an HTTP(S) URL.

```sh
origin storage import-volume [OPTIONS] --project-urn <PROJECT_URN> --size-in-gib <SIZE_IN_GIB> --source-url <SOURCE_URL>
```

| Option | Required | Description |
| --- | --- | --- |
| `--project-urn <PROJECT_URN>` | yes | URN of the project. |
| `--size-in-gib <SIZE_IN_GIB>` | yes | Size in GiB - must be large enough to hold the source image. |
| `--source-url <SOURCE_URL>` | yes | HTTP(S) URL the source image is downloaded from. It must be reachable from the internet. |
| `--storage-class <STORAGE_CLASS>` | no | Storage class (performance tier). Omitted uses the platform default. Discover the choices with [`list-storage-classes`](#list-storage-classes) |

## delete-volume [#delete-volume]

Delete a volume. Refused while it is attached or has snapshots.

```sh
origin storage delete-volume --volume-urn <VOLUME_URN>
```

| Option | Required | Description |
| --- | --- | --- |
| `--volume-urn <VOLUME_URN>` | yes | URN of the Volume. |

<Callout type="warning">

A volume with snapshots may be accepted for deletion and silently stay `AVAILABLE` instead of being refused (seen on 12 October 2026). Check with `get-volume` that `status` reads `DELETED`. See [Delete a volume](/docs/storage/volumes/delete#delete-the-volume).

</Callout>

## resize-volume [#resize-volume]

Grow a volume. Volumes only grow.

```sh
origin storage resize-volume --volume-urn <VOLUME_URN> --size-in-gib <SIZE_IN_GIB>
```

| Option | Required | Description |
| --- | --- | --- |
| `--volume-urn <VOLUME_URN>` | yes | URN of the Volume. |
| `--size-in-gib <SIZE_IN_GIB>` | yes | New size in GiB. |

## create-snapshot [#create-snapshot]

Take a snapshot of a volume.

```sh
origin storage create-snapshot --volume-urn <VOLUME_URN>
```

| Option | Required | Description |
| --- | --- | --- |
| `--volume-urn <VOLUME_URN>` | yes | URN of the Volume. |

## protect-snapshot [#protect-snapshot]

Protect a snapshot so it can be used as a clone source.

```sh
origin storage protect-snapshot --snapshot-urn <SNAPSHOT_URN>
```

| Option | Required | Description |
| --- | --- | --- |
| `--snapshot-urn <SNAPSHOT_URN>` | yes | URN of the Snapshot. |

## unprotect-snapshot [#unprotect-snapshot]

Remove a snapshot’s protection so it can be deleted.

```sh
origin storage unprotect-snapshot --snapshot-urn <SNAPSHOT_URN>
```

| Option | Required | Description |
| --- | --- | --- |
| `--snapshot-urn <SNAPSHOT_URN>` | yes | URN of the Snapshot. |

## delete-snapshot [#delete-snapshot]

Delete a snapshot. It must be unprotected first.

```sh
origin storage delete-snapshot --snapshot-urn <SNAPSHOT_URN>
```

| Option | Required | Description |
| --- | --- | --- |
| `--snapshot-urn <SNAPSHOT_URN>` | yes | URN of the Snapshot. |

## list-snapshots [#list-snapshots]

List the snapshots of a project.

```sh
origin storage list-snapshots --project-urn <PROJECT_URN>
```

| Option | Required | Description |
| --- | --- | --- |
| `--project-urn <PROJECT_URN>` | yes | URN of the project. |

## get-snapshot [#get-snapshot]

Get one snapshot.

```sh
origin storage get-snapshot --snapshot-urn <SNAPSHOT_URN>
```

| Option | Required | Description |
| --- | --- | --- |
| `--snapshot-urn <SNAPSHOT_URN>` | yes | URN of the Snapshot. |

