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

Learn more and register!

Share Content with User

Guides Collaborations Share Content with User
Edit this page

Share Content with User

To share content with a user, create a collaboration using the user ID or email address, the ID of the content, and the role or permissions level the user should have when accessing the content. The collaboration roles are editor,viewer, previewer, uploader, previewer uploader, viewer uploader,co-owner, or owner. For a full description of each role, please refer to our support documentation.

curl -i -X POST "" \
     -H "authorization: Bearer <ACCESS_TOKEN>" \
     -H "content-type: application/json" \
     -d '{
       "item": {
         "type": "file",
         "id": "11446498"
       "accessible_by": {
         "type": "user",
         "login": ""
       "role": "editor"
// collaborate folder 11111 with user 22222
BoxCollaborationRequest requestParams = new BoxCollaborationRequest()
    Item = new BoxRequestEntity()
        Type = BoxType.folder,
        Id = "11111"
    Role = "editor",
    AccessibleBy = new BoxCollaborationUserRequest()
        Type = BoxType.user,
        Id = "22222"
BoxCollaboration collab = await client.CollaborationsManager.AddCollaborationAsync(requestParams);
BoxCollaborator user = new BoxUser(api, "user-id")
BoxFolder folder = new BoxFolder(api, "folder-id");
folder.collaborate(user, BoxCollaboration.Role.EDITOR);
from boxsdk.object.collaboration import CollaborationRole

user = client.user(user_id='11111')
collaboration = client.folder(folder_id='22222').collaborate(user, CollaborationRole.VIEWER)

collaborator = collaboration.accessible_by
item = collaboration.item
has_accepted = 'has' if collaboration.status == 'accepted' else 'has not'
print(f'{} {has_accepted} accepted the collaboration to folder "{}"')
// Invite user 123456 to collaborate on folder 987654
client.collaborations.createWithUserID('123456', '987654', client.collaborationRoles.EDITOR)
	.then(collaboration => {
		/* collaboration -> {
			type: 'collaboration',
			id: '11111',
			{ type: 'user',
				id: '22222',
				name: 'Inviting User',
				login: '' },
			created_at: '2016-11-16T21:33:31-08:00',
			modified_at: '2016-11-16T21:33:31-08:00',
			expires_at: null,
			status: 'accepted',
			{ type: 'user',
				id: '123456',
				name: 'Collaborator User',
				login: '' },
			role: 'editor',
			acknowledged_at: '2016-11-16T21:33:31-08:00',
			{ type: 'folder',
				id: '987654',
				sequence_id: '0',
				etag: '0',
				name: 'Collaborated Folder' } }
    itemType: "folder",
    itemId: "22222",
    role: .editor,
    accessibleBy: "33333",
    accessibleByType: .user
) { (result: Result<Collaboration, BoxSDKError>) in
    guard case let .success(collaboration) = result else {
        print("Error creating collaboration")

    print("Collaboration successfully created")

Nested objects

When creating a collaboration there are two nested objects within the request body: accessible_by and item.

The accessible_by object specifies who the item should be shared with and includes a group id and the type. The type field should always be set to user.

The item object specifies what is being shared. It includes a type field which should be set as file and an id for that file.