Add the power of the Box AI API to your custom apps at Content Cloud Summit on May 15

Learn more and register!

Create metadata instance on folder


Applies an instance of a metadata template to a folder.

In most cases only values that are present in the metadata template will be accepted, except for the template which accepts any key-value pair.

To display the metadata template in the Box web app the enterprise needs to be configured to enable Cascading Folder Level Metadata for the user in the admin console.



Path Parameters

stringin pathrequired

The unique identifier that represent a folder.

The ID for any folder can be determined by visiting this folder in the web application and copying the ID from the URL. For example, for the URL https://* the folder_id is 123.

The root folder of a Box account is always represented by the ID 0.

stringin pathrequired

The scope of the metadata template

Value is one of global,enterprise

stringin pathrequired

The name of the metadata template

Request Body

objectin body
"Aaron Levie"

A value for each of the fields that are present on the metadata template. For the template this can be a list of zero or more fields, as this template allows for any generic key-value pairs to be stored in the template.


Returns the instance of the template that was applied to the folder, including the data that was applied to the template.

application/jsonClient error

Returns an error when the request body is not valid.

  • schema_validation_failed - The request body contains a value for a field that either does not exist, or for which the value or type does not match the expected field type. An example might be an unknown option for an enum or multiSelect field.
application/jsonClient error

Returns an error when the folder or metadata template was not found.

  • not_found - The folder could not be found, or the user does not have access to the folder.
  • instance_tuple_not_found - The metadata template was not found.
application/jsonClient error

Returns an error when an instance of this metadata template is already present on the folder.

  • tuple_already_exists - An instance of them metadata template already exists on the file.
application/jsonClient error

An unexpected client error.

Create metadata instance on folder
You can now try out some of our APIs live, right here in the documentation.
Log in

Request Example

curl -i -X POST "" \
     -H "authorization: Bearer <ACCESS_TOKEN>" \
     -H "content-type: application/json" \
     -d '{
       "audience: "internal",
       "documentType": "Q1 plans",
       "competitiveDocument": "no",
       "status": "active",
       "author": "Jones",
       "currentState": "proposal"
var metadataValues = new Dictionary<string, object>()
    { "audience", "internal" },
    { "documentType", "Q1 plans" },
    { "competitiveDocument", "no" },
    { "status", "active" },
    { "author": "M. Jones" },
    { "currentState": "proposal" }
Dictionary<string, object> metadata = await client.MetadataManager
    .CreateFolderMetadataAsync(folderId: "11111", metadataValues, "enterprise", "marketingCollateral");
BoxFolder folder = new BoxFolder(api, "id");
folder.createMetadata(new Metadata().add("/foo", "bar"));
metadata = {
    'foo': 'bar',
    'baz': 'quux',

applied_metadata = client.folder(folder_id='22222').metadata().create(metadata)
print(f'Applied metadata in instance ID {applied_metadata["$id"]}')
var metadataValues = {
	audience: "internal",
	documentType: "Q1 plans",
	competitiveDocument: "no",
	status: "active",
	author: "Jones",
	currentState: "proposal"
client.folders.addMetadata('11111', client.metadata.scopes.ENTERPRISE, "marketingCollateral", metadataValues)
	.then(metadata => {
		/* metadata -> {
			audience: 'internal',
			documentType: 'Q1 plans',
			competitiveDocument: 'no',
			status: 'active',
			author: 'Jones',
			currentState: 'proposal',
			'$type': 'marketingCollateral-d086c908-2498-4d3e-8a1f-01e82bfc2abe',
			'$parent': 'folder_11111',
			'$id': '2094c584-68e1-475c-a581-534a4609594e',
			'$version': 0,
			'$typeVersion': 0,
			'$template': 'marketingCollateral',
			'$scope': 'enterprise_12345' }
let metadata = [
    "name": "John Doe",
    "birthday": "2000-01-01T00:00:00Z",
    "department": "Sales"
    forFolderWithId: "22222",
    scope: "enterprise",
    templateKey: "personnelRecord",
    keys: metadata
) { (result: Result<MetadataObject, BoxSDKError>) in
    guard case let .success(metadata) = result {
        print("Error adding metadata")

    print("Successfully attached metadata")
TypeScript (Beta)
await client.folderMetadata.createFolderMetadataById(,
  'enterprise' as CreateFolderMetadataByIdScope,
    ['name']: 'John',
    ['age']: 23,
    ['birthDate']: '2001-01-03T02:20:50.520Z',
    ['countryCode']: 'US',
    ['sports']: ['basketball', 'tennis'],
Python (Beta)
client.folder_metadata.create_folder_metadata_by_id(, CreateFolderMetadataByIdScope.ENTERPRISE.value, template_key, {'name': 'John', 'age': 23, 'birthDate': '2001-01-03T02:20:50.520Z', 'countryCode': 'US', 'sports': ['basketball', 'tennis']})
.NET (Beta)
await client.FolderMetadata.CreateFolderMetadataByIdAsync(folderId: folder.Id, scope: CreateFolderMetadataByIdScope.Global, templateKey: "properties", requestBody: new Dictionary<string, string>() { { "abc", "xyz" } });

Response Example

  "$canEdit": true,
  "$id": "01234500-12f1-1234-aa12-b1d234cb567e",
  "$parent": "folder_59449484661,",
  "$scope": "enterprise_27335",
  "$template": "marketingCollateral",
  "$type": "properties-6bcba49f-ca6d-4d2a-a758-57fe6edf44d0",
  "$typeVersion": 2,
  "$version": 1