Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/box:box-tasks-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Box Platform Tasks API
description: Box Platform provides functionality to provide access to content stored within Box. It provides endpoints for basic manipulation of files and folders, management of users within an enterprise, as well as more complex topics such as legal holds and retention policies.
termsOfService: https://cloud.app.box.com/s/rmwxu64h1ipr41u49w3bbuvbsa29wku9
contact:
name: Box, Inc
url: https://developer.box.com
email: devrel@box.com
license:
name: Apache-2.0
url: https://www.apache.org/licenses/LICENSE-2.0
version: '2024.0'
x-box-commit-hash: 53bdced3cd
servers:
- url: https://api.box.com/2.0
description: Box Platform API server.
security:
- OAuth2Security: []
tags:
- name: Tasks
description: Tasks allow users to request collaborators on a file to review a file or complete a piece of work. Tasks can be used by developers to create file-centric workflows.
x-box-tag: tasks
paths:
/files/{file_id}/tasks:
get:
operationId: get_files_id_tasks
summary: List tasks on file
description: Retrieves a list of all the tasks for a file. This endpoint does not support pagination.
parameters:
- name: file_id
in: path
description: 'The unique identifier that represents a file.
The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`.'
required: true
schema:
type: string
example: '12345'
responses:
'200':
description: 'Returns a list of tasks on a file.
If there are no tasks on this file an empty collection is returned instead.'
content:
application/json:
schema:
$ref: '#/components/schemas/Tasks'
'404':
description: Returns an error when the file could not be found or the user does not have access to the file.
content:
application/json:
schema:
$ref: '#/components/schemas/ClientError'
'405':
description: Returns an error when the `file_id` was not provided.
content:
application/json:
schema:
$ref: '#/components/schemas/ClientError'
'500':
description: Returns an error when an attempt was made to retrieve tasks for the file with ID `0`.
content:
application/json:
schema:
$ref: '#/components/schemas/ClientError'
default:
description: An unexpected client error.
content:
application/json:
schema:
$ref: '#/components/schemas/ClientError'
x-box-tag: tasks
tags:
- Tasks
x-codeSamples:
- lang: curl
label: List tasks on file
source: "curl -i -X GET \"https://api.box.com/2.0/files/12345/tasks\" \\\n -H \"authorization: Bearer <ACCESS_TOKEN>\""
- lang: dotnet
label: List tasks on file
source: 'await client.Tasks.GetFileTasksAsync(fileId: file.Id);'
- lang: swift
label: List tasks on file
source: 'try await client.tasks.getFileTasks(fileId: file.id)'
- lang: java
label: List tasks on file
source: client.getTasks().getFileTasks(file.getId())
- lang: node
label: List tasks on file
source: await client.tasks.getFileTasks(file.id);
- lang: python
label: List tasks on file
source: client.tasks.get_file_tasks(file.id)
/tasks:
post:
operationId: post_tasks
summary: Create task
description: Creates a single task on a file. This task is not assigned to any user and will need to be assigned separately.
requestBody:
content:
application/json:
schema:
type: object
properties:
item:
description: The file to attach the task to.
type: object
properties:
id:
description: The ID of the file.
type: string
example: '11446498'
type:
description: The value will always be `file`.
type: string
example: file
enum:
- file
action:
description: 'The action the task assignee will be prompted to do. Must be
- `review` defines an approval task that can be approved or, rejected
- `complete` defines a general task which can be completed.'
type: string
example: review
default: review
enum:
- review
- complete
message:
description: An optional message to include with the task.
type: string
example: Please review
default: ''
due_at:
description: Defines when the task is due. Defaults to `null` if not provided.
type: string
format: date-time
example: '2012-12-12T10:53:43-08:00'
completion_rule:
description: 'Defines which assignees need to complete this task before the task is considered completed.
- `all_assignees` (default) requires all assignees to review or approve the task in order for it to be considered completed.
- `any_assignee` accepts any one assignee to review or approve the task in order for it to be considered completed.'
type: string
example: all_assignees
default: all_assignees
enum:
- all_assignees
- any_assignee
required:
- item
responses:
'201':
description: Returns the newly created task.
content:
application/json:
schema:
$ref: '#/components/schemas/Task'
'400':
description: 'Returned if the request parameters or body is not valid.
- `bad_request` when the body does not contain a valid request. This may be because the `action` or `completion_rule` are not one of the allowed values.'
content:
application/json:
schema:
$ref: '#/components/schemas/ClientError'
'403':
description: Returns an error when the user does not have the permission to create a task on the file.
content:
application/json:
schema:
$ref: '#/components/schemas/ClientError'
'404':
description: Returns an error when the file could not be found or the user does not have access to the file.
content:
application/json:
schema:
$ref: '#/components/schemas/ClientError'
default:
description: An unexpected client error.
content:
application/json:
schema:
$ref: '#/components/schemas/ClientError'
x-box-tag: tasks
tags:
- Tasks
x-codeSamples:
- lang: curl
label: Create task
source: "curl -i -X POST \"https://api.box.com/2.0/tasks\" \\\n -H \"authorization: Bearer <ACCESS_TOKEN>\" \\\n -H \"content-type: application/json\" \\\n -d '{\n \"item\": {\n \"id\": \"11446498\",\n \"type\": \"file\"\n },\n \"action\": \"review\"\n }'"
- lang: dotnet
label: Create task
source: 'await client.Tasks.CreateTaskAsync(requestBody: new CreateTaskRequestBody(item: new CreateTaskRequestBodyItemField() { Type = CreateTaskRequestBodyItemTypeField.File, Id = file.Id }) { Message = "test message", DueAt = dateTime, Action = CreateTaskRequestBodyActionField.Review, CompletionRule = CreateTaskRequestBodyCompletionRuleField.AllAssignees });'
- lang: swift
label: Create task
source: 'try await client.tasks.createTask(requestBody: CreateTaskRequestBody(item: CreateTaskRequestBodyItemField(type: CreateTaskRequestBodyItemTypeField.file, id: file.id), message: "test message", dueAt: dateTime, action: CreateTaskRequestBodyActionField.review, completionRule: CreateTaskRequestBodyCompletionRuleField.allAssignees))'
- lang: java
label: Create task
source: client.getTasks().createTask(new CreateTaskRequestBody.Builder(new CreateTaskRequestBodyItemField.Builder().id(file.getId()).type(CreateTaskRequestBodyItemTypeField.FILE).build()).action(CreateTaskRequestBodyActionField.REVIEW).message("test message").dueAt(dateTime).completionRule(CreateTaskRequestBodyCompletionRuleField.ALL_ASSIGNEES).build())
- lang: node
label: Create task
source: "await client.tasks.createTask({\n item: {\n type: 'file' as CreateTaskRequestBodyItemTypeField,\n id: file.id,\n } satisfies CreateTaskRequestBodyItemField,\n message: 'test message',\n dueAt: dateTime,\n action: 'review' as CreateTaskRequestBodyActionField,\n completionRule: 'all_assignees' as CreateTaskRequestBodyCompletionRuleField,\n} satisfies CreateTaskRequestBody);"
- lang: python
label: Create task
source: "client.tasks.create_task(\n CreateTaskItem(type=CreateTaskItemTypeField.FILE, id=file.id),\n action=CreateTaskAction.REVIEW,\n message=\"test message\",\n due_at=date_time,\n completion_rule=CreateTaskCompletionRule.ALL_ASSIGNEES,\n)"
/tasks/{task_id}:
get:
operationId: get_tasks_id
summary: Get task
description: Retrieves information about a specific task.
parameters:
- name: task_id
in: path
description: The ID of the task.
required: true
schema:
type: string
example: '12345'
responses:
'200':
description: Returns a task object.
content:
application/json:
schema:
$ref: '#/components/schemas/Task'
'404':
description: Returns an error when the task could not be found or the user does not have access to the file the task is assigned to.
content:
application/json:
schema:
$ref: '#/components/schemas/ClientError'
default:
description: An unexpected client error.
content:
application/json:
schema:
$ref: '#/components/schemas/ClientError'
x-box-tag: tasks
tags:
- Tasks
x-codeSamples:
- lang: curl
label: Get task
source: "curl -i -X GET \"https://api.box.com/2.0/tasks/12345\" \\\n -H \"authorization: Bearer <ACCESS_TOKEN>\""
- lang: dotnet
label: Get task
source: 'await client.Tasks.GetTaskByIdAsync(taskId: NullableUtils.Unwrap(task.Id));'
- lang: swift
label: Get task
source: 'try await client.tasks.getTaskById(taskId: task.id!)'
- lang: java
label: Get task
source: client.getTasks().getTaskById(task.getId())
- lang: node
label: Get task
source: await client.tasks.getTaskById(task.id!);
- lang: python
label: Get task
source: client.tasks.get_task_by_id(task.id)
put:
operationId: put_tasks_id
summary: Update task
description: Updates a task. This can be used to update a task's configuration, or to update its completion state.
parameters:
- name: task_id
in: path
description: The ID of the task.
required: true
schema:
type: string
example: '12345'
requestBody:
content:
application/json:
schema:
type: object
properties:
action:
description: 'The action the task assignee will be prompted to do. Must be
- `review` defines an approval task that can be approved or rejected,
- `complete` defines a general task which can be completed.'
type: string
example: review
enum:
- review
- complete
message:
description: The message included with the task.
type: string
example: Please review
due_at:
description: When the task is due at.
type: string
format: date-time
example: '2012-12-12T10:53:43-08:00'
completion_rule:
description: 'Defines which assignees need to complete this task before the task is considered completed.
- `all_assignees` (default) requires all assignees to review or approve the task in order for it to be considered completed.
- `any_assignee` accepts any one assignee to review or approve the task in order for it to be considered completed.'
type: string
example: all_assignees
enum:
- all_assignees
- any_assignee
responses:
'200':
description: Returns the updated task object.
content:
application/json:
schema:
$ref: '#/components/schemas/Task'
'400':
description: 'Returned if the request parameters or body is not valid.
- `bad_request` when the body does not contain a valid request. This may be because the `action` or `completion_rule` are not one of the allowed values.'
content:
application/json:
schema:
$ref: '#/components/schemas/ClientError'
'403':
description: Returns an error when the user does not have the permission to update a task on the file.
content:
application/json:
schema:
$ref: '#/components/schemas/ClientError'
'404':
description: Returns an error when the file could not be found or the user does not have access to the file.
content:
application/json:
schema:
$ref: '#/components/schemas/ClientError'
default:
description: An unexpected client error.
content:
application/json:
schema:
$ref: '#/components/schemas/ClientError'
x-box-tag: tasks
tags:
- Tasks
x-codeSamples:
- lang: curl
label: Update task
source: "curl -i -X PUT \"https://api.box.com/2.0/tasks/12345\" \\\n -H \"authorization: Bearer <ACCESS_TOKEN>\" \\\n -H \"content-type: application/json\" \\\n -d '{\n \"action\": \"review\"\n }'"
- lang: dotnet
label: Update task
source: 'await client.Tasks.UpdateTaskByIdAsync(taskId: NullableUtils.Unwrap(task.Id), requestBody: new UpdateTaskByIdRequestBody() { Message = "updated message" });'
- lang: swift
label: Update task
source: 'try await client.tasks.updateTaskById(taskId: task.id!, requestBody: UpdateTaskByIdRequestBody(message: "updated message"))'
- lang: java
label: Update task
source: client.getTasks().updateTaskById(task.getId(), new UpdateTaskByIdRequestBody.Builder().message("updated message").build())
- lang: node
label: Update task
source: "await client.tasks.updateTaskById(task.id!, {\n requestBody: {\n message: 'updated message',\n } satisfies UpdateTaskByIdRequestBody,\n} satisfies UpdateTaskByIdOptionalsInput);"
- lang: python
label: Update task
source: client.tasks.update_task_by_id(task.id, message="updated message")
delete:
operationId: delete_tasks_id
summary: Remove task
description: Removes a task from a file.
parameters:
- name: task_id
in: path
description: The ID of the task.
required: true
schema:
type: string
example: '12345'
responses:
'204':
description: Returns an empty response when the task was successfully deleted.
'404':
description: Returns an error when the task could not be found or the user does not have access to the file the task is assigned to.
content:
application/json:
schema:
$ref: '#/components/schemas/ClientError'
default:
description: An unexpected client error.
content:
application/json:
schema:
$ref: '#/components/schemas/ClientError'
x-box-tag: tasks
tags:
- Tasks
x-codeSamples:
- lang: curl
label: Remove task
source: "curl -i -X DELETE \"https://api.box.com/2.0/tasks/12345\" \\\n -H \"authorization: Bearer <ACCESS_TOKEN>\""
- lang: dotnet
label: Remove task
source: 'await client.Tasks.DeleteTaskByIdAsync(taskId: NullableUtils.Unwrap(task.Id));'
- lang: swift
label: Remove task
source: 'try await client.tasks.deleteTaskById(taskId: task.id!)'
- lang: java
label: Remove task
source: client.getTasks().deleteTaskById(task.getId())
- lang: node
label: Remove task
source: await client.tasks.deleteTaskById(task.id!);
- lang: python
label: Remove task
source: client.tasks.delete_task_by_id(task.id)
components:
schemas:
File--Mini:
description: A mini representation of a file, used when nested under another resource.
type:
- object
- 'null'
allOf:
- $ref: '#/components/schemas/File--Base'
- properties:
sequence_id:
allOf:
- type:
- string
- 'null'
example: '3'
description: 'A numeric identifier that represents the most recent user event that has been applied to this item.
This can be used in combination with the `GET /events`-endpoint to filter out user events that would have occurred before this identifier was read.
An example would be where a Box Drive-like application would fetch an item via the API, and then listen to incoming user events for changes to the item. The application would ignore any user events where the `sequence_id` in the event is smaller than or equal to the `sequence_id` in the originally fetched resource.'
- {}
name:
description: The name of the file.
type: string
example: Contract.pdf
sha1:
description: The SHA1 hash of the file. This can be used to compare the contents of a file on Box with a local file.
type: string
format: digest
example: 85136C79CBF9FE36BB9D05D0639C70C265C18D37
file_version:
allOf:
- $ref: '#/components/schemas/FileVersion--Mini'
- description: The information about the current version of the file.
title: File (Mini)
x-box-resource-id: file--mini
x-box-tag: files
x-box-variant: mini
Tasks:
description: A list of tasks.
type: object
properties:
total_count:
description: One greater than the offset of the last entry in the entire collection. The total number of entries in the collection may be less than `total_count`.
type: integer
format: int64
example: 5000
entries:
description: A list of tasks.
type: array
items:
$ref: '#/components/schemas/Task'
title: Tasks
x-box-resource-id: tasks
x-box-tag: tasks
TaskAssignment:
description: A task assignment defines which task is assigned to which user to complete.
type: object
properties:
id:
description: The unique identifier for this task assignment.
type: string
example: '11446498'
type:
description: The value will always be `task_assignment`.
type: string
example: task_assignment
enum:
- task_assignment
item:
allOf:
- $ref: '#/components/schemas/File--Mini'
- description: The file that the task has been assigned to.
assigned_to:
allOf:
- $ref: '#/components/schemas/User--Mini'
- description: The user that the task has been assigned to.
message:
description: A message that will is included with the task assignment. This is visible to the assigned user in the web and mobile UI.
type: string
example: Please review
completed_at:
description: The date at which this task assignment was completed. This will be `null` if the task is not completed yet.
type: string
format: date-time
example: '2012-12-12T10:53:43-08:00'
assigned_at:
description: The date at which this task was assigned to the user.
type: string
format: date-time
example: '2012-12-12T10:53:43-08:00'
reminded_at:
description: The date at which the assigned user was reminded of this task assignment.
type: string
format: date-time
example: '2012-12-12T10:53:43-08:00'
resolution_state:
description: The current state of the assignment. The available states depend on the `action` value of the task object.
type: string
example: incomplete
enum:
- completed
- incomplete
- approved
- rejected
assigned_by:
allOf:
- $ref: '#/components/schemas/User--Mini'
- description: The user who assigned this task.
title: Task assignment
x-box-resource-id: task_assignment
x-box-tag: task_assignments
TaskAssignments:
description: A list of task assignments.
type: object
properties:
total_count:
description: The total number of items in this collection.
type: integer
format: int64
example: 100
entries:
description: A list of task assignments.
type: array
items:
$ref: '#/components/schemas/TaskAssignment'
title: Task assignments
x-box-resource-id: task_assignments
x-box-tag: task_assignments
FileVersion--Base:
description: The bare basic representation of a file version, the minimal amount of fields returned when using the `fields` query parameter.
type: object
properties:
id:
description: The unique identifier that represent a file version.
type: string
example: '12345'
type:
description: The value will always be `file_version`.
type: string
example: file_version
enum:
- file_version
required:
- id
- type
title: File version (Base)
x-box-resource-id: file_version--base
x-box-variant: base
x-box-variants:
- base
- mini
- standard
- full
User--Mini:
description: A mini representation of a user, as can be returned when nested within other resources.
type: object
allOf:
- $ref: '#/components/schemas/User--Base'
- properties:
name:
description: The display name of this user.
type: string
example: Aaron Levie
maxLength: 50
login:
description: The primary email address of this user.
type: string
format: email
example: ceo@example.com
title: User (Mini)
x-box-resource-id: user--mini
x-box-tag: users
x-box-variant: mini
ClientError:
description: A generic error.
type: object
properties:
type:
description: The value will always be `error`.
type: string
example: error
enum:
- error
status:
description: The HTTP status of the response.
type: integer
format: int32
example: 400
code:
description: A Box-specific error code.
type: string
example: item_name_invalid
enum:
- created
- accepted
- no_content
- redirect
- not_modified
- bad_request
- unauthorized
- forbidden
- not_found
- method_not_allowed
- conflict
- precondition_failed
- unprocessable_entity
- too_many_requests
- internal_server_error
- unavailable
- item_name_invalid
- insufficient_scope
message:
description: A short message describing the error.
type: string
example: Method Not Allowed
context_info:
description: A free-form object that contains additional context about the error. The possible fields are defined on a per-endpoint basis. `message` is only one example.
type:
- object
- 'null'
example:
message: Something went wrong
additionalProperties: {}
help_url:
description: A URL that links to more information about why this error occurred.
type: string
example: https://developer.box.com/guides/api-calls/permissions-and-errors/common-errors/
request_id:
description: A unique identifier for this response, which can be used when contacting Box support.
type: string
example: abcdef123456
title: Client error
x-box-resource-id: client_error
Task:
description: A task allows for file-centric workflows within Box. Users can create tasks on files and assign them to other users for them to complete the tasks.
type: object
properties:
id:
description: The unique identifier for this task.
type: string
example: '11446498'
type:
description: The value will always be `task`.
type: string
example: task
enum:
- task
item:
allOf:
- $ref: '#/components/schemas/File--Mini'
- description: The file associated with the task.
due_at:
description: When the task is due.
type: string
format: date-time
example: '2012-12-12T10:53:43-08:00'
action:
description: The type of task the task assignee will be prompted to perform.
type: string
example: review
enum:
- review
- complete
message:
description: A message that will be included with the task.
type: string
example: Legal review
task_assignment_collection:
allOf:
- $ref: '#/components/schemas/TaskAssignments'
- description: A collection of task assignment objects associated with the task.
is_completed:
description: Whether the task has been completed.
type: boolean
example: true
created_by:
allOf:
- $ref: '#/components/schemas/User--Mini'
- description: The user who created the task.
created_at:
description: When the task object was created.
type: string
format: date-time
example: '2012-12-12T10:53:43-08:00'
completion_rule:
description: 'Defines which assignees need to complete this task before the task is considered completed.
- `all_assignees` requires all assignees to review or approve the task in order for it to be considered completed.
- `any_assignee` accepts any one assignee to review or approve the task in order for it to be considered completed.'
type: string
example: all_assignees
enum:
- all_assignees
- any_assignee
title: Task
x-box-resource-id: task
x-box-tag: tasks
FileVersion--Mini:
description: A mini representation of a file version, used when nested within another resource.
type: object
allOf:
- $ref: '#/components/schemas/FileVersion--Base'
- properties:
sha1:
description: The SHA1 hash of this version of the file.
type: string
example: 134b65991ed521fcfe4724b7d814ab8ded5185dc
title: File version (Mini)
x-box-resource-id: file_version--mini
x-box-variant: mini
File--Base:
description: The bare basic representation of a file, the minimal amount of fields returned when using the `fields` query parameter.
type:
- object
- 'null'
properties:
id:
description: 'The unique identifier that represent a file.
The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`.'
type: string
example: '12345'
etag:
description: The HTTP `etag` of this file. This can be used within some API endpoints in the `If-Match` and `If-None-Match` headers to only perform changes on the file if (no) changes have happened.
type:
- string
- 'null'
example: '1'
type:
description: The value will always be `file`.
type: string
example: file
enum:
- file
required:
- id
- type
title: File (Base)
x-box-resource-id: file--base
x-box-tag: files
x-box-variant: base
x-box-variants:
- base
- mini
- standard
- full
User--Base:
description: A mini representation of a user, used when nested within another resource.
type: object
properties:
id:
description: The unique identifier for this user.
type: string
example: '11446498'
type:
description: The value will always be `user`.
type: string
example: user
enum:
- user
required:
- type
- id
title: User (Base)
x-box-resource-id: user--base
x-box-tag: users
x-box-variant: base
x-box-variants:
- base
- mini
- standard
- full
securitySchemes:
OAuth2Security:
type: oauth2
description: The access token received from the authorization server in the OAuth 2.0 flow.
flows:
authorizationCode:
authorizationUrl: https://account.box.com/api/oauth2/authorize
tokenUrl: https://api.box.com/oauth2/token
scopes:
root_readonly: Read all files and folders stored in Box
root_readwrite: Read and write all files and folders stored in Box
manage_app_users: Provision and manage app users
manage_managed_users: Provision and manage managed users
manage_groups: Manage an enterprise's groups
manage_webhook: Create webhooks programmatically through the API
manage_enterprise_properties: Manage enterprise properties
manage_data_retention: Manage data retention polices
manage_legal_hold: Manage Legal Holds
externalDocs:
description: Box Developer Documentation.
url: https://developer.box.com
x-mint:
mcp:
enabled: true
x-provenance:
method: harvested
publisher: Box
source: https://developer.box.com/box-openapi.json
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)