Items

Learn how to read, create, update, and delete items from monday boards using the platform API

Items are core objects in the monday.com platform that hold the actual data within the board. To better illustrate the platform, imagine that each board is a table and an item is a single row in that table. Take one row, fill it with whatever information you'd like, and you now have an item!

🚧

Want to read all items on a board?

The items object allows you to query specific items by their IDs. If you want to read all items on a board, use the items_page object instead!

Queries

You can use the items query to retrieve item data via the API.

  • Required scope:boards:read
  • Returns an array containing metadata about one or a collection of specific items
  • Can only be queried directly at the root; can't be nested within another query
query {
  items(ids: [1234567890, 9876543210, 2345678901]) {
    name
  }
}

Arguments

You can use the following arguments to reduce the number of results returned in your items query.

ArgumentDescription
exclude_nonactive BooleanExcludes items that are inactive, deleted, or belong to deleted items. Only works when used with the ids argument.
ids [ID!]The IDs of the specific items, subitems, or parent items to return. Maximum of 100 IDs at one time using the limit argument.
limit IntThe number of items returned. The default is 25, and the maximum is 100.
newest_first BooleanLists the most recently created items at the top.
page IntThe page number to return. Starts at 1.

Fields

You can use the following fields to specify what information your items query will return.

Field

Description

Enum Values

assets [Asset]

The item's assets/files.

board Board

The board that contains the item.

column_values [ColumnValue]

The item's column values.

created_at Date

The item's creation date.

creator User

The item's creator.

creator_id String!

The unique identifier of the item's creator. Returns null if the item was created by default on the board.

description ItemDescription

The item's description.

email String!

The item's email.

group Group

The item's group.

id ID!

The item's unique identifier.

linked_items [Item!]!

The item's linked items.

name String!

The item's name.

parent_item Item

A subitem's parent item. Returns null if querying a parent item.

relative_link String

The item's relative path.

state State

The item's state.

active
all
archived
deleted

subitems [Item]

The item's subitems.

subscribers [User]!

The item's subscribers.

updated_at Date

The date the item was last updated.

updates [Update!]

The item's updates.

url String!

The item's URL.

Mutations

The API allows you to create, update, and delete items using the following mutations. These operations let you programmatically control an item's full lifecycle.

Create item

Required scope:boards:write

The create_item mutation creates a new item via the API. You can specify which fields to return in the mutation response.

Item data is stored in columns that hold particular information based on the column type. Each type expects a different set of parameters to update its values. When sending data to a particular column, use a JSON-formatted string. If you're using JavaScript, you can use JSON.stringify() to convert a JSON object into a string.

You can also use simple values in this mutation or combine them with regular values. Read more about sending data for each column in our column types reference.

mutation {
  create_item(
    board_id: 1234567890
    group_id: "group_one" 
    item_name: "new item" 
    column_values: "{\"date\":\"2023-05-25\"}"
	) {
    id
  }
}

Arguments

You can use the following arguments to define the new item's characteristics.

Argument

Description

Accepted Values

board_id ID!

The board's unique identifier.

column_values JSON

The column values of the new item.

create_labels_if_missing Boolean

Creates status/dropdown labels if they are missing (requires permission to change the board structure).

group_id String

The group's unique identifier.

item_name String!

The new item's name.

position_relative_method PositionRelative

Specifies where to place the item in relation to another item. Must be used with relative_to.

You can use this argument in conjunction with relative_to to specify which item you want to create the new item above or below.

  • before_at: This enum value creates the new item above the relative_to value. If you don't use the relative_to argument, the new item will be created at the bottom of the first active group (unless you specify a group using group_id).

  • after_at: This enum value creates the new item below the relative_to value. If you don't use the relative_to argument, the new item will be created at the top of the first active group (unless you specify a group using group_id).

relative_to ID

The unique identifier of an item on the same board to set the position relative to. Must be used with position_relative_method.

🚧

Changing an item's name

If you'd like to change an existing item's name, you need to use the change_column_value mutation with a JSON string value. Check out this doc for more info!

Duplicate item

Required scope:boards:write

The duplicate_item mutation duplicates an item (or subitem) and its nested subitems via the API. You can specify which fields to return in the mutation response.

mutation {
  duplicate_item(
    board_id: 1234567890
    item_id: 9876543210 
    with_updates: true
	) {
    id
  }
}

Arguments

You can use the following arguments to specify which item to duplicate.

ArgumentDescription
board_id ID!The board's unique identifier.
item_id IDThe item's unique identifier. Required.
with_updates BooleanDuplicates the item with existing updates.

Change an item's position

Required scope:boards:write

The change_item_position mutation changes an item's position on the same board via the API. You can specify which fields to return in the mutation response.

mutation { 
 change_item_position(
  item_id: 1234567890
  relative_to: 9876543210
  position_relative_method: after_at
 ) {
  id
  group {
   id
  }
 }
}

Arguments

You can use the following arguments to define the item's new location.

Argument

Description

Enum Values

group_id ID

The unique identifier of an existing group. Must be used with group_top.

group_top Boolean

Specifies if the item will be placed at the top or bottom of the group. Must be used with group_id.

item_id ID!

The item's unique identifier. Moving subitems or converting an item to a subitem is not currently supported.

position_relative_method PositionRelative

Specifies where to place the item in relation to another item. Must be used with relative_to.

after_at (moves the item below the relative_to value)
before_at (moves the item above the relative_to value)

relative_to ID

The unique identifier of an item on the same board to set the position relative to. Must be used with position_relative_method.

Update assets on item

Required scope:boards:write

The update_assets_on_item mutation updates a file column's existing files via the API. You can specify which fields to return in the mutation response.

mutation {
  update_assets_on_item(
    board_id: 1234567890
    item_id: 9876543210
    column_id: "YOUR_COLUMN_ID"
    files: {
      fileType: asset
      name: "New asset"
      assetId: 12345
      linkToFile: "https://yourlink.com"
    }
  ) {
    assets {
      id
      name
      url
    }
  }
}

Arguments

You can use the following arguments to specify which item's file to update.

Argument

Description

Supported Fields

board_id ID!

The board's unique identifier.

column_id String!

The column's unique identifier.

files [FileInput!]!

An object containing the file's input values.

assetId ID
fileType FileColumnValue!
linkToFile String
name String!
objectId ID

item_id ID!

The item's unique identifier.

Move item to group

Required scope:boards:write

The move_item_to_group mutation moves an item (or subitem) and its nested subitems between groups on the same board via the API. You can specify which fields to return in the mutation response.

🚧

Multi-level board validations

The operation will be blocked if it would create a parent–child cycle (e.g., an item becoming an ancestor or descendant of itself) or if the resulting depth on the target board would exceed 5.

mutation {
  move_item_to_group(
    item_id: 1234567890, 
    group_id: "group_one"
	) {
    id
  }
}

Arguments

You can use the following arguments to specify which item to move and where.

ArgumentDescription
group_id String!The group's unique identifier.
item_id IDThe item's unique identifier.

Move item to board

Required scope:boards:write

The move_item_to_board mutation moves an item (or subitem) and its nested subitems to a different board via the API. You can specify which fields to return in the mutation response.

🚧

Multi-level board validations

The operation will be blocked if it would create a parent–child cycle (e.g., an item becoming an ancestor or descendant of itself) or if the resulting depth on the target board would exceed 5.

mutation {
  move_item_to_board(
    board_id: 1234567890
    group_id: "new_group"
    item_id: 9876543210
    columns_mapping: [
      { source: "status", target: "status2" }
      { source: "person", target: "person" }
      { source: "date", target: "date4" }
    ]
  ) {
    id
  }
}

Arguments

You can use the following arguments to specify which item to move and where.

Argument

Description

Supported Fields

board_id ID!

The unique identifier of the board to move the item to (target board)

group_id ID!

The unique identifier of the group to move the item to (target group).

item_id ID!

The unique identifier of the item to move.

columns_mapping [ColumnMappingInput!]

The object that defines the column mapping between the original and target board. Every column type can be mapped except for formula columns.

When using this argument, you must specify the mapping for all columns. You can select the target as null for any columns you don't want to map, but doing so will lose the column's data.

If you omit this argument, the columns will be mapped based on the best match.

source ID!
target ID

subitems_columns_mapping [ColumnMappingInput!]

The object that defines the subitems' column mapping between the original and target board. Every column type can be mapped except for formula columns.

When using this argument, you must specify the mapping for all columns. You can select the target as null for any columns you don't want to map, but doing so will lose the column's data.

If you omit this argument, the columns will be mapped based on the best match.

source ID!
target ID

Archive item

Required scope:boards:write

The archive_item mutation archives an item (or subitem) and its nested subitems via the API. You can specify which fields to return in the mutation response.

mutation {
  archive_item(
    item_id: 1234567890
	) {
    id
  }
}

Arguments

You can use the following argument to specify which item to archive.

ArgumentDescription
item_id ID!The item's unique identifier.

Clear item updates

Required scope:boards:write

The clear_item_updates mutation clears all updates on a specific item, including replies and likes, via the API. You can specify which fields to return in the mutation response.

mutation {
  clear_item_updates(
    item_id: 1234567890
	) {
    id
  }
}

Arguments

You can use the following argument to specify which item to clear updates from.

ArgumentsDescription
item_id ID!The item's unique identifier.

Delete item

Required scope:boards:write

The delete_item mutation deletes an item (or subitem) and its nested subitems via the API. You can specify which fields to return in the mutation response.

mutation {
  delete_item(
    item_id: 1234567890
	) {
    id
  }
}

Arguments

You can use the following argument to specify which item to delete.

ArgumentDescription
item_id IDThe item's unique identifier.