Upload file

post
https://upload.box.com/api/2.0
/files/content

Uploads a small file to Box. For file sizes over 50MB we recommend using the Chunk Upload APIs.

Request body order

The attributes part of the body must come before the file part. Requests that do not follow this format when uploading the file will receive a HTTP 400 error with a metadata_after_file_contents error code.

Request

multipart/form-data

Query Parameters

string arrayin queryoptional
id,type,name

A comma-separated list of attributes to include in the response. This can be used to request fields that are not normally returned in a standard response.

Be aware that specifying this parameter will have the effect that none of the standard fields are returned in the response unless explicitly specified, instead only fields for the mini representation are returned, additional to the fields requested.

Request Body

objectin body

The additional attributes of the file being uploaded. Mainly the name and the parent folder. These attributes are part of the multi part request body and are in JSON format.

The attributes part of the body must come before the file part. Requests that do not follow this format when uploading the file will receive a HTTP 400 error with a metadata_after_file_contents error code.

string / date-timenulloptional
2012-12-12T10:53:43-08:00

Defines the time the file was originally created at.

If not set, the upload time will be used.

string / date-timenulloptional
2012-12-12T10:53:43-08:00

Defines the time the file was last modified at.

If not set, the upload time will be used.

stringnulloptional
Photo.png

The name of the file

The parent folder to upload the file to

stringnulloptional
124132

The id of the parent folder. Use 0 for the user's root folder.

string / binaryin bodyrequired

The content of the file to upload to Box.

The attributes part of the body must come before the file part. Requests that do not follow this format when uploading the file will receive a HTTP 400 error with a metadata_after_file_contents error code.

Request Headers

stringin header
optional
134b65991ed521fcfe4724b7d814ab8ded5185dc

An optional header containing the SHA1 hash of the file to ensure that the file was not corrupted in transit.

Response

application/jsonFiles

Returns the new file object in a list.

application/jsonClient error

Returns an error if the file already exists, or the account has run out of disk space.

application/jsonClient error

An unexpected client error.

post
Upload file
You can now try out some of our APIs live, right here in the documentation.
Log in

Request Example

cURL
curl -X POST https://upload.box.com/api/2.0/files/content \
     -H 'Authorization: Bearer <ACCESS_TOKEN>'
     -H "Content-Type: multipart/form-data" \
     -F attributes='{"name":"Photo.jpg", "parent":{"id":"11446498"}}' \
     -F file=@<FILE_NAME>
.NET
using (FileStream fileStream = new FileStream(filePath, FileMode.Open))
{
    BoxFileRequest requestParams = new BoxFileRequest()
    {
        Name = uploadFileName,
        Parent = new BoxRequestEntity() { Id = "0" }
    };

    BoxFile file = await client.FilesManager.UploadAsync(requestParams, fileStream);
}
Java
BoxFolder rootFolder = BoxFolder.getRootFolder(api);
FileInputStream stream = new FileInputStream("My File.txt");
BoxFile.Info newFileInfo = rootFolder.uploadFile(stream, "My File.txt");
stream.close();
Python
folder_id = '22222'
new_file = client.folder(folder_id).upload('/home/me/document.pdf')
print('File "{0}" uploaded to Box with file ID {1}'.format(new_file.name, new_file.id))
Node
var fs = require('fs');
var stream = fs.createReadStream('/path/to/My File.pdf');
var folderID = '0'
client.files.uploadFile(folderID, 'My File.pdf', stream)
	.then(file => {
		/* file -> {
			total_count: 1,
			entries: 
			[ { type: 'file',
				id: '11111',
				file_version: 
					{ type: 'file_version',
					id: '22222',
					sha1: '0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33' },
				sequence_id: '0',
				etag: '0',
				sha1: '0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33',
				name: 'My File.pdf',
				description: '',
				size: 68431,
				path_collection: 
					{ total_count: 1,
					entries: 
					[ { type: 'folder',
						id: '0',
						sequence_id: null,
						etag: null,
						name: 'All Files' } ] },
				created_at: '2017-05-16T15:18:02-07:00',
				modified_at: '2017-05-16T15:18:02-07:00',
				trashed_at: null,
				purged_at: null,
				content_created_at: '2017-05-16T15:18:02-07:00',
				content_modified_at: '2017-05-16T15:18:02-07:00',
				created_by: 
					{ type: 'user',
					id: '33333',
					name: 'Test User',
					login: 'test@example.com' },
				modified_by: 
					{ type: 'user',
					id: '33333',
					name: 'Test User',
					login: 'test@example.com' },
				owned_by: 
					{ type: 'user',
					id: '33333',
					name: 'Test User',
					login: 'test@example.com' },
				shared_link: null,
				parent: 
					{ type: 'folder',
					id: '0',
					sequence_id: null,
					etag: null,
					name: 'All Files' }
				item_status: 'active' } ] }
		*/
	});
iOS
let data = "test content".data(using: .utf8)

let task: BoxUploadTask = client.files.upload(data: data, name: "Test File.txt", parentId: "0") { (result: Result<File, BoxSDKError>) in
    guard case let .success(file) = result else {
        print("Error uploading file")
        return
    }

    print("File \(file.name) was uploaded at \(file.createdAt) into \"\(file.parent.name)\"")
}

// To cancel upload
if someConditionIsSatisfied {
    task.cancel()
}