> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# XblTitleStorageDownloadBlobAsync

> XblTitleStorageDownloadBlobAsync

# XblTitleStorageDownloadBlobAsync

Downloads blob data from title storage.

## Syntax

```cpp theme={null}
HRESULT XblTitleStorageDownloadBlobAsync(  
         XblContextHandle xboxLiveContext,  
         XblTitleStorageBlobMetadata blobMetadata,  
         uint8_t* blobBuffer,  
         size_t blobBufferCount,  
         XblTitleStorageETagMatchCondition etagMatchCondition,  
         const char* selectQuery,  
         size_t preferredDownloadBlockSize,  
         XAsyncBlock* async  
)  
```

### Parameters

*xboxLiveContext*   \_In\_\
Type: [XblContextHandle](/reference/live/xsapi-c/types_c/handles/xblcontexthandle)

An xbox live context handle created with XblContextCreateHandle.

*blobMetadata*   \_In\_\
Type: [XblTitleStorageBlobMetadata](/reference/live/xsapi-c/title_storage_c/structs/xbltitlestorageblobmetadata)

The blob metadata for the title storage blob to download.

*blobBuffer*   \_Out\_writes\_(blobBufferCount)\
Type: uint8\_t\*

A caller allocated buffer that passes back the downloaded blob data. This buffer needs to be large enough to store the blob being downloaded. If necessary, the length required for the buffer can be retrieved by getting the blob metadata.

*blobBufferCount*   \_In\_\
Type: size\_t

The length of blobBuffer.

*etagMatchCondition*   \_In\_\
Type: [XblTitleStorageETagMatchCondition](/reference/live/xsapi-c/title_storage_c/enums/xbltitlestorageetagmatchcondition)

The ETag match condition used to determine if the blob should be downloaded.

*selectQuery*   \_In\_opt\_z\_\
Type: char\*

ConfigStorage filter string or JSONStorage json property name string to filter. (Optional)

*preferredDownloadBlockSize*   \_In\_\
Type: size\_t

The preferred download block size in bytes for binary blobs. Pass 0 to use the default size. (Optional)

*async*   \_In\_\
Type: XAsyncBlock\*

Caller allocated AsyncBlock.

### Return value

Type: HRESULT

HRESULT return code for this API operation.

## Remarks

To get the result, call [XblTitleStorageDownloadBlobResult](/reference/live/xsapi-c/title_storage_c/functions/xbltitlestoragedownloadblobresult) inside the AsyncBlock callback or after the AsyncBlock is complete. This method will return E\_NOT\_SUFFICIENT\_BUFFER (0x8007007A) if the blobBuffer doesn't have enough capacity to hold the blob data.

## REST Call

V1 GET trustedplatform/users/xuid({xuid})/scids/{scid}/data/{path},{type}\
V1 GET json/users/xuid({xuid})/scids/{scid}/data/{path},{type}\
V1 GET global/scids/{scid}/data/{path},{type}\
V1 GET sessions/{sessionId}/scids/{scid}/data/{path},{type}

## Requirements

**Header:** title\_storage\_c.h

**Library:** Microsoft.Xbox.Services.14x.GDK.C.lib

## See also

[title\_storage\_c](/reference/live/xsapi-c/title_storage_c/title_storage_c_members)


## Related topics

- [Downloading a blob from Title Storage](/services/xbox-services/storage/title-storage/how-to/live-downloading-title-storage-blob.md)
- [XblTitleStorageDownloadBlobResult](/reference/live/xsapi-c/title_storage_c/functions/xbltitlestoragedownloadblobresult.md)
- [Uploading a blob to Title Storage](/services/xbox-services/storage/title-storage/how-to/live-uploading-title-storage-blob.md)
- [Getting Title Storage blob metadata](/services/xbox-services/storage/title-storage/how-to/live-getting-title-storage-blob-metadata.md)
- [XblTitleStorageDeleteBlobAsync](/reference/live/xsapi-c/title_storage_c/functions/xbltitlestoragedeleteblobasync.md)
