Dropdown

Learn how to filter, read, create, update, and clear the dropdown column on monday boards using the platform API

The dropdown column lets a user select one or more options from a list. The API allows you to read, filter, create, update, and clear the dropdown column.

Read a dropdown column

You can query the dropdown column using the column_values object that enables you to return column-specific subfields by sending a fragment in your query. Values for the dropdown column are of the DropdownValue type.

query {
  items (ids:[1234567890, 9876543210]) {
    column_values {
      ... on DropdownValue {
        values { 
          label 
          id
				}
        column {
          id
        }
      }
    }
  }
}
const query = `query($itemIds: [ID!], $columnType:[ColumnType!]) { items (ids:$itemIds) { id column_values (types:$columnType) { column { title id } ... on DropdownValue { values { label id } } } } }`;
const variables = {
  itemIds: [9571351485, 9572374902],
  columnType: "dropdown"
};

const response = await mondayApiClient.request(query, variables);

Fields

FieldDescription
column Column!The column the value belongs to.
id ID!The column's unique identifier.
text StringThe column's value as text. This field will return null if the column has an empty value.
type ColumnType!The column's type.
value JSONThe column's JSON-formatted raw value.
values [DropdownValueOption!]!The selected dropdown values.

Filter a dropdown column

Using the items_page object, you can easily filter a board's items by specific columns or column values. The table below contains the dropdown column's supported operators and compare values.

Operators

Compare values

any_of

  • "" (blank values)
  • The label IDs to filter by

not_any_of

  • "" (blank values)
  • The label IDs to filter by

is_empty

null

is_not_empty

null

contains_text

The partial or whole label text value to filter by

not_contains_text

The partial or whole label text value to filter by

Examples

The following example returns all items on the specified board with the label "Marketing" or a label that contains "Marketing."

query {
  boards(ids: 1234567890) {
    items_page(
      query_params: {
        rules: [
          {
            column_id: "dropdown"
            compare_value: ["Marketing"]
            operator: contains_text
          }
        ]
      }
    ) {
      items {
        id
        name
      }
    }
  }
}
import { ApiClient } from "@mondaydotcomorg/api";
const mondayApiClient = new ApiClient({ token: myToken });

const query = `query ($board_id: [ID!], $column_id: ID!, $operator: ItemsQueryRuleOperator!, $compare_value:CompareValue!) { boards (ids: $board_id) { items_page (query_params: {rules: [{column_id: $column_id, compare_value: $compare_value,  operator:$operator}]}) { items { id name } } } }`;
const variables = {
  board_id: 9571351437,
  column_id: "dropdown_mksrbr89",
  compare_value: ["Marketing"], 
  operator: "contains_text",
};

const response = await mondayApiClient.request(query, variables);

Create dropdown column

Required scope:boards:write

The create_dropdown_column mutation creates a new dropdown column with strongly typed settings via the API. You can specify which fields to return from the new dropdown column in the mutation response.

mutation {
  create_dropdown_column(
    board_id: 1234567890
    id: "project_category"
    title: "Project Category"
    defaults: {
      label_limit_count: 1 
      limit_select: true
      labels: [
        {label: "HR"}
        {label: "R&D"}
        {label: "IT"}
      ]
    }
    description: "The project's category."
  ) {
    description
    id
    title
  }
}

Arguments

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

Argument

Description

Supported Fields

after_column_id ID

The unique identifier of the column after which the new dropdown column will be created.

board_id ID!

The unique identifier of the board where the new dropdown column should be created.

defaults CreateDropdownColumnSettingsInput

The new dropdown column's settings.

labels [CreateStatusLabelInput!]!

description String

The new dropdown column's description.

id String

The dropdown column's user-specified unique identifier. If not provided, a new ID will be auto-generated. If provided, it must meet the following requirements:

  • e API characters in length (inclusive)
  • Only lowercase letters (a-z) and underscores (_)
  • Must be unique (no other column on the board can have the same ID)
  • Can't reuse column IDs, even if the column has been deleted from the board
  • Can't be null, blank, or an empty string

title String!

The new dropdown column's title.

The following example returns all items on the specified board with the label "Marketing" or a label that contains "Marketing."

query {
  boards(ids: 1234567890) {
    items_page(
      query_params: {
        rules: [
          {
            column_id: "dropdown"
            compare_value: ["Marketing"]
            operator: contains_text
          }
        ]
      }
    ) {
      items {
        id
        name
      }
    }
  }
}
import { ApiClient } from "@mondaydotcomorg/api";
const mondayApiClient = new ApiClient({ token: myToken });

const query = `query ($board_id: [ID!], $column_id: ID!, $operator: ItemsQueryRuleOperator!, $compare_value:CompareValue!) { boards (ids: $board_id) { items_page (query_params: {rules: [{column_id: $column_id, compare_value: $compare_value,  operator:$operator}]}) { items { id name } } } }`;
const variables = {
  board_id: 9571351437,
  column_id: "dropdown_mksrbr89",
  compare_value: ["Marketing"], 
  operator: "contains_text",
};

const response = await mondayApiClient.request(query, variables);

Update a dropdown column

You can update a dropdown column with a simple string value or a JSON string value.

❗️

NOTE

It is not possible to mix dropdown labels (the text values) with dropdown IDs in the string values.

Simple strings

Send the IDs of the labels you want to set to update a dropdown column with strings. If you don’t know the IDs of the labels you’re trying to set, you can send the label's text value instead. If you need to update more than one value, you can also send a list of IDs or labels separated by commas.

If you make an API call to update the dropdown column value, but the label doesn't exist, the expected behavior will be an error message. In the output of that error, you will also receive the existing labels for that specific column. However, you can use create_labels_if_missing: true in your query to create labels that didn't previously exist.

Here is a sample query to update the dropdown column using simple string values via dropdown IDs.

mutation {
  change_simple_column_value(
    item_id: 9876543210
    board_id: 1234567890
    column_id: "dropdown"
    value: "1,2"
  ) {
    id
  }
}
const query = `mutation ($myBoardId:ID!, $myItemId:ID!, $myColumnValue: String!, $myColumnId: String!) { change_simple_column_value (item_id:$myItemId, board_id:$myBoardId, column_id: $myColumnId, value: $myColumnValue) { id } }`;
const variables = {
  myBoardId: 9571351437,
  myItemId: 9571351485,
  myColumnId: "dropdown_mksrbr89",
  myColumnValue: "1,2",
};

const response = await mondayApiClient.request(query, variables); 

Here is a sample query to update the dropdown column using simple string values with dropdown labels.

mutation {
  change_simple_column_value(
    item_id: 9876543210
    board_id: 1234567890
    column_id: "dropdown"
    value: "Cookie, Cupcake"
  ) {
    id
  }
}
const query = `mutation ($myBoardId:ID!, $myItemId:ID!, $myColumnValue: String!, $myColumnId: String!) { change_simple_column_value (item_id:$myItemId, board_id:$myBoardId, column_id: $myColumnId, value: $myColumnValue) { id } }`;
const variables = {
  myBoardId: 9571351437,
  myItemId: 9571351485,
  myColumnId: "dropdown_mksrbr89",
  myColumnValue: "Sunnyside,Midwood",
};

const response = await mondayApiClient.request(query, variables); 

JSON

You can also update the dropdown column using JSON values with either the ID value or the text label.

👍

Pro tip

You can use both String and JSON values when updating column values for change_multiple_column_values mutation, or when using the create_item mutation.

Here is a sample query to update the dropdown column using JSON values with dropdown IDs.

mutation {
  change_multiple_column_values(
    item_id: 9876543210
    board_id: 1234567890
    column_values: "{\"dropdown\":{\"ids\":[\"1\"]}}"
  ) {
    id
  }
}
import { ApiClient } from "@mondaydotcomorg/api";
const mondayApiClient = new ApiClient({ token: myToken });

const query = `mutation ($myBoardId:ID!, $myItemId:ID!, $myColumnValues:JSON!) { change_multiple_column_values(item_id:$myItemId, board_id:$myBoardId, column_values: $myColumnValues) { id } }`;
const variables = {
  myBoardId: 9571351437,
  myItemId: 9571351485,
  myColumnValues: JSON.stringify({
    dropdown_mksrbr89: { // dropdown_mksrbr89 is the column ID
      ids: ["3"]
    } 
  }),
};

const response = await mondayApiClient.request(query, variables);

Here is a sample query to update the dropdown column using JSON values with dropdown labels.

mutation {
  change_multiple_column_values(
    item_id: 9876543210
    board_id: 1234567890
    column_values: "{\"dropdown\":{\"labels\":[\"My label\"]}}"
  ) {
    id
  }
}
import { ApiClient } from "@mondaydotcomorg/api";
const mondayApiClient = new ApiClient({ token: myToken });

const query = `mutation ($myBoardId:ID!, $myItemId:ID!, $myColumnValues:JSON!) { change_multiple_column_values(item_id:$myItemId, board_id:$myBoardId, column_values: $myColumnValues) { id } }`;
const variables = {
  myBoardId: 9571351437,
  myItemId: 9571351485,
  myColumnValues: JSON.stringify({
    dropdown_mksrbr89: { // dropdown_mksrbr89 is the column ID
      labels: ["Sunnyside", "Midwood"]
    } 
  }),
};

Add a dropdown value

You can add a new dropdown value to a column using the following mutation:

mutation {
  change_simple_column_value(
    item_id: 1234567890
    board_id: 9876543210
    column_id: "dropdown"
    value: "New dropdown value"
    create_labels_if_missing: true
  ) {
    id
  }
}

Arguments for adding a dropdown value

ArgumentDescription
item_id Int!The item's unique identifier.
board_id Int!The board's unique identifier.
column_id Int!The column's unique identifier.
value String!The new value of the column.
create_labels_if_missing BooleanCreate status/dropdown labels if they're missing. (Requires permission to change board structure)

Clear a dropdown column

You can clear a dropdown column using the following mutations:

mutation {
  change_multiple_column_values(
    item_id: 123456789
    board_id: 987654321
    column_values: "{\"dropdown\": null}"
  ) {
    id
  }
}
mutation {
  change_multiple_column_values(
    item_id: 123456789
    board_id: 987654321
    column_values: "{\"dropdown\":{\"labels\":[]}}"
  ) {
    id
  }
}