Delete Blob

The Delete Blob operation marks the specified blob or snapshot for deletion. The blob is later deleted during garbage collection.

Note that in order to delete a blob, you must delete all of its snapshots. You can delete both at the same time with the Delete Blob operation.


The Delete Blob request may be constructed as follows. HTTPS is recommended. Replace myaccount with the name of your storage account:

DELETE Method Request URI HTTP Version<DateTime><DateTime>

Emulated storage service URI

When making a request against the emulated storage service, specify the emulator hostname and Blob service port as, followed by the emulated storage account name:

DELETE Method Request URI HTTP Version HTTP/1.1

For more information, see Using the Azure Storage Emulator for Development and Testing.

URI parameters

The following additional parameters may be specified on the request URI.

Parameter Description
snapshot Optional. The snapshot parameter is an opaque DateTime value that, when present, specifies the blob snapshot to delete. For more information on working with blob snapshots, see Creating a Snapshot of a Blob.
versionid Optional, version 2019-12-12 and newer. The versionid parameter is an opaque DateTime value that, when present, specifies the Version of the blob to delete.
timeout Optional. The timeout parameter is expressed in seconds. For more information, see Setting Timeouts for Blob Service Operations.
deletetype Optional, version 2020-02-10 or later. The value of deletetype can only be permanent. For more information, see Remarks below.

Request Headers

The following table describes required and optional request headers.

Request Header Description
Authorization Required. Specifies the authorization scheme, account name, and signature. For more information, see Authorize requests to Azure Storage.
Date or x-ms-date Required. Specifies the Coordinated Universal Time (UTC) for the request. For more information, see Authorize requests to Azure Storage.
x-ms-version Required for all authorized requests. For more information, see Versioning for the Azure Storage Services.
x-ms-lease-id:<ID> Required if the blob has an active lease.

To perform this operation on a blob with an active lease, specify the valid lease ID for this header. If a valid lease ID is not specified on the request, the operation will fail with status code 403 (Forbidden).
x-ms-delete-snapshots: {include, only} Required if the blob has associated snapshots. Specify one of the following two options:

- include: Delete the base blob and all of its snapshots.
- only: Delete only the blob's snapshots and not the blob itself.

This header should be specified only for a request against the base blob resource. If this header is specified on a request to delete an individual snapshot, the Blob service returns status code 400 (Bad Request).

If this header is not specified on the request and the blob has associated snapshots, the Blob service returns status code 409 (Conflict).
x-ms-client-request-id Optional. Provides a client-generated, opaque value with a 1 KiB character limit that is recorded in the analytics logs when storage analytics logging is enabled. Using this header is highly recommended for correlating client-side activities with requests received by the server. For more information, see About Storage Analytics Logging and Azure Logging: Using Logs to Track Storage Requests.

This operation also supports the use of conditional headers to delete the blob only if a specified condition is met. For more information, see Specifying Conditional Headers for Blob Service Operations.

Request Body



The response includes an HTTP status code and a set of response headers.

Status Code

A successful operation returns status code 202 (Accepted).

For information about status codes, see Status and Error Codes.

Response Headers

The response for this operation includes the following headers. The response may also include additional standard HTTP headers. All standard headers conform to the HTTP/1.1 protocol specification.

Response Header Description
x-ms-request-id This header uniquely identifies the request that was made and can be used for troubleshooting the request. For more information, see Troubleshooting API Operations.
x-ms-version Indicates the version of the Blob service used to execute the request. This header is returned for requests made against version 2009-09-19 and above.
x-ms-delete-type-permanent For versions 2017-07-29 and later, the Blob service returns true if the blob has been permanently deleted, and false if the blob has been soft-deleted.
Date A UTC date/time value generated by the service that indicates the time at which the response was initiated.
x-ms-client-request-id This header can be used to troubleshoot requests and corresponding responses. The value of this header is equal to the value of the x-ms-client-request-id header if it is present in the request and the value is at most 1024 visible ASCII characters. If the x-ms-client-request-id header is not present in the request, this header will not be present in the response.


This operation can be performed by the account owner or by anyone using a Shared Access Signature that has permission to delete the blob.


If the blob has an active lease, the client must specify a valid lease ID on the request in order to delete it.

If a blob has a large number of snapshots, it's possible that the Delete Blob operation will time out. If this happens, the client should retry the request.

For version 2013-08-15 and later, the client may call Delete Blob to delete uncommitted blobs. An uncommitted blob is a blob that was created with calls to the Put Block operation but never committed using the Put Block List operation. For earlier versions, the client must commit the blob first before deleting it.

Soft delete feature disabled

When a blob is successfully deleted, it is immediately removed from the storage account's index and is no longer accessible to clients. The blob's data is later removed from the service during garbage collection.

Soft delete feature enabled

When a blob is successfully deleted, it is softly deleted and is no longer accessible to clients. The Blob service retains the blob or snapshot for the number of days specified for the DeleteRetentionPolicy property of the Blob service. For information about reading Blob service properties, see Set Blob Service Properties.

After the specified number of days, the blob’s data is removed from the service during garbage collection. A softly deleted blob or snapshot is accessible by calling the List Blobs operation and specifying the include=deleted option.

Soft deleted blob or snapshot can be restored using Undelete Blob.

For any other operation on soft deleted blob or snapshot, Blob Service returns error 404 (ResourceNotFound).

Permanent Delete

A feature to permanently delete a soft-deleted snapshot / version has been added into delete blob API with version 2020-02-10 and later. In order to leverage the feature, the storage account needs to have permanent delete enabled. For more for information, see Set Blob Service Properties.


Storage account must have versioning and/or snapshots enabled. Soft delete must also be enabled on the storage account to soft delete versions / snapshots of blobs in the account. Permanent delete will only delete soft-deleted snapshots and/or versions.

Storage accounts with permanent delete enabled can use the deletetype=permanent query parameter to permanently delete a soft-deleted snapshot or deleted blob version. Blob service would return 409 (Conflict) if the query parameter presents with any of the following:

  • The permanent delete is not enabled for the storage account.
  • Neither versionid nor snapshot are provided.
  • The specified snapshot or version is not soft-deleted.

Permanent delete also includes a new SAS permission (y) grant permission to permanently delete a blob snapshot or blob version. For more information, see Create a service SAS.

See also

Authorize requests to Azure Storage
Status and Error Codes
Blob Service Error Codes Undelete Blob List Blobs