Laravel Box

A Laravel package for working with Box.

Box API documentation can be found at:

Application Register

To use Box API an application needs creating at


Via Composer

composer require dcblogdev/laravel-box


You can publish the config file with:

php artisan vendor:publish --provider="Dcblogdev\Box\BoxServiceProvider" --tag="config"

When published, the config/box.php config file contains:

return [
    'clientId'       => env('BOX_CLIENT_ID'),
    'clientSecret'   => env('BOX_SECRET_ID'),
    'redirectUri'    => env('BOX_REDIRECT_URI'),
    'boxLandingUri'  => env('BOX_LANDING_URI'),
    'urlAuthorize'   => '',
    'urlAccessToken' => '',


You can publish the migration with:

php artisan vendor:publish --provider="Dcblogdev\Box\BoxServiceProvider" --tag="migrations"

After the migration has been published you can create the tokens tables by running the migration:

php artisan migrate

.ENV Configuration

You should add the env variables to your .env file, this allows you to use a different box application on different servers, each box application requires a unique callback uri.

The follow are required when using OAuth 2.0 credentials:

The `BOX_REDIRECT_URI` is where Box should redirect to for authentication with Box, upon successful authentication the `BOX_LANDING_URI` is used to direct a user to a desired page. > Note BOX_REDIRECT_URI needs to be the full URI ie



Import Namespace

use Dcblogdev\Box\Facades\Box;
A routes example:

Route::get('box', function() {

    //if no box token exists then redirect
    //box authenticated now box:: can be used freely.

    //example of getting the authenticated users details
    return Box::get('/users/me');

Route::get('box/oauth', function() {
    return Box::connect();

Calls can be made by referencing Box:: then the verb get,post,put,patch or delete followed by the end point to call. An array can be passed as a second option.

The end points are relative paths after

Example GET request


Example POST request

Box::post('folders', [
    'name' => 'name of the folder',
    'parent' => [
        'id' => 0

The formula is:

Box::get('path', $array);
Box::post('path', $array);
Box::put('path', $array);
Box::patch('path', $array);
Box::delete('path', $array);

Working with Files

This package provides a clean way of working with files.

To work with files first call ->files() followed by a method.

Get file

Accepts a file id, returns an array.


Download file

Accepts a file id Optionally a path can be used when $storeDownload is set to true. To download the file only an id is required.

Box::files()->download($id, $path = '', $storeDownload = false);

Upload file

Accepts a file path and filename. Optionally specificy the parent, defaults to 0 when ommited.

Box::files()->upload($path, $name, $parent = 0);

Upload revision

Accepts the file id, file path and filename. Optionally specificy a new name.

Box::files()->uploadRevision($file_id, $filepath, $name, $newname = null);

Delete file

Accepts a file id, returns no output.


Working with folders

This package provides a clean way of working with folders.

To work with folders first call ->folders() followed by a method.

Get folder contents

Accepts an folder id defaults to 0, returns an array.

Box::folders()->get($id = 0);

Get files within a folder

Accepts an folder id, returns an array.


Create folder

Accepts name of the folder and the folder id as parent, defaults to 0 when ommited. Returns an array.

Box::folders()->store($name, $parent = 0);

Rename folder

Accepts the folder id, name of the folder. Optionally set the parent folder. Returns an array.

Box::folders()->update($id, $name, $parent = 0);

Copy folder

Accepts the folder id, the parent folder. Optionally set a new name on copy. Returns an array.

Box::folders()->copy($id, $parent, $name = null);

Delete folder

Accepts the folder id. Returns no output.


Get folder collaborations

Accepts the folder id. Returns an array.