Learn how to read, create, update, and delete boards using the platform API
monday.com boards are where users input all of their data, making them one of the core platform components. The board's structure consists of items(rows), groups (groups of rows), and columns, and the board's data is stored in items and their respective updates sections.
Queries
You can use the boards query to retrieve board data via the API.
- Required scope:
boards:read - Returns an array containing metadata about one or a collection of boards
- Can be queried directly at the root or nested within another query (e.g.,
items)
query {
boards(
ids: [1234567890]
hierarchy_type: [classic, multi_level]
) {
name
state
permissions
items_page {
items {
id
name
}
}
}
}import { ApiClient } from "@mondaydotcomorg/api";
const mondayApiClient = new ApiClient({ token: myToken});
const query = `query { boards (ids: [1234567890]) { name state permissions items_page { items { id name }}}}`
const response = await mondayApiClient.request(query);Arguments
You can use the following arguments to reduce the number of results returned in your boards query.
Argument | Description | Enum Values |
|---|---|---|
board_kind | The type of board to return. |
|
hierarchy_type | The board hierarchy type to filter by. If omitted, only |
|
ids | The specific board IDs to return. | |
limit | The number of boards to return. The default is 25. | |
order_by | The order in which to retrieve your boards. |
|
page | The page number to return. Starts at 1. | |
state | The state of the board to return. The default is |
|
workspace_ids | The specific workspace IDs that contain the boards to return. |
Fields
You can use the following fields to specify what information your boards query will return.
Field | Description | Enum Values |
|---|---|---|
access_level | The user's board permission level. |
|
activity_logs | The activity log events for the queried board(s). | |
board_folder_id | The unique identifier of the folder that contains the board(s). Returns | |
board_kind | The board's type. |
|
columns | The board's visible columns. | |
communication | The board's communication value (typically a meeting ID). | |
creator | The board's creator. | |
description | The board's description. | |
groups | The board's visible groups. | |
hierarchy_type | The board's hierarchy type. |
|
id | The board's unique identifier. | |
item_terminology | The nickname for items on the board. Can be a predefined or custom value. | |
items_count | The number of items on the board. | |
items_page | The board's items. Can be used to retrieve all items on a board. | |
name | The board's name. | |
object_type_unique_key | A unique identifier for the board's object type. May return | |
owner | The user who created the board. | |
owners | The board's owners. | |
permissions | The board's permissions. |
|
state | The board's state. |
|
subscribers | The board's subscribers. | |
tags | The board's tags. | |
team_owners | The board's team owners. | |
team_subscribers | The board's team subscribers. A value of | |
top_group | The group at the top of the board. | |
type | The board's object type. |
|
updated_at | The last time the board was updated. | |
updates | The board's updates. | |
url | The board's URL. | |
views | The board's views. | |
workspace | The workspace that contains the board. Returns | |
workspace_id | The unique identifier of the board's workspace. Returns |
Mutations
The API allows you to create, update, and delete boards using the following mutations. These operations let you programmatically control a board's full lifecycle.
Create board
Required scope:boards:write
The create_board mutation creates a new board via the API. You can specify which fields to return in the mutation response.
Keep in mind that the user who creates the board via the API will automatically be added as the board's owner when creating a private or shareable board, or if the board_owners_ids argument is missing.
This mutation has an additional rate limit of 40 mutations per minute.
mutation {
create_board(
board_name: "my board"
board_kind: public
item_nickname: { preset_type: "item" }
) {
id
}
}Arguments
You can use the following arguments to define the new board's characteristics.
Argument | Description | Enum Values | Supported Fields |
|---|---|---|---|
board_kind | The type of board to create. |
| |
board_name | The new board's name. | ||
board_owner_ids | A list of the IDs of the users who will be board owners. | ||
board_owner_team_ids | A list of the IDs of the teams that will be board owners. | ||
board_subscriber_ids | A list of the IDs of the users who will subscribe to the board. | ||
board_subscriber_teams_ids | A list of the IDs of the teams that will subscribe to the board. | ||
description | The new board's description. | ||
empty | Creates an empty board without any default items. | ||
folder_id | The board's folder ID. | ||
item_nickname | The nickname configuration for items on the board. When provided, the configuration is applied to the new board's items. | plural | |
template_id | The board's template ID.* | ||
workspace_id | The board's workspace ID. |
*You can see your personal template IDs in the template preview screen by activating Developer Mode in monday.labs. For built-in templates, the template ID will be the board ID of the board created from the template.
Set board permission
Required scope:boards:write
The set_board_permissionmutation sets or updates a board's default role/permissions via the API. It returns the SetBoardPermissionResponse type which allows you to specify which fields to return in the mutation response.
To use this mutation, you must:
- Be a board owner
- Be on an enterprise plan
mutation {
set_board_permission(
board_id: 1234567890
basic_role_name: viewer
) {
edit_permissions
failed_actions
}
}Arguments
You can use the following arguments to define the board's default permissions.
Argument | Description | Enum values |
|---|---|---|
basic_role_name | The role's name. |
|
board_id | The board's unique identifier. |
Duplicate board
Required scope:boards:write
The duplicate_board mutation duplicates a board with all of its items and groups to a specific workspace or folder of your choice via the API. You can specify which fields to return in the mutation response.
This action indicates whether the process is synchronous or asynchronous. Since an asynchronous duplication process may take some time to complete, the query may initially return partial data.
This mutation has an additional rate limit of 40 mutations per minute.
mutation {
duplicate_board(
board_id: 1234567890
duplicate_type: duplicate_board_with_structure
) {
board {
id
}
}
}import { ApiClient } from "@mondaydotcomorg/api";
const mondayApiClient = new ApiClient({ token: myToken });
const query = `mutation ($board: ID!) { duplicate_board(board_id: $board, duplicate_type: duplicate_board_with_structure) { board { id }}}`
const variables = {
board: 9571351437
}
const response = await mondayApiClient.request(query, variables);Arguments
You can use the following arguments to specify which board to duplicate and what properties to include.
Argument | Description | Enum Values |
|---|---|---|
board_id | The board's unique identifier. | |
board_name | The board's name. If omitted, it will be automatically generated. | |
duplicate_type | The duplication type. |
|
folder_id | The destination folder within the destination workspace. Required if you are duplicating to another workspace. If omitted, it will default to the original board's folder. | |
keep_subscribers | Whether to duplicate the subscribers to the new board. Defaults to false. | |
workspace_id | The destination workspace. If omitted, it will default to the original board's workspace. |
Update board
Required scope:boards:write
The update_board mutation updates a board via the API. The response is a JSON object that confirms whether the update was successful and returns the updated board metadata.
mutation {
update_board(
board_id: 1234567890
board_attribute: description
new_value: "This is my new description"
)
}import { ApiClient } from "@mondaydotcomorg/api";
const mondayApiClient = new ApiClient({ token: myToken });
const query = `mutation ($desc: String!) { update_board (board_id: 1234567890, board_attribute: description, new_value: $desc)}`
const variables = {
desc: "This is my new description"
}
const response = await mondayApiClient.request(query, variables);Arguments
You can use the following arguments to specify which board to update and its new value.
Argument | Description | Enum values |
|---|---|---|
board_attribute | The board's attribute to update. |
|
board_id | The board's unique identifier. | |
new_value | The new attribute value. |
Update board hierarchy
Required scope:boards:write
The update_board_hierarchymutation updates a board's position, workspace, or product via the API. It returns the UpdateBoardHierarchyResult type which allows you to specify which fields to return in the mutation response.
mutation {
update_board_hierarchy(
board_id: 1234567890,
attributes: {
account_product_id: 54321
workspace_id: 12345
folder_id: 9876543210
position: {
object_id: "15",
object_type: Overview,
is_after: true
}
}
) {
success
}
}Arguments
You can use the following arguments to specify which board and attributes to update.
Argument | Description | Supported fields |
|---|---|---|
attributes | The board's attributes to update. | account_product_id |
board_id | The board's unique identifier. |
Archive board
Required scope:boards:write
The archive_board mutation archives a board via the API. You can specify which fields to return in the mutation response.
mutation {
archive_board(
board_id: 1234567890
) {
id
}
}import { ApiClient } from "@mondaydotcomorg/api";
const mondayApiClient = new ApiClient({ token: myToken });
const query = `mutation ($board: ID!) { archive_board (board_id: $board) { id }}`
const variables = {
board: 1234567
}
const response = await mondayApiClient.request(query, variables);Arguments
You can use the following argument to specify which board to archive.
| Argument | Description |
|---|---|
board_id ID! | The board's unique identifier. |
Delete board
Required scope:boards:write
The delete_board mutation deletes a board via the API. You can specify which fields to return in the mutation response.
mutation {
delete_board(
board_id: 1234567890
) {
id
}
}import { ApiClient } from "@mondaydotcomorg/api";
const mondayApiClient = new ApiClient({ token: myToken });
const query = `mutation ($board: ID!) { delete_board (board_id: $board) { id }}`
const variables = {
board: 1234567
}
const response = await mondayApiClient.request(query, variables);Arguments
You can use the following argument to specify which board to delete.
| Argument | Description |
|---|---|
board_id ID! | The board's unique identifier. |
