Put image manifest Run in API Explorer

PUT /v2/{name}/manifests/{reference}

Upload an image manifest for a given tag or digest. This operation registers a manifest in a repository, allowing it to be pulled using the specified reference.

This endpoint is typically used after all layer and config blobs have been uploaded to the registry.

The manifest must conform to the expected schema and media type. For Docker image manifest schema version 2, use: application/vnd.docker.distribution.manifest.v2+json

Requires authentication via a bearer token with push scope for the target repository.

Headers

  • Authorization string Required

    RFC7235-compliant authorization header (e.g., Bearer <token>).

  • Content-Type string Required

    Media type of the manifest being uploaded.

Path parameters

  • name string Required

    Name of the target Repository

  • reference string Required

    Tag or digest to associate with the uploaded Manifest

application/vnd.docker.distribution.manifest.v2+json

Body Required

  • schemaVersion integer Required
  • mediaType string Required
  • config object Required
    Hide config attributes Show config attributes object
    • mediaType string Required
    • size integer Required
    • digest string Required
  • layers array[object] Required
    Hide layers attributes Show layers attributes object
    • mediaType string Required
    • size integer Required
    • digest string Required

Responses

  • 201

    Manifest created successfully.

    Hide headers attributes Show headers attributes
    • Docker-Content-Digest string

      Digest of the stored manifest.

    • Location string

      Canonical location of the uploaded manifest.

    • Content-Length integer

      Always zero.

  • 400

    Invalid name, reference, or manifest.

  • 401

    Authentication required.

  • 403

    Access denied.

  • 404

    Repository not found.

  • 405

    Operation not allowed.

  • 429

    Too many requests.

PUT /v2/{name}/manifests/{reference}
# PUT a manifest (tag = latest)
curl -X PUT \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/vnd.docker.distribution.manifest.v2+json" \
  --data-binary @manifest.json \
  https://registry-1.docker.io/v2/library/ubuntu/manifests/latest
curl \
 --request PUT 'https://registry-1.docker.io/v2/library/ubuntu/manifests/latest' \
 --header "Authorization: string" \
 --header "Content-Type: application/vnd.docker.distribution.manifest.v2+json"
Request example
{
  "config": {
    "size": 7023,
    "digest": "sha256:123456abcdef...",
    "mediaType": "application/vnd.docker.container.image.v1+json"
  },
  "layers": [
    {
      "size": 32654,
      "digest": "sha256:abcdef123456...",
      "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip"
    }
  ],
  "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
  "schemaVersion": 2
}