Skip to main content
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:
  1. Obtain a server authentication access token (JWT or CCG).
  2. Set the header to the managed user’s ID so subsequent requests run in that user’s context.
  3. 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
  4. 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