Upload blob chunk Run in API Explorer

PATCH /v2/{name}/blobs/uploads/{uuid}

Upload a chunk of a blob to an active upload session.

Use this method for chunked uploads, especially for large blobs or when resuming interrupted uploads.

The client sends binary data using PATCH, optionally including a Content-Range header.

After each chunk is accepted, the registry returns a 202 Accepted response with:

  • Range: current byte range stored
  • Docker-Upload-UUID: identifier for the upload session
  • Location: URL to continue the upload or finalize with PUT

Headers

  • Authorization string Required
  • Content-Range string

    Optional. Byte range of the chunk being sent

Path parameters

  • name string Required

    Repository name

  • uuid string Required

    Upload session UUID

application/octet-stream

Body Required

string(binary) string(binary)

Responses

  • 202

    Chunk accepted and stored

    Hide headers attributes Show headers attributes
    • Location string

      URL to continue or finalize the upload

    • Range string

      Byte range uploaded so far (inclusive)

    • Docker-Upload-UUID string

      Upload session UUID

  • 400

    Malformed content or range

  • 401

    Authentication required

  • 403

    Access denied

  • 404

    Upload session not found

  • 416

    Range error (e.g., chunk out of order)

  • 429

    Too many requests

PATCH /v2/{name}/blobs/uploads/{uuid}
# PATCH – upload a chunk (first 64 KiB)
curl -X PATCH \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/octet-stream" \
  --data-binary @chunk-0.bin \
  "https://registry-1.docker.io/v2/library/ubuntu/blobs/uploads/abc123"
curl \
 --request PATCH 'https://registry-1.docker.io/v2/library/ubuntu/blobs/uploads/abc123' \
 --header "Content-Type: application/octet-stream" \
 --header "Authorization: Bearer eyJhbGciOi..." \
 --header "Content-Range: bytes 0-65535" \
 --data-binary '<binary data not shown>'
Request example
<binary data not shown>