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

# XblPrivacyCheckPermissionAsync

> XblPrivacyCheckPermissionAsync

Check a single permission with a single target user.

## Syntax

```cpp theme={null}
HRESULT XblPrivacyCheckPermissionAsync(  
         XblContextHandle xblContextHandle,  
         XblPermission permissionToCheck,  
         uint64_t targetXuid,  
         XAsyncBlock* async  
)  
```

### Parameters

*xblContextHandle*   \_In\_\
Type: [XblContextHandle](https://docs.xbox.com/reference/live/xsapi-c/types_c/handles/xblcontexthandle.md)

XBOX services context for the local user.

*permissionToCheck*   \_In\_\
Type: [XblPermission](https://docs.xbox.com/reference/live/xsapi-c/privacy_c/enums/xblpermission.md)

The permission to check.

*targetXuid*   \_In\_\
Type: uint64\_t

The target user's Xuid for validation.

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

The AsyncBlock for this operation.

### Return value

Type: HRESULT

Returns S\_OK if the request started. S\_OK doesn't mean that permission was granted or that the operation is complete.

Possible error codes include the following. This list isn't exhaustive.

| Return code | Description |
| - | - |
| S\_OK | The request started. Get the result after the operation completes. |
| E\_INVALIDARG | *xblContextHandle* is null. |

## Remarks

If multiple permissions and/or target users are needed, use the batch API instead: [XblPrivacyBatchCheckPermissionAsync](https://docs.xbox.com/reference/live/xsapi-c/privacy_c/functions/xblprivacybatchcheckpermissionasync.md) Call [XblPrivacyCheckPermissionResultSize](https://docs.xbox.com/reference/live/xsapi-c/privacy_c/functions/xblprivacycheckpermissionresultsize.md) and [XblPrivacyCheckPermissionResult](https://docs.xbox.com/reference/live/xsapi-c/privacy_c/functions/xblprivacycheckpermissionresult.md) upon completion to get the result.

If the operation fails, `XblPrivacyCheckPermissionResultSize` and `XblPrivacyCheckPermissionResult` return the failure HRESULT. Pass that HRESULT to [XblGetErrorCondition](https://docs.xbox.com/reference/live/xsapi-c/errors_c/functions/xblgeterrorcondition.md) to classify it. A failed request is different from a successful result in which `isAllowed` is false, but in both cases block the action that *permissionToCheck* protects. If the condition is `XblErrorCondition::Http429TooManyRequests`, the service is throttling your title. Wait before you try again, and limit how often you retry.

## Requirements

**Header:** privacy\_c.h

**Library:** Microsoft.Xbox.Services.142.C.lib or Microsoft.Xbox.Services.143.C.lib

## See also

[privacy\_c](https://docs.xbox.com/reference/live/xsapi-c/privacy_c/privacy_c_members.md)


## Related topics

- [XblPrivacyCheckPermissionResult](https://docs.xbox.com/reference/live/xsapi-c/privacy_c/functions/xblprivacycheckpermissionresult.md)
- [XblPermission](https://docs.xbox.com/reference/live/xsapi-c/privacy_c/enums/xblpermission.md)
- [XblPrivacyCheckPermissionResultSize](https://docs.xbox.com/reference/live/xsapi-c/privacy_c/functions/xblprivacycheckpermissionresultsize.md)
- [privacy_c (contents)](https://docs.xbox.com/reference/live/xsapi-c/privacy_c/privacy_c_members.md)
- [Privacy and permissions overview](https://docs.xbox.com/services/xbox-services/fundamentals/identity/privacy/live-privacy-overview.md)
