This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Download Microsoft Edge
More info about Internet Explorer and Microsoft Edge
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.
Request
You can construct the
Delete Blob
request as follows. HTTPS is recommended. Replace
myaccount
with the name of your storage account.
DELETE method request URI
HTTP version
https://myaccount.blob.core.windows.net/mycontainer/myblob
https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>
https://myaccount.blob.core.windows.net/mycontainer/myblob?versionid=<DateTime>
HTTP/1.1
Emulated storage service URI
When you make a request against the emulated storage service, specify the emulator hostname and Azure Blob Storage port as
127.0.0.1:10000
, followed by the emulated storage account name.
DELETE method request URI
HTTP version
For more information, see
Use Azurite emulator for local Azure Storage development
.
URI parameters
You can specify the following additional parameters 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 later. 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 Storage operations
.
deletetype
Optional, version 2020-02-10 or later. The value of
deletetype
can only be
permanent
.
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 isn't specified on the request, the operation fails with status code 403 (Forbidden).
x-ms-delete-snapshots: {include, only}
Required if the blob has associated snapshots. Specify one of the following options:
-
include
: Delete the base blob and all of its snapshots.
-
only
: Delete only the blob's snapshots, and not the blob itself.
Specify this header only for a request against the base blob resource. If this header is specified on a request to delete an individual snapshot, Blob Storage returns status code 400 (Bad Request).
If this header isn't specified on the request and the blob has associated snapshots, Blob Storage returns status code 409 (Conflict).
x-ms-client-request-id
Optional. Provides a client-generated, opaque value with a 1-kibibyte (KiB) character limit that's recorded in the logs when logging is configured. We highly recommend that you use this header to correlate client-side activities with requests that the server receives. For more information, see
Monitor Azure Blob Storage
.
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 Storage operations
.
Request body
None.
Response
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
.
The response for this operation includes the following headers. The response can 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 Blob Storage used to run the request. This header is returned for requests made against version 2009-09-19 and later.
x-ms-delete-type-permanent
For version 2017-07-29 and later, Blob Storage returns
true
if the blob has been permanently deleted, and
false
if the blob has been soft-deleted.
A UTC date/time value that indicates the time at which the response was initiated. The service generates this value.
x-ms-client-request-id
You can use this header 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's present in the request. The value is at most 1,024 visible ASCII characters. If the
x-ms-client-request-id
header isn't present in the request, this header won't be present in the response.
Authorization
Authorization is required when calling any data access operation in Azure Storage. You can authorize the
Delete Blob
operation as described below.
Microsoft Entra ID
Shared access signatures (SAS)
Shared key
Azure Storage supports using Microsoft Entra ID to authorize requests to blob data. With Microsoft Entra ID, you can use Azure role-based access control (Azure RBAC) to grant permissions to a security principal. The security principal may be a user, group, application service principal, or Azure managed identity. The security principal is authenticated by Microsoft Entra ID to return an OAuth 2.0 token. The token can then be used to authorize a request against the Blob service.
To learn more about authorization using Microsoft Entra ID, see
Authorize access to blobs using Microsoft Entra ID
.
Permissions
Listed below are the RBAC action necessary for a Microsoft Entra user, group, or service principal to call the
Delete Blob
operation, and the least privileged built-in Azure RBAC role that includes this action:
Azure RBAC action:
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete
Least privileged built-in role:
Storage Blob Data Contributor
To learn more about assigning roles using Azure RBAC, see
Assign an Azure role for access to blob data
.
A shared access signature (SAS) provides secure delegated access to resources in a storage account. With a SAS, you have granular control over how a client can access data. You can specify what resource the client may access, what permissions they have to those resources, and how long the SAS is valid.
The
Delete Blob
operation supports three types of shared access signatures:
user delegation SAS
,
service SAS
, and
account SAS
.
As a security best practice, we recommend that you use Microsoft Entra credentials rather than the storage account key, which can be more easily compromised. If your application design requires shared access signatures, use Microsoft Entra credentials to create a user delegation SAS, when possible.
When Shared Key access is disallowed for the storage account, a service SAS token or an account SAS token will not be permitted on a request to Blob Storage. To learn more, see
Understand how disallowing Shared Key affects SAS tokens
.
User delegation SAS
A user delegation SAS is secured with Microsoft Entra credentials and also by the permissions specified for the SAS.
Calling the
Delete Blob
operation using a SAS token delegated to a container or blob resource requires the
Delete (d)
permission as part of the user delegation SAS token.
To learn more about the user delegation SAS, see
Create a user delegation SAS
.
Service SAS
A service SAS is secured with the storage account key. A service SAS delegates access to a resource in a single Azure Storage service, such as blob storage.
Calling the
Delete Blob
operation using a SAS token delegated to a container or blob resource requires the
Delete (d)
permission as part of the service SAS token.
To learn more about the service SAS, see
Create a service SAS
.
Account SAS
An account SAS is secured with the storage account key. An account SAS delegates access to resources in one or more of the storage services. All of the operations available via a service or user delegation SAS are also available via an account SAS.
The following table indicates the signed resource type and signed permissions to specify when delegating access:
Operation
Signed service
Signed resource type
Signed permission
The
Delete Blob
operation supports
Shared Key authorization
. Authorizing with account keys is not recommended for most scenarios, as it's less secure.
Microsoft recommends disallowing Shared Key authorization for the storage account when possible. For more information, see
Prevent authorization with Shared Key
.
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 can 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 by 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's immediately removed from the storage account's index, and it's 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's soft-deleted, and it's no longer accessible to clients. Blob Storage retains the blob or snapshot for the number of days specified for the
DeleteRetentionPolicy
property of Blob Storage. For information about reading Blob Storage properties, see
Set Blob Storage properties
.
After the specified number of days, the blob’s data is removed from the service during garbage collection. You can access a soft-deleted blob or snapshot by calling the
List Blobs
operation and specifying the
include=deleted
option.
You can restore soft-deleted blobs or snapshots by using
Undelete Blob
. For any other operation on soft-deleted blobs or snapshots, Blob Storage returns error 404 (Resource Not Found).
Permanent delete
With version 2020-02-10 and later, you can permanently delete a soft-deleted snapshot or version. To do so, you enable the feature. For more for information, see
Set Blob Storage properties
.
The storage account must have versioning or snapshots enabled. Soft-delete must also be enabled on the storage account to soft-delete versions or snapshots of blobs in the account. Permanent delete only deletes soft-deleted snapshots 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.
If the query parameter presents any of the following, Blob Storage returns a 409 error (Conflict):
The permanent delete feature isn't enabled for the storage account.
Neither
versionid
nor
snapshot
are provided.
The specified snapshot or version isn't soft-deleted.
Permanent delete also includes a shared access signature permission to permanently delete a blob snapshot or blob version. For more information, see
Create a service SAS
.
Billing
Storage accounts are not charged for
Delete Blob
requests.
See also
Authorize requests to Azure Storage
Status and error codes
Blob Storage error codes
Undelete Blob
List Blobs