---
title: "Download Image"
method: GET
path: "/v1/vms/images/{image_id}"
tags: ["VMs"]
---

# Download Image

`GET /v1/vms/images/{image_id}`

Get the download URL for a VM image by ID

## Path parameters

- `image_id` string, required

## Response `200`

- VmorchImageDownloadResponse — Response body for image download presigned URL generation
  - `object` 'image', required
  - `download_url` string, required — The presigned URL that can be used to download the image
  - `expires_at` string, required — Timestamp when the presigned URL expires (RFC 3339 format)
  - `image_id` string, required — The image ID
  - `name` string, required — Human readable name of the image. Must be unique per account.
  - `sha256_hash` string, required — SHA256 hash of the image file for integrity verification
  - `object_size` integer, required — Size of the image file in bytes

## Other responses

- `401`
- `403`
- `404`
- `409`
- `500`

## Changes

- **2026-02-17** `ad9dff266598` — 3 breaking, 4 info
  - the `sha256_hash` response property's maxLength was unset from `64` for the response status `200`
  - the `sha256_hash` response property's minLength was decreased from `64` to `0` for the response status `200`
  - the `expires_at` response's property type changed from `integer` to `string`, and format from `int64` to no format for status `200`
  - the `sha256_hash` response's property pattern `^[a-f0-9]{64}$` was removed for the status `200`
  - …3 more
- **2026-02-17** `48ff5f0fb9ee` — 4 breaking, 1 info
  - the `expires_at` response's property type changed from `string` to `integer`, and format from no format to `int64` for status `200`
  - removed the required property `image_id` from the response with the `200` status
  - removed the required property `name` from the response with the `200` status
  - removed the required property `object` from the response with the `200` status
  - …1 more
- **2026-02-17** `0222183e15b3` — 3 breaking, 4 info
  - the `sha256_hash` response property's maxLength was unset from `64` for the response status `200`
  - the `sha256_hash` response property's minLength was decreased from `64` to `0` for the response status `200`
  - the `expires_at` response's property type changed from `integer` to `string`, and format from `int64` to no format for status `200`
  - the `sha256_hash` response's property pattern `^[a-f0-9]{64}$` was removed for the status `200`
  - …3 more
- …earlier changes not shown

[Full history](https://skmtc.dev/sfcompute/apis/san-francisco-compute-documentation/changes/v1/vms/images/:image_id/get.md)

---

[API](https://skmtc.dev/sfcompute/apis/san-francisco-compute-documentation.md) · [All operations](https://skmtc.dev/sfcompute/apis/san-francisco-compute-documentation/llms.txt) · [OpenAPI document](https://skmtc.dev/sfcompute/apis/san-francisco-compute-documentation/revisions/e799cec0ecec?raw)
