In general, applications use Terms of Services as follows.
When an application, authenticated as a user, tries to access an item in Box that
requires the user to have accepted the relevant Terms of Service it receives a
TERMS_OF_SERVICE_REQUIRED error.
The application requests the Terms of Service’s information by calling
.
The application can then show the text from the Terms of Service to the user.
When the user accepts or rejects the terms, it makes a call to either
or
depending on if the initial
error returned a tos_user_status_id in the response.
Server authentication and acting on behalf of users
Applications using JWT, Client Credentials Grant (CCG), or OAuth 2.0 may act as
a , an , or a managed user.
Terms of Service enforcement depends on which user is in context for the API
request.
Accepting Terms of Service programmatically
When a managed user has not accepted Managed Terms of Service, most API calls
made on their behalf return terms_of_service_required. To resolve this
without requiring the user to sign in to the Box web application:
- Obtain a server authentication access token (JWT or CCG).
- Set the header to the managed user’s ID so subsequent
requests run in that user’s context.
- Call the Terms of Service endpoints, which remain available even when Terms
of Service acceptance is outstanding:
- to retrieve the terms text
- or
to accept or reject
- Retry the original API call.
An admin cannot accept Managed Terms of Service for another user without using
the As-User header to act as that user. Acceptance must be recorded for the
user who is subject to the Terms of Service. Last modified on June 25, 2026