curl --request POST \
--url https://api.sfcompute.com/v2/images/{id}/complete \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"sha256": "<string>"
}
'{
"id": "<string>",
"resource_path": "<string>",
"owner": "<string>",
"workspace": "<string>",
"name": "<string>",
"object": "image",
"upload_status": "started",
"created_at": 1738972800,
"sha256": "<string>"
}Finalize a multipart image upload.
curl --request POST \
--url https://api.sfcompute.com/v2/images/{id}/complete \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"sha256": "<string>"
}
'{
"id": "<string>",
"resource_path": "<string>",
"owner": "<string>",
"workspace": "<string>",
"name": "<string>",
"object": "image",
"upload_status": "started",
"created_at": 1738972800,
"sha256": "<string>"
}Create an API token using sf tokens create or at https://sfcompute.com/account/api-keys.
Image ID, name, or resource path A resource path like 'sfc:image:acme:prod:my-image' or an ID. Resource paths are human-readable but not stable - they change when resources are renamed or moved. IDs are stable and permanent.
(image_[0-9a-zA-Z_-]{1,21})|(sfc:image:[a-zA-Z0-9._-]+(:[a-zA-Z0-9._-]+){1,3})"image_k3R-nX9vLm7Qp2Yw5Jd8F"
Complete a multipart image upload.
Not verified on upload; used during node boot to verify integrity.
64^[a-f0-9]{64}$Upload completed
image_[0-9a-zA-Z_-]{1,21}"image_k3R-nX9vLm7Qp2Yw5Jd8F"
A resource path for a image resource. Format: sfc:image:
sfc:image:([a-zA-Z0-9._-]+:){2}[a-zA-Z0-9._-]+"sfc:image:<account_id>:<workspace>:<name>"
1 - 255[a-zA-Z0-9][a-zA-Z0-9._-]{0,254}"my-resource-name"
1 - 255[a-zA-Z0-9][a-zA-Z0-9._-]{0,254}"my-resource-name"
1 - 255[a-zA-Z0-9][a-zA-Z0-9._-]{0,254}"my-resource-name"
"image"started, uploading, completed, failed Unix timestamp.
1738972800
64^[a-f0-9]{64}$