# Delete image manifest


[API catalog](/reference/api/) · [Registry overview](/reference/api/registry/latest/) · [Product manual](https://docs.docker.com/docker-hub/repos/) · [OpenAPI specification](/reference/api/registry/latest.yaml)

API version: 2



`DELETE /v2/{name}/manifests/{reference}`

Delete an image manifest from a repository by digest.

Only untagged or unreferenced manifests can be deleted. If the manifest is still referenced by a tag or another image, the registry will return `403 Forbidden`.

This operation requires `delete` access to the repository.

> **Note**
>
> Manifest deletion operations may take some time and could return a `500 Internal Server Error`. The system automatically retries the deletion in the background. Manual intervention is not required.


## Connection and access

[API connection and authentication guidance](/reference/api/registry/latest/#authentication)


Server: `https://registry-1.docker.io`

Effective security: alternatives are OR; schemes within an alternative are AND. An empty array declares no HTTP authentication requirement.

```json
[
  {
    "registryToken": []
  }
]
```
## Example request

Replace placeholders and provide the required credentials or request body.

```console
curl \
  --request DELETE \
  --header "Authorization: Bearer ${REGISTRY_TOKEN}" \
  'https://registry-1.docker.io/v2/yourusername%2Fhelloworld/manifests/sha256:abc123def456...'
```

## Parameters

### name

Location: path. Required: yes.

Name of the repository

```json
{
  "description": "Name of the repository",
  "example": "yourusername/helloworld",
  "in": "path",
  "name": "name",
  "pointer": "/paths/~1v2~1{name}~1manifests~1{reference}/delete/parameters/0",
  "required": true,
  "schema": {
    "type": "string"
  }
}
```

### reference

Location: path. Required: yes.

Digest of the manifest to delete (e.g., `sha256:...`)

```json
{
  "description": "Digest of the manifest to delete (e.g., `sha256:...`)",
  "example": "sha256:abc123def456...",
  "in": "path",
  "name": "reference",
  "pointer": "/paths/~1v2~1{name}~1manifests~1{reference}/delete/parameters/1",
  "required": true,
  "schema": {
    "type": "string"
  }
}
```

## Request and responses

### Response 202 

Manifest deleted successfully. No content returned.

No response content is declared.






### Response 401 

Authentication required.

No response content is declared.






### Response 403 

Access denied. The manifest may still be referenced.

No response content is declared.






### Response 404 

Manifest or repository not found.

No response content is declared.






### Response 405 

Only digest-based deletion is allowed.

No response content is declared.






### Response 429 

Too many requests.

No response content is declared.






## Complete operation contract

```json
{
  "description": "Delete an image manifest from a repository by digest.\n\nOnly untagged or unreferenced manifests can be deleted. If the manifest is still referenced by a tag or another image, the registry will return `403 Forbidden`.\n\nThis operation requires `delete` access to the repository.\n\n\u003e **Note**\n\u003e\n\u003e Manifest deletion operations may take some time and could return a `500 Internal Server Error`. The system automatically retries the deletion in the background. Manual intervention is not required.\n",
  "operationId": "DeleteImageManifest",
  "parameters": [
    {
      "description": "Name of the repository",
      "example": "yourusername/helloworld",
      "in": "path",
      "name": "name",
      "required": true,
      "schema": {
        "type": "string"
      }
    },
    {
      "description": "Digest of the manifest to delete (e.g., `sha256:...`)",
      "example": "sha256:abc123def456...",
      "in": "path",
      "name": "reference",
      "required": true,
      "schema": {
        "type": "string"
      }
    }
  ],
  "responses": {
    "202": {
      "description": "Manifest deleted successfully. No content returned."
    },
    "401": {
      "description": "Authentication required."
    },
    "403": {
      "description": "Access denied. The manifest may still be referenced."
    },
    "404": {
      "description": "Manifest or repository not found."
    },
    "405": {
      "description": "Only digest-based deletion is allowed."
    },
    "429": {
      "description": "Too many requests."
    }
  },
  "summary": "Delete image manifest",
  "tags": [
    "Manifests"
  ],
  "x-codeSamples": [
    {
      "label": "cURL",
      "lang": "Bash",
      "source": "# DELETE a manifest by digest\ncurl -X DELETE \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  https://registry-1.docker.io/v2/yourusername/helloworld/manifests/sha256:abc123def456...\n"
    }
  ]
}
```

## Referenced schemas




