---
title: "Update image blob/layer upload"
method: PUT
path: "/v2/{name}/blobs/uploads/{session_id}"
---

# Update image blob/layer upload

`PUT /v2/{name}/blobs/uploads/{session_id}`

## Request

- The document declares no server URL.
- Auth: none declared
- TypeScript: <https://skmtc.dev/project-zot/apis/open-container-initiative-distribution-specification/docs/v2/:name/blobs/uploads/:session_id/put.ts> (a function with typed inputs; its response is checked against the schema)

Update and finish an image's blob/layer upload given a digest

## Path parameters

- `name` string, required
- `session_id` string, required

## Query parameters

- `digest` string, required

## Response `201`

created

## Other responses

- `400`: bad request
- `404`: not found
- `416`: range not satisfiable
- `500`: internal server error
- `503`: storage temporarily unavailable

## Changes

- **2026-10-05** `fba44d54755f`: 1 info
  - added the non-success response with the status `503`
- **2026-04-20** `902fb3f28c66`: 2 info
  - added the non-success response with the status `400`
  - added the non-success response with the status `416`
- **2021-10-21** `81b68c5e4fde`: 2 warning, 2 info
  - the optional response header `Docker-Content-Digest` removed for the status `201`
  - the optional response header `Location` removed for the status `201`
  - removed the non-success response with the status `400`
  - removed the non-success response with the status `416`

[Operation history](https://skmtc.dev/project-zot/apis/open-container-initiative-distribution-specification/changes/v2/:name/blobs/uploads/:session_id/put.md)

---

[API](https://skmtc.dev/project-zot/apis/open-container-initiative-distribution-specification.md) - [All operations](https://skmtc.dev/project-zot/apis/open-container-initiative-distribution-specification/llms.txt) - [OpenAPI document](https://skmtc.dev/project-zot/apis/open-container-initiative-distribution-specification/revisions/7937343ee83f?raw)
