Pipory
Node reference

Monday.com

Monday.com node reference - all 71 operations, the credential it needs, and a worked example.

monday.com GraphQL API (Project management). 71 operations: items, subitems and column values; columns, boards and groups; updates and replies; workspaces and folders; users, teams and account; tags, notifications and docs; assets, board activity logs and webhooks.

Credential: monday.com API token - see Credentials.

Scopes

Each operation below lists the scope it needs. Scopes are carried automatically. Pipory's monday.com credential is a PERSONAL API TOKEN (Avatar -> Administration -> API in monday.com), and monday's own authentication reference says personal tokens have ALL permission scopes — so there is no consent screen, no checkbox, and no narrower token to mint. What a personal token actually carries is the full UI permissions of the USER who created it, which is why a refusal here is never a missing scope: UserUnauthorizedException means that user cannot do this in monday.com's own interface either, and the fix is their board, workspace or admin access rather than anything in Pipory. The scope named below is what an OAuth app would have to request, and it doubles as an honest statement of which plane each operation touches — useful because monday refuses without naming what was refused. Three things this catches people out on. First, folders live under workspaces:read / workspaces:write; there is no folders:* scope, and likewise no tags:write — creating a tag is a boards:write action. Second, monday answers application-level failures with HTTP 200 and an errors array, so a permission problem does not arrive as a 403 at all; the real status is in errors[].extensions.status_code. Third, no scope fixes a PLAN gate or an API-VERSION gate — this node pins API-Version: 2026-07, and monday retires a version roughly six months after it stops being Current, which surfaces as InvalidVersionException rather than as a permission error. If a run fails with a permission error, the node names the missing scope in the error - grant it and re-run; you do not need to rebuild the workflow.

Operations (71)

Items

OperationWhat it doesScope
createItemCreate itemboards:write
getItemsGet items by IDboards:read
queryItemsQuery items by column valueboards:read
queryItemsByColumnValuesFind items by column valuesboards:read
getNextItemsPageGet next page of itemsboards:read
duplicateItemDuplicate itemboards:write
moveItemToGroupMove item to groupboards:write
moveItemToBoardMove item to boardboards:write
changeItemPositionReposition itemboards:write
archiveItemArchive itemboards:write
deleteItemDelete itemboards:write
clearItemUpdatesClear all updates on an itemboards:write and updates:write

Subitems

OperationWhat it doesScope
createSubitemCreate subitemboards:write
getSubitemsGet an item's subitemsboards:read

Column values

OperationWhat it doesScope
updateColumnUpdate column (simple value)boards:write
updateColumnJsonUpdate column (JSON value)boards:write
updateMultipleColumnsUpdate multiple columnsboards:write

Columns

OperationWhat it doesScope
getColumnsGet board columnsboards:read
createColumnCreate columnboards:write
changeColumnTitleRename columnboards:write
changeColumnMetadataChange column title or descriptionboards:write
deleteColumnDelete columnboards:write

Boards

OperationWhat it doesScope
getBoardsGet boardsboards:read
createBoardCreate boardboards:write
duplicateBoardDuplicate boardboards:write
updateBoardUpdate board attributeboards:write
archiveBoardArchive boardboards:write
deleteBoardDelete boardboards:write

Groups

OperationWhat it doesScope
getGroupsGet board groupsboards:read
createGroupCreate groupboards:write
updateGroupUpdate group attributeboards:write
duplicateGroupDuplicate groupboards:write
archiveGroupArchive groupboards:write
deleteGroupDelete groupboards:write

Updates

OperationWhat it doesScope
getUpdatesGet updatesupdates:read
createUpdatePost update or replyupdates:write
editUpdateEdit updateupdates:write
deleteUpdateDelete updateupdates:write
likeUpdateLike updateupdates:write
unlikeUpdateUnlike updateupdates:write
pinUpdatePin update to topupdates:write
unpinUpdateUnpin update from topupdates:write

Workspaces & folders

OperationWhat it doesScope
getWorkspacesGet workspacesworkspaces:read
createWorkspaceCreate workspaceworkspaces:write
updateWorkspaceUpdate workspaceworkspaces:write
deleteWorkspaceDelete workspaceworkspaces:write
addUsersToWorkspaceAdd users to workspaceworkspaces:write
deleteUsersFromWorkspaceRemove users from workspaceworkspaces:write
getFoldersGet foldersworkspaces:read
createFolderCreate folderworkspaces:write
updateFolderUpdate folderworkspaces:write
deleteFolderDelete folderworkspaces:write

Users, teams & account

OperationWhat it doesScope
getMeGet the token's own userme:read
getUsersGet usersusers:read
getTeamsGet teamsteams:read
getAccountGet accountaccount:read

Tags & notifications

OperationWhat it doesScope
getTagsGet tagstags:read
createOrGetTagCreate or get tagboards:write
createNotificationSend notificationnotifications:write

Docs

OperationWhat it doesScope
getDocsGet docsdocs:read
createDocCreate docdocs:write
addContentToDocFromMarkdownAppend markdown to a docdocs:write
updateDocNameRename docdocs:write
duplicateDocDuplicate docdocs:write
deleteDocDelete docdocs:write

Assets, activity & webhooks

OperationWhat it doesScope
getAssetsGet assets by IDassets:read
getActivityLogsGet board activity logboards:read
getWebhooksList board webhookswebhooks:read
createWebhookCreate webhookwebhooks:write
deleteWebhookDelete webhookwebhooks:write
getComplexityCheck remaining complexity budget(no scope of its own — reports the calling token's budget)

Example

Set a status column, which the simple write path cannot do

This is the operation the 6-operation node could not reach, and it is what most monday automations are actually for. monday has two single-column write paths and they are not interchangeable: change_simple_column_value takes a plain scalar, so pointing it at a status column writes the literal text and the board still shows the old label. change_column_value takes JSON, and it is the only path that reaches status, dropdown, date, people, timeline and board-relation columns — and the only way to clear a files column, via {"clear_all": true}.

Set Operation to updateColumnJson, then fill in:

FieldValueNotes
boardId{{ vars.mondayBoardId }}The numeric ID from the board's URL
itemId{{ trigger.monday.itemId }}monday types this argument as nullable but treats it as required, so GraphQL will not catch a missing one — the node checks it instead
columnIdstatusThe column's ID, not its title. Read them with Get board columns
value{"label": "Done"}The shape follows the column type: {"label": ...} for status, {"date": "2026-07-28"} for date, {"personsAndTeams": [...]} for people
createLabelsIfMissingtrueCreates the label instead of refusing the write when the board has no Done yet. Needs board-owner permission

Sets {{updated.item}} plus {{updated.id}} and {{updated.name}}. monday answers application-level failures with HTTP 200 and an errors array rather than an error status, so a wrong column ID or a bad value shape surfaces as a failed run with monday's own ColumnValueException text — not as a silent success, which is what a status-code-only client would report.