---
title: "Grant a subject permission to multiple assets.
            
Authorization is required to grant permissions to the subject and asset IDs in the request."
method: PATCH
path: "/asset-permissions-api/v1/assets/permissions"
tags: ["Assets"]
---

# Grant a subject permission to multiple assets.
            
Authorization is required to grant permissions to the subject and asset IDs in the request.

`PATCH /asset-permissions-api/v1/assets/permissions`

## Request body

- BatchGrantPermissionsRequest — Request object to grant one permission to multiple assets.
  - `subjectType` 'Invalid' | 'User' | 'Group' | 'GroupRoleset' | 'All' | 'Universe'
  - `subjectId` string, nullable — The subject ID to grant to. Must be empty for SubjectType 'All'.
  - `action` 'Invalid' | 'Edit' | 'Use' | 'Download' | 'CopyFromRcc' | 'UpdateFromRcc' — Asset permission actions that can be granted. Actions: * Invalid - default value, not a valid action. * Edit - grants the ability to edit and manage the asset. * Use - grants the ability to use the asset. * Download - grants the ability to download the asset. * CopyFromRcc - grants the ability to copy the asset from RCC, used to enable AssetService:CreatePlaceAsync(). * UpdateFromRcc - grants the ability to update the asset from RCC, used to enable AssetService:UpdatePlaceAsync(). Valid AssetType - SubjectType - Action combinations: * Animation - Group/User/Universe - Use * Audio - Group/User/Universe - Use * Decal - All/Group/User/Universe - Use * Image - All/Group/User/Universe - Use * Mesh - All/Group/User/Universe - Use * MeshPart - Group/User/Universe - Use * Model - User - Edit * Group/User/Universe - Use * Place - All - Download * Universe - CopyFromRcc/UpdateFromRcc * Video - Group/User/Universe - Use.
  - `requests` AssetGrantRequest[], nullable — Array of asset grant requests. If populated, 'requests' will override 'assetIds'.
    - `assetId` integer — The asset ID to grant permission to.
    - `grantToDependencies` boolean — Whether to extend the permission grant to dependencies of the asset. This will be done asynchronously after the main grant.
    - `parentVersionNumber` integer — The version number of 'assetId' to use for determining asset dependencies.
  - `assetIds` integer[], nullable — [Deprecated] The list of asset IDs to grant this permission to. 'requests' will be prioritized over this list.
  - `enableDeepAccessCheck` boolean — [Do not use] An optional boolean to indicate if a deep access check should be done. This is not intended for public use.

## Response `200`

OK

- BatchGrantPermissionsResponse — Response object to grant one permission to multiple assets.
  - `successAssetIds` integer[], nullable — The list of asset IDs that granted successfully.
  - `errors` GrantPermissionError[], nullable — The list of grants that had errors.
    - `assetId` integer — Failed asset ID.
    - `code` 'UnknownError' | 'InvalidRequest' | 'AssetNotFound' | 'CannotManageAsset' | 'PublicAssetCannotBeGrantedTo' | 'CannotManageSubject' | 'SubjectNotFound' | 'AssetTypeNotEnabled' | 'PermissionLimitReached' | 'DependenciesLimitReached' — Enums for customized error code in error responses.

## Other responses

- `400` — Bad Request
- `403` — Forbidden
- `500` — Internal Server Error

---

[API](https://skmtc.net/roblox/apis/roblox-api.md) · [All operations](https://skmtc.net/roblox/apis/roblox-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/roblox/roblox-api/versions/e15802062270/schema)
