Everything an AI agent can do with the Box API.

A reference guide for building AI agents: every method, how to authenticate, and the permissions each one needs.

Endpoints24
API version2.0
Last updated23 June 2026
Orientation

How the Box API works.

The Box API is how an app or AI agent works with a Box account: listing a folder, uploading and downloading files, copying, moving, and deleting content, searching, and sharing files through collaborations and shared links. Access is granted through an OAuth 2.0 access token, and the application scopes on that token, like reading all files or managing users, decide which actions it can take. Box can also notify an app when a file or folder changes, so an integration learns about activity without polling.

24Endpoints
8Capability groups
11Read
13Write
4Permissions
Authentication
Every call carries an OAuth 2.0 access token in the Authorization header. The token is obtained three ways: OAuth 2.0, where a user signs in and the token acts as that user; Server Authentication with JWT, a server-to-server flow that acts as an admin-like Service Account and needs Box admin approval; and the Client Credentials Grant, which also authenticates server-side with a client id and secret. JWT and CCG can act as another user through the As-User header or the subject settings.
Permissions
Access is governed by application scopes set in the Developer Console. The two broad content scopes are Read all files and folders stored in Box (root_readonly) and Read and write all files and folders stored in Box (root_readwrite), which covers uploads, downloads, folder creation, collaborations, and more. Separate scopes cover non-content areas: Manage users (manage_managed_users) for user provisioning, Manage groups, Manage webhooks (manage_webhook), and Manage signature requests. A call missing the right scope returns a 403 with insufficient_scope.
Versioning
Box serves one base API, version 2.0, in the path of every call at https://api.box.com/2.0. Individual endpoints can also carry a dated version, requested through the box-version header, which defaults to 2024.0 when the header is absent. Year-based versions like 2025.0 and 2025.1 introduce breaking changes to specific endpoints, such as the Sign Requests API, and each stable version is supported for at least 12 months. Box reserves one breaking change per year, plus one extra for security or privacy.
Data model
Box is resource-oriented JSON over HTTPS. Files and folders are the core resources: a folder holds files, folders, and web links, and the root folder is id 0. Files and folders are renamed, moved, locked, and shared through their update methods, access is granted by creating collaborations, and a shared link can expose an item beyond the account. Uploads and downloads use a separate host. A change to a file or folder can be pushed to a webhook, and metadata template instances attach structured data to items.
Connect & authenticate

Connection & authentication methods.

How an app or AI agent connects to Box determines what it can reach. There is the route for making calls, a webhook channel for being told when content changes, and a hosted server that exposes Box tools to agents, and each is governed by the access token behind it and the application scopes that token carries.

Ways to connect

Content API (REST)

The Box Content API answers at https://api.box.com/2.0 and returns JSON. Uploads and downloads use a separate upload host at https://upload.box.com/api/2.0. A call authenticates with an OAuth 2.0 access token in the Authorization header, and an individual endpoint can be pinned to a dated version through the box-version header.

Best forConnecting an app or AI agent to Box.
Governed byThe access token and the application scopes it carries.
Docs ↗

Webhooks (V2)

Box POSTs a payload to an HTTPS address registered on a file or folder when a chosen trigger fires, such as FILE.UPLOADED or COLLABORATION.CREATED. The payload carries the full object and the trigger name, the receiver verifies the BOX-SIGNATURE-PRIMARY header against the webhook's signing keys, and Box retries up to ten times on a failed delivery.

Best forReceiving Box events at an app or AI agent.
Governed byThe Manage webhooks scope, and the signing keys on the webhook.
Docs ↗

MCP server (Model Context Protocol)

Box hosts a Model Context Protocol server at https://mcp.box.com that lets an AI agent use Box content through a single endpoint, with tools for search, Box AI, and folder and content actions. An admin enables it in the Box Admin Console, and agents authorize with OAuth. The earlier self-hosted community server is deprecated.

Best forConnecting an AI agent to Box through MCP.
Governed byThe OAuth grant and the scopes it carries.
Docs ↗
Authentication

OAuth 2.0

OAuth 2.0 is the standard three-legged flow where a Box user signs in and grants the application access, producing an access token that acts as that user and reaches only what the user can see. Refresh tokens keep the session alive. This is the route for an app acting on behalf of real Box users.

TokenOAuth 2.0 access token (acts as the authorizing user)
Best forApps acting on behalf of individual Box users
Docs ↗

Server Authentication (JWT)

JWT is a server-to-server flow that needs no end-user sign-in. The application authenticates with a signed assertion and acts as a Service Account, an admin-like identity created when the app is authorized, which is why a Box admin must approve the app. It can also act as a managed or app user through the As-User header.

TokenAccess token for the Service Account or an As-User identity
Best forBackend automation and apps with their own identity system
Docs ↗

Server Authentication (Client Credentials Grant)

The Client Credentials Grant authenticates with a client id and client secret and no user sign-in. Setting box_subject_type to enterprise acts as the application's Service Account, while box_subject_type user acts as a chosen managed user or admin, once the app is configured for it in the Developer Console.

TokenAccess token for the Service Account or a chosen user
Best forBackend services that want JWT-style access without managing a key pair
Docs ↗
Capability map

What an AI agent can do in Box.

The Box API is split into areas an agent can act on, like files, folders, search, collaborations, shared links, and users. Each area has its own methods and its own application scopes, and writes in the files and folders areas move and delete real content.

Endpoint reference

Every Box API method.

Filter by method, access, or permission, or search any path. Select a row for version detail, rate limits, the related webhook event, and the source.

MethodEndpointWhat it doesAccessPermissionVersion

Files

Read a file's details, upload and download content, copy, update to rename, move, or lock, and delete a file.6

Application scope: Read all files and folders stored in Box (root_readonly). Read and write all files and folders (root_readwrite) also covers it.

Acts onfile
Permission (capability)Read all files
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Application scope: Read all files and folders stored in Box (root_readonly). The download URL is not persistent, so the redirect must be followed.

Acts onfile
Permission (capability)Read all files
VersionAvailable since the API’s base version
Webhook eventfile-downloaded
Rate limitStandard limits apply

Application scope: Read and write all files and folders stored in Box (root_readwrite). Uploads use the upload host, not the main api.box.com host.

Acts onfile
Permission (capability)Write all files
VersionAvailable since the API’s base version
Webhook eventfile-uploaded
Rate limit240 uploads per minute, per user

Application scope: Read and write all files and folders stored in Box (root_readwrite). A missing scope returns insufficient_scope.

Acts onfile
Permission (capability)Write all files
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Application scope: Read and write all files and folders stored in Box (root_readwrite). The user needs access to the source file and the destination folder.

Acts onfile
Permission (capability)Write all files
VersionAvailable since the API’s base version
Webhook eventfile-copied
Rate limitStandard limits apply

Application scope: Read and write all files and folders stored in Box (root_readwrite). Whether the file is trashed or permanently removed depends on enterprise settings.

Acts onfile
Permission (capability)Write all files
VersionAvailable since the API’s base version
Webhook eventfile-trashed
Rate limitStandard limits apply

Folders

Read a folder, list the items inside it, create a folder, update it to rename or move, and delete it.5

Application scope: Read all files and folders stored in Box (root_readonly). The root folder is id 0.

Acts onfolder
Permission (capability)Read all files
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Application scope: Read all files and folders stored in Box (root_readonly). Supports offset and marker pagination.

Acts onfolder
Permission (capability)Read all files
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Application scope: Read and write all files and folders stored in Box (root_readwrite). The user needs access to the parent folder.

Acts onfolder
Permission (capability)Write all files
VersionAvailable since the API’s base version
Webhook eventfolder-created
Rate limitStandard limits apply

Application scope: Read and write all files and folders stored in Box (root_readwrite). A missing scope returns insufficient_scope.

Acts onfolder
Permission (capability)Write all files
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Application scope: Read and write all files and folders stored in Box (root_readwrite). Without recursive=true, deleting a non-empty folder returns folder_not_empty.

Acts onfolder
Permission (capability)Write all files
VersionAvailable since the API’s base version
Webhook eventfolder-trashed
Rate limitStandard limits apply
Search across files, folders, and web links the authenticated user can reach.1

Application scope: Read all files and folders stored in Box (root_readonly). The scope parameter defaults to user_content; enterprise_content must be enabled by Box.

Acts onsearch result
Permission (capability)Read all files
VersionAvailable since the API’s base version
Webhook eventNone
Rate limit6 searches per second and 60 per minute, per user; 12 per second per enterprise

Collaborations

Add a person or group as a collaborator on a file or folder, read, update, or remove a collaboration.4

Application scope: Read and write all files and folders stored in Box (root_readwrite). A group must be invitable, and information barriers can restrict who can be added.

Acts oncollaboration
Permission (capability)Write all files
VersionAvailable since the API’s base version
Webhook eventcollaboration-created
Rate limitStandard limits apply

Application scope: Read all files and folders stored in Box (root_readonly).

Acts oncollaboration
Permission (capability)Read all files
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Application scope: Read and write all files and folders stored in Box (root_readwrite).

Acts oncollaboration
Permission (capability)Write all files
VersionAvailable since the API’s base version
Webhook eventcollaboration-updated
Rate limitStandard limits apply

Application scope: Read and write all files and folders stored in Box (root_readwrite).

Acts oncollaboration
Permission (capability)Write all files
VersionAvailable since the API’s base version
Webhook eventcollaboration-removed
Rate limitStandard limits apply
Create a shared link on a file or folder through its update method, and resolve a shared link to the item behind it.1

Application scope: Read all files and folders stored in Box (root_readonly). The shared link, and any password, are passed in the boxapi header.

Acts onshared link
Permission (capability)Read all files
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Metadata

Read the metadata on a file and apply a metadata template instance to it.2

Application scope: Read all files and folders stored in Box (root_readonly).

Acts onmetadata
Permission (capability)Read all files
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Application scope: Read and write all files and folders stored in Box (root_readwrite). The scope path part names the template's namespace, global or enterprise.

Acts onmetadata
Permission (capability)Write all files
VersionAvailable since the API’s base version
Webhook eventmetadata-instance-created
Rate limitStandard limits apply

Users

Read the authenticated user, list the enterprise's users, and create a managed user.3

No extra scope beyond a valid token. The As-User header can run the call on behalf of another user.

Acts onuser
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Application scope: Manage users (manage_managed_users). The application and the authenticated user need permission to look up users across the enterprise.

Acts onuser
Permission (capability)Manage users
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Application scope: Manage users (manage_managed_users). Creating users needs admin-level access.

Acts onuser
Permission (capability)Manage users
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Webhooks

List the application's webhooks and create a webhook on a file or folder.2

Application scope: Manage webhooks (manage_webhook). Only returns webhooks on files or folders the authenticated user owns.

Acts onwebhook
Permission (capability)Manage webhooks
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Application scope: Manage webhooks (manage_webhook). Up to 1000 webhooks per application, per user.

Acts onwebhook
Permission (capability)Manage webhooks
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply
No endpoints match those filters.
Webhooks

Webhook events.

Box can notify an app or AI agent when something happens to a file or folder, instead of the app repeatedly asking. Box posts a payload with the full object and the trigger that fired to an HTTPS address registered for the chosen events, and retries up to ten times if delivery fails.

EventWhat it signalsTriggered by
FILE.UPLOADEDFires when a file is uploaded to, or moved into, the monitored folder./files/content
FILE.DOWNLOADEDFires when a file is downloaded./files/{file_id}/content
FILE.PREVIEWEDFires when a file is previewed.In-app only
FILE.COPIEDFires when a file is copied./files/{file_id}/copy
FILE.TRASHEDFires when a file is moved to the trash./files/{file_id}
FILE.DELETEDFires when a file is permanently deleted./files/{file_id}
FOLDER.CREATEDFires when a folder is created./folders
FOLDER.DOWNLOADEDFires when a folder is downloaded.In-app only
FOLDER.TRASHEDFires when a folder is moved to the trash./folders/{folder_id}
COLLABORATION.CREATEDFires when a collaboration is created on a file or folder./collaborations
COLLABORATION.ACCEPTEDFires when a collaboration invite is accepted.In-app only
COLLABORATION.UPDATEDFires when a collaboration is updated./collaborations/{collaboration_id}
COLLABORATION.REMOVEDFires when a collaboration is removed./collaborations/{collaboration_id}
SHARED_LINK.CREATEDFires when a shared link is created on a file or folder.In-app only
METADATA_INSTANCE.CREATEDFires when a metadata template instance is associated with a file or folder./files/{file_id}/metadata/{scope}/{template_key}
No events match that search.
Rate limits & pagination

Rate limits, pagination & request size.

Box limits how fast an app or AI agent can call, by a per-user request rate measured per minute, with separate, tighter ceilings on uploads and on search.

Request rate

Box meters requests per user, not by a per-method cost. A user gets 1,000 API requests per minute across the API, with tighter ceilings on the heavier operations: 240 file uploads per minute per user, and search held to 6 requests per second and 60 per minute per user, plus 12 per second per enterprise. Box Sign has its own limits, 100 create or resend requests per minute per user and 1,000 get requests per minute per user. Going over returns HTTP 429 with a retry-after header in seconds, and Box recommends exponential back-off rather than an immediate retry.

Pagination

List endpoints use offset-based pagination through the limit and offset query parameters, and some endpoints also support marker-based pagination through a marker parameter for large or frequently changing collections. The list folder items endpoint returns a total_count and the entries for the requested page.

Request size

The simple upload endpoint is for small files; Box recommends the chunked upload API for files over 50MB. The list folder items endpoint returns up to 1,000 items per page. A webhook payload carries the full object that triggered it plus context, and Box retries a failed delivery up to ten times.

Errors

Status codes & error handling.

The status codes an agent should handle, and what to do about each.

StatusCodeMeaningWhat to do
400bad_requestThe request body or parameters are malformed or invalid, such as a bad digest on an upload.Read the message and code in the error object, correct the request, and resend.
401unauthorizedThe access token is missing, invalid, or expired.Refresh or reissue the access token and resend with a valid Authorization header.
403forbiddenThe token is valid but the user or application is not permitted, often because the application lacks the right scope, returned as insufficient_scope.Grant the missing application scope, or use an identity with access to the item.
404not_foundThe item does not exist, or the token cannot see it. Box returns 404 rather than 403 so it does not confirm a private item exists.Confirm the id and that the token's identity has access to the item.
409item_name_in_useThe request conflicts with the current state, such as a name already in use in the destination folder, or deleting a non-empty folder without recursive.Resolve the conflict, for example by choosing a new name or passing recursive=true, then retry.
412precondition_failedAn If-Match etag did not match because the item was changed since it was last read.Refetch the item to get its current etag, then retry the write with that etag.
429rate_limit_exceededA rate limit was exceeded, such as the per-user request, upload, or search ceiling.Wait the seconds given in the retry-after header, then retry with exponential back-off.
500internal_server_errorAn error on Box's side, which can also appear as 502 or 503.Retry with exponential back-off, honoring any Retry-After header.
Versioning & freshness

Version history.

Box serves a single base API, version 2.0, in the path of every call. Individual endpoints can also carry a dated version, like 2025.0, requested through the box-version header, which defaults to 2024.0 when the header is absent.

Version history

What changed, and when

Latest version2.0
2.0Current version
Box Content API, version 2.0

Box serves a single base API, version 2.0, in the path of every call at https://api.box.com/2.0. On top of this, individual endpoints can carry a dated, year-based version requested through the box-version header, which defaults to 2024.0 when the header is absent. Year-based versions introduce breaking changes to specific endpoints, and each stable version is supported for at least 12 months.

What changed
  • Base API version 2.0 in the path of every call.
  • Year-based endpoint versioning through the box-version header, defaulting to 2024.0.
  • Box reserves one breaking change per year, plus one extra for a security or privacy fix (for example 2025.1).
2026-06-11Feature update
New event types, AI extract, and sign request schema updates

Box shipped SDK releases across Node, .NET, Java, Python, and iOS adding new event types, AI extract structured parameters, and sign request schema updates.

What changed
  • New event types added across the SDKs.
  • AI extract structured gained new parameters.
  • Sign request schema updates.
2026-06-01Feature update
New Box AI models available

Box AI added new models, including AWS Claude Opus 4.8, OpenAI GPT-5.4 mini, and Google Gemini 3.5 Flash, and retired twelve older models.

What changed
  • New AI models added to the Box AI API.
  • Twelve older AI models retired.
2025.0
Year-based endpoint versioning introduced

Box introduced year-based versioning for its public APIs. Every endpoint available at the end of 2024 was assigned 2024.0, the default when no box-version header is sent, and new endpoint versions ship under the calendar year of their release, like 2025.0, starting with the Sign Requests API.

What changed
  • All endpoints available at the end of 2024 assigned version 2024.0.
  • New endpoint versions named for the calendar year of release, like 2025.0.
  • Each stable version supported for a minimum of 12 months.

Pin an endpoint's dated version through the box-version header and move up on a schedule that suits the integration.

Box API changelog ↗
Questions

Box API, answered.

Which authentication method should an integration use, OAuth, JWT, or CCG?+
OAuth 2.0 fits an app acting for real Box users who sign in and grant access, where the token reaches only what each user can see. JWT and the Client Credentials Grant are server-to-server flows that need no user sign-in and act as an admin-like Service Account, suited to backend automation; both can act as a specific managed user through the As-User header. JWT uses a signed key pair and needs Box admin approval, while CCG uses a client id and secret.
What do the application scopes mean, and which one does a call need?+
Scopes are set in the Developer Console and decide what the app can do. Most content work needs one of two: Read all files and folders stored in Box (root_readonly) for reads, or Read and write all files and folders stored in Box (root_readwrite) for uploads, downloads, folder creation, collaborations, and other writes. Non-content areas have their own scopes, like Manage users for provisioning accounts and Manage webhooks for creating webhooks. A call missing the right scope returns a 403 with insufficient_scope.
What are the rate limits, and what happens when one is hit?+
Box meters per user. A user gets 1,000 API requests per minute across the API, with tighter ceilings on heavier operations: 240 uploads per minute per user, and search held to 6 per second and 60 per minute per user, plus 12 per second per enterprise. Going over returns HTTP 429 with a retry-after header that says how many seconds to wait, and Box recommends exponential back-off rather than an immediate retry.
How does an agent receive events instead of polling?+
Box Webhooks V2 push a payload to an HTTPS address registered on a file or folder when a chosen trigger fires, such as FILE.UPLOADED, FOLDER.CREATED, or COLLABORATION.CREATED. The payload carries the full object and the trigger name. The receiver verifies the BOX-SIGNATURE-PRIMARY header against the webhook's signing keys to confirm the request came from Box, and Box retries a failed delivery up to ten times. Creating a webhook needs the Manage webhooks scope, with up to 1,000 per application per user.
How does a file get uploaded and downloaded?+
Uploads and downloads use a separate host from the rest of the API. A small file is uploaded with POST to /files/content on the upload host, https://upload.box.com/api/2.0, and Box recommends the chunked upload API for files over 50MB. A download is a GET to /files/{file_id}/content, which returns a 302 redirect to a short-lived URL on dl.boxcloud.com that the client must follow.
How does API versioning work in Box?+
Every call uses the base API version 2.0 in its path. On top of that, an individual endpoint can carry a dated version through the box-version header, which defaults to 2024.0 when the header is absent. Year-based versions like 2025.0 introduce breaking changes to specific endpoints, with 2025.1 reserved for a security or privacy fix on top. Each stable version is supported for at least 12 months, so an integration can pin a version and move up deliberately.
Does Box have a Model Context Protocol server for AI agents?+
Yes. Box hosts an MCP server at https://mcp.box.com that lets an AI agent use Box content through a single endpoint, with tools for search, Box AI, and folder and content actions. An admin enables it in the Box Admin Console, and agents authorize with OAuth. The earlier self-hosted community MCP server is deprecated and should not be used for new work.
Related

More storage API guides for agents

What is Bollard AI?

Control what every AI agent can do in Box.

Bollard AI sits between a team's AI agents and Box. Grant each agent exactly the access it needs, read or write, resource by resource, and every call is checked and logged.

  • Set read, write, or full access per agent, never a shared Box token.
  • Denied by default, so an agent reaches only what has been explicitly allowed.
  • Every call recorded in plain English: who, what, where, and the decision.
Box
Documents Agent
Read folders and files ResourceOffReadFull use
Upload and share documents ActionOffReadFull use
Manage users ResourceOffReadFull use
Per-agent access, set in Bollard AI, not in Box