Skip to content

Board

Access and manage boards via the client.board resource.

Methods

query

Retrieves boards from your account.

ruby
client.board.query(args: {}, select: DEFAULT_SELECT)

Parameters:

NameTypeDefaultDescription
argsHash{}Query arguments (see boards query)
selectArray["id", "name", "description"]Fields to retrieve

Returns: Monday::Response

Common args:

  • ids - Array of board IDs
  • limit - Number of results (default: 25)
  • page - Page number
  • state - :active, :archived, :deleted, or :all
  • board_kind - :public, :private, or :share
  • workspace_ids - Array of workspace IDs
  • order_by - :created_at or :used_at

Example:

ruby
response = client.board.query(
  args: { ids: [123, 456], state: :active },
  select: ["id", "name", "url"]
)

boards = response.body.dig("data", "boards")

GraphQL: query { boards { ... } }

See: monday.com boards query

create

Creates a new board.

ruby
client.board.create(args: {}, select: DEFAULT_SELECT)

Parameters:

NameTypeDefaultDescription
argsHash{}Creation arguments (required)
selectArray["id", "name", "description"]Fields to retrieve

Required args:

  • board_name - String
  • board_kind - Symbol (:public, :private, or :share)

Optional args:

  • description - String
  • workspace_id - Integer
  • folder_id - Integer
  • template_id - Integer

Returns: Monday::Response

Example:

ruby
response = client.board.create(
  args: {
    board_name: "New Board",
    board_kind: :public
  }
)

board = response.body.dig("data", "create_board")

GraphQL: mutation { create_board { ... } }

See: monday.com create_board

update

Updates a board's attributes.

ruby
client.board.update(args: {})

Parameters:

NameTypeDefaultDescription
argsHash{}Update arguments (required)

Required args:

  • board_id - Integer
  • board_attribute - Symbol (:name, :description, or :communication)
  • new_value - String

Returns: Monday::Response

The response body contains a JSON string at response.body["data"]["update_board"] that must be parsed:

ruby
result = JSON.parse(response.body["data"]["update_board"])
# => { "success" => true, "undo_data" => "..." }

Example:

ruby
response = client.board.update(
  args: {
    board_id: 123,
    board_attribute: :name,
    new_value: "Updated Name"
  }
)

result = JSON.parse(response.body["data"]["update_board"])

GraphQL: mutation { update_board { ... } }

See: monday.com update_board

duplicate

Duplicates an existing board.

ruby
client.board.duplicate(args: {}, select: DEFAULT_SELECT)

Parameters:

NameTypeDefaultDescription
argsHash{}Duplication arguments (required)
selectArray["id", "name", "description"]Fields to retrieve

Required args:

  • board_id - Integer
  • duplicate_type - Symbol

Duplicate types:

  • :duplicate_board_with_structure - Structure only
  • :duplicate_board_with_pulses - Structure + items
  • :duplicate_board_with_pulses_and_updates - Structure + items + updates

Optional args:

  • board_name - String
  • workspace_id - Integer
  • folder_id - Integer
  • keep_subscribers - Boolean

Returns: Monday::Response

The duplicated board is nested under board:

ruby
board = response.body.dig("data", "duplicate_board", "board")

Example:

ruby
response = client.board.duplicate(
  args: {
    board_id: 123,
    duplicate_type: :duplicate_board_with_structure
  }
)

board = response.body.dig("data", "duplicate_board", "board")

GraphQL: mutation { duplicate_board { board { ... } } }

See: monday.com duplicate_board

archive

Archives a board.

ruby
client.board.archive(board_id, select: ["id"])

Parameters:

NameTypeDefaultDescription
board_idInteger-Board ID to archive (required)
selectArray["id"]Fields to retrieve

Returns: Monday::Response

Example:

ruby
response = client.board.archive(123)

board = response.body.dig("data", "archive_board")

GraphQL: mutation { archive_board { ... } }

See: monday.com archive_board

delete

Permanently deletes a board.

ruby
client.board.delete(board_id, select: ["id"])

Parameters:

NameTypeDefaultDescription
board_idInteger-Board ID to delete (required)
selectArray["id"]Fields to retrieve

Returns: Monday::Response

Permanent Deletion

This operation cannot be undone. All board data will be permanently lost.

Example:

ruby
response = client.board.delete(123)

board = response.body.dig("data", "delete_board")

GraphQL: mutation { delete_board { ... } }

See: monday.com delete_board

items_page

Retrieves paginated items from a board using cursor-based pagination.

ruby
client.board.items_page(
  board_ids:,
  limit: 25,
  cursor: nil,
  query_params: nil,
  select: DEFAULT_PAGINATED_SELECT
)

Parameters:

NameTypeDefaultDescription
board_idsInteger or Array-Board ID(s) to query (required)
limitInteger25Items per page (max: 500)
cursorStringnilPagination cursor
query_paramsHashnilQuery filters with rules and operators
selectArray["id", "name"]Item fields to retrieve

Returns: Monday::Response

The response contains items and cursor:

ruby
items_page = response.body.dig("data", "boards", 0, "items_page")
items = items_page["items"]
cursor = items_page["cursor"]

Example:

ruby
# First page
response = client.board.items_page(
  board_ids: 123,
  limit: 50
)

items_page = response.body.dig("data", "boards", 0, "items_page")
cursor = items_page["cursor"]

# Next page
response = client.board.items_page(
  board_ids: 123,
  cursor: cursor
)

GraphQL: query { boards { items_page { ... } } }

See:

delete_subscribers

Deprecated

This method is deprecated and will be removed in v2.0.0. Use client.user.delete_from_board instead.

Deletes subscribers from a board.

ruby
client.board.delete_subscribers(board_id, user_ids, select: ["id"])

Parameters:

NameTypeDefaultDescription
board_idInteger-Board ID (required)
user_idsInteger[]-User IDs to remove (required)
selectArray["id"]Fields to retrieve

Returns: Monday::Response

GraphQL: mutation { delete_subscribers_from_board { ... } }

Response Structure

All methods return a Monday::Response object. Access data using:

ruby
response.success?  # => true/false
response.status    # => 200
response.body      # => Hash with GraphQL response

Typical Response Pattern

ruby
response = client.board.query(args: { ids: [123] })

if response.success?
  boards = response.body.dig("data", "boards")
  # Work with boards
else
  # Handle error
end

Constants

DEFAULT_SELECT

Default fields returned by query, create, and duplicate:

ruby
["id", "name", "description"]

DEFAULT_PAGINATED_SELECT

Default fields returned by items_page:

ruby
["id", "name"]

Error Handling

See the Error Handling guide for common errors and how to handle them.

External References