ClickUp node reference - all 161 operations, the credential it needs, and a worked example.
ClickUp API (Project management). 161 operations: tasks, subtasks, task search, merge, move and templates; task tags, dependencies and links; comments and threads; checklists; custom fields; Lists, Folders and Spaces; Space tags; time tracking and timers; Goals and Targets; views; webhooks; Workspace and directory reads; members, guests and user groups; and the v3 Docs, Chat, attachment, sharing and audit-log surfaces.
Credential: ClickUp personal API token - see Credentials.
Each operation below lists the requirement it needs. Requirements are not granted on the token at all — ClickUp has NO scopes. A personal API token (pk_…, from Settings → Apps) carries no scopes and simply IS its user: everything that person can see and do, in every Workspace they belong to. OAuth is barely narrower — authorizing an app grants whichever Workspaces the user ticks on the consent screen, with no per-resource or per-verb scope to request and no read-only option. So a refusal is never a missing checkbox, and the column below states what it actually is. Three things gate an operation. Plan: the Users, Guests, Custom Roles and audit-log families are Enterprise-only, and per-assignee time estimates are Business or above. ClickApp: ClickUp ships most features OFF and they are enabled per Space — Time Tracking, Tags, Custom Fields, Dependencies, Checklists, Multiple Assignees, Sprint Points, Total time in Status, and Tasks in Multiple Lists. This is the confusing one, because the endpoint exists, the IDs are right, and the call still fails; switch the ClickApp on with Update Space, or in the ClickUp UI. Membership: the token's user must be able to see the object, and ClickUp answers 404 rather than 403 for something outside their access, so "not found" and "not yours" are indistinguishable. Two more failures are not permissions at all: a 401 is very often the token FORMAT (a personal token is sent raw, and pasting Bearer pk_… is the usual first mistake), and a 429 is the per-token, per-minute rate limit — 100/min on Free, Unlimited and Business, 1,000/min on Business Plus, 10,000/min on Enterprise. If a run fails with a permission error, the node names the missing requirement in the error - grant it and re-run; you do not need to rebuild the workflow.
| Operation | What it does | Requirement |
|---|
createTask | Create task | (a token whose user can create tasks in the target List) |
getTask | Get task | (a token whose user can see the task) |
updateTask | Update task | (a token whose user can edit the task) |
deleteTask | Delete task | (a token whose user can delete the task — this is permanent) |
getTasks | List tasks in a List | (a token whose user can see the List) |
getFilteredTeamTasks | Search tasks across the Workspace | (a token whose user can see the Workspace — results are silently limited to the tasks that user can already read, so a missing grant looks like an empty result set) |
createSubtask | Create subtask | (a token whose user can create tasks in the target List) |
updateAssignees | Update assignees | (the Multiple Assignees ClickApp enabled on the Space to assign more than one person, and a token whose user can edit the task) |
mergeTasks | Merge tasks | (a token whose user can edit both tasks — custom task ids are NOT accepted here, only real ids) |
moveTask | Move task to another List | (a token whose user can edit the task and create tasks in the destination List) |
createTaskFromTemplate | Create task from template | (the template already added to your Workspace — a publicly shared template must be imported into your library before the API can use it) |
getTaskTimeInStatus | Get a task's time in status | (the Total time in Status ClickApp enabled by a Workspace owner or admin) |
getBulkTimeInStatus | Get several tasks' time in status | (the Total time in Status ClickApp enabled by a Workspace owner or admin) |
updateTimeEstimatesByUser | Update time estimates by user | (the Business plan or above, plus the Time Estimates ClickApp — and every assignee named must already be on the task) |
replaceTimeEstimatesByUser | Replace all time estimates | (the Business plan or above, plus the Time Estimates ClickApp — and every assignee named must already be on the task) |
| Operation | What it does | Requirement |
|---|
addTagToTask | Add tag to task | (the Tags ClickApp enabled on the Space, and a tag that already exists there — this attaches an existing Space tag, it does not create one) |
removeTagFromTask | Remove tag from task | (the Tags ClickApp enabled on the Space) |
addDependency | Add dependency | (the Dependencies ClickApp enabled on the Space) |
deleteDependency | Remove dependency | (the Dependencies ClickApp enabled on the Space) |
addTaskLink | Link two tasks | (a token whose user can edit both tasks) |
deleteTaskLink | Unlink two tasks | (a token whose user can edit both tasks) |
| Operation | What it does | Requirement |
|---|
addComment | Comment on a task | (a token whose user can comment on the task) |
getTaskComments | List a task's comments | (a token whose user can see the task) |
createListComment | Comment on a List | (a token whose user can comment on the List) |
getListComments | List a List's comments | (a token whose user can see the List) |
createChatViewComment | Post to a Chat view | (a token whose user can post in the Chat view) |
getChatViewComments | List a Chat view's comments | (a token whose user can see the Chat view) |
updateComment | Update / resolve a comment | (a token whose user owns the comment or can moderate it — ClickUp REPLACES the comment text, so send the full new body) |
deleteComment | Delete comment | (a token whose user owns the comment or can moderate it) |
createThreadedComment | Reply to a comment | (a token whose user can comment on the parent object) |
getThreadedComments | List replies to a comment | (a token whose user can see the parent comment) |
| Operation | What it does | Requirement |
|---|
createChecklist | Create checklist | (the Checklists ClickApp enabled on the Space) |
editChecklist | Rename / reorder checklist | (the Checklists ClickApp enabled on the Space) |
deleteChecklist | Delete checklist | (the Checklists ClickApp enabled on the Space) |
addChecklistItem | Add checklist item | (the Checklists ClickApp enabled on the Space) |
editChecklistItem | Edit / resolve checklist item | (the Checklists ClickApp enabled on the Space) |
deleteChecklistItem | Delete checklist item | (the Checklists ClickApp enabled on the Space) |
| Operation | What it does | Requirement |
|---|
setCustomFieldValue | Set a custom field value | (the Custom Fields ClickApp enabled, and a field that applies to this task's task TYPE — ClickUp answers 400 when the field is not enabled for the task's custom_item_id) |
removeCustomFieldValue | Clear a custom field value | (the Custom Fields ClickApp enabled on the Space) |
getListCustomFields | List custom fields on a List | (the Custom Fields ClickApp enabled — this returns List-level fields plus Workspace-level ones, not those defined on the parent Folder or Space) |
getFolderCustomFields | List custom fields on a Folder | (the Custom Fields ClickApp enabled — this returns ONLY fields created at the Folder level, plus Workspace-level ones) |
getSpaceCustomFields | List custom fields on a Space | (the Custom Fields ClickApp enabled — this returns ONLY fields created at the Space level, plus Workspace-level ones) |
getWorkspaceCustomFields | List custom fields on the Workspace | (the Custom Fields ClickApp enabled — this returns ONLY fields created at the Workspace level) |
| Operation | What it does | Requirement |
|---|
getLists | List the Lists in a Folder | (a token whose user can see the Folder) |
createList | Create List in a Folder | (a token whose user can create Lists in the Folder) |
getFolderlessLists | List the folderless Lists in a Space | (a token whose user can see the Space) |
createFolderlessList | Create folderless List in a Space | (a token whose user can create Lists in the Space) |
getList | Get List | (a token whose user can see the List) |
updateList | Update List | (a token whose user can edit the List) |
deleteList | Delete List | (a token whose user can delete the List — this is permanent) |
addTaskToList | Add task to an additional List | (the Tasks in Multiple Lists ClickApp enabled — without it this endpoint refuses even with correct ids) |
removeTaskFromList | Remove task from an additional List | (the Tasks in Multiple Lists ClickApp enabled — and note a task cannot be removed from its HOME List) |
createListFromTemplateInFolder | Create List from template (Folder) | (the template already added to your Workspace, and rights to create Lists in the Folder) |
createListFromTemplateInSpace | Create List from template (Space) | (the template already added to your Workspace, and rights to create Lists in the Space) |
getListMembers | List members with access to a List | (a token whose user can see the List — this returns only EXPLICIT members, not people who inherit access from the Folder or Space) |
| Operation | What it does | Requirement |
|---|
getFolders | List the Folders in a Space | (a token whose user can see the Space) |
createFolder | Create Folder | (a token whose user can create Folders in the Space) |
getFolder | Get Folder | (a token whose user can see the Folder) |
updateFolder | Rename Folder | (a token whose user can edit the Folder) |
deleteFolder | Delete Folder | (a token whose user can delete the Folder — this removes every List and task inside it) |
createFolderFromTemplate | Create Folder from template | (the template already added to your Workspace, and rights to create Folders in the Space) |
| Operation | What it does | Requirement |
|---|
getSpaces | List the Spaces in a Workspace | (a token whose user can see the Workspace — member details are returned only for private Spaces the user belongs to) |
createSpace | Create Space | (Workspace owner or admin) |
getSpace | Get Space | (a token whose user can see the Space) |
updateSpace | Update Space | (Workspace owner or admin — this is where ClickApps are switched on and off per Space) |
deleteSpace | Delete Space | (Workspace owner or admin — this removes every Folder, List and task inside the Space) |
| Operation | What it does | Requirement |
|---|
getSpaceTags | List a Space's tags | (the Tags ClickApp enabled on the Space) |
createSpaceTag | Create Space tag | (the Tags ClickApp enabled on the Space) |
editSpaceTag | Edit Space tag | (the Tags ClickApp enabled on the Space) |
deleteSpaceTag | Delete Space tag | (the Tags ClickApp enabled — this deletes the tag from the Space, not just from one task) |
| Operation | What it does | Requirement |
|---|
logTime | Log time | (the Time Tracking ClickApp enabled on the Space) |
getTimeEntries | List time entries in a date range | (the Time Tracking ClickApp enabled — and note this returns only the AUTHENTICATED user's last 30 days unless you set Assignee and a date range) |
getTimeEntry | Get time entry | (the Time Tracking ClickApp enabled on the Space) |
updateTimeEntry | Update time entry | (the Time Tracking ClickApp enabled on the Space) |
deleteTimeEntry | Delete time entry | (the Time Tracking ClickApp enabled on the Space) |
getTimeEntryHistory | Get a time entry's change history | (the Time Tracking ClickApp enabled on the Space) |
getRunningTimeEntry | Get the running timer | (the Time Tracking ClickApp enabled — this reads the timer of the token's OWN user and nobody else's) |
startTimer | Start timer | (the Time Tracking ClickApp enabled — this starts a timer for the token's own user) |
stopTimer | Stop timer | (the Time Tracking ClickApp enabled — this stops the token user's own running timer) |
getTimeEntryTags | List time-entry labels | (the Time Tracking ClickApp enabled on the Space) |
addTimeEntryTags | Add labels to time entries | (the Time Tracking ClickApp enabled on the Space) |
renameTimeEntryTag | Rename a time-entry label | (the Time Tracking ClickApp enabled on the Space) |
removeTimeEntryTags | Remove labels from time entries | (the Time Tracking ClickApp enabled — this unlabels the entries, it does not delete the label from the Workspace) |
| Operation | What it does | Requirement |
|---|
getGoals | List Goals | (the Goals ClickApp enabled on the Workspace) |
createGoal | Create Goal | (the Goals ClickApp enabled on the Workspace) |
getGoal | Get Goal | (the Goals ClickApp enabled on the Workspace) |
updateGoal | Update Goal | (the Goals ClickApp enabled on the Workspace) |
deleteGoal | Delete Goal | (the Goals ClickApp enabled, and rights to delete the Goal) |
createKeyResult | Create Target | (the Goals ClickApp enabled on the Workspace) |
editKeyResult | Update Target progress | (the Goals ClickApp enabled on the Workspace) |
deleteKeyResult | Delete Target | (the Goals ClickApp enabled on the Workspace) |
| Operation | What it does | Requirement |
|---|
getView | Get view | (a token whose user can see the view) |
getViewTasks | List the tasks visible in a view | (a token whose user can see the view — results respect the view's own filters, so this can legitimately return nothing) |
getListViews | List a List's views | (a token whose user can see the List) |
getFolderViews | List a Folder's views | (a token whose user can see the Folder) |
getSpaceViews | List a Space's views | (a token whose user can see the Space) |
getWorkspaceViews | List the Workspace (Everything) views | (a token whose user can see the Workspace) |
| Operation | What it does | Requirement |
|---|
getWebhooks | List webhooks | (a token whose user created the webhooks — ClickUp returns only the webhooks belonging to the authenticated user) |
createWebhook | Create webhook | (a token whose user can see the location being watched — the webhook is bound to that user and STOPS firing if they are deactivated) |
updateWebhook | Update webhook | (a token whose user owns the webhook — this is also how a webhook whose health has degraded is reset) |
deleteWebhook | Delete webhook | (a token whose user owns the webhook) |
| Operation | What it does | Requirement |
|---|
getAuthorizedWorkspaces | List the Workspaces this token can see | (nothing beyond a working token — start here to find the Workspace ID the rest of this node asks for) |
getAuthorizedUser | Get the authenticated user | (nothing beyond a working token) |
getWorkspaceSeats | Get Workspace seat usage | (a token whose user can see Workspace billing settings) |
getWorkspacePlan | Get Workspace plan | (a token whose user can see Workspace billing settings) |
getCustomTaskTypes | List custom task types | (a token whose user can see the Workspace) |
getCustomRoles | List custom roles | (the Enterprise plan — custom roles do not exist below it) |
getSharedHierarchy | List items shared with me | (nothing beyond a working token) |
getTaskMembers | List members with access to a task | (a token whose user can see the task — this returns only EXPLICIT members, not people who inherit access from the List, Folder or Space) |
getTaskTemplates | List task templates | (a token whose user can see the Workspace) |
getListTemplates | List List templates | (a token whose user can see the Workspace — template ids come back with a t- prefix and must be passed WITH it) |
getFolderTemplates | List Folder templates | (a token whose user can see the Workspace — template ids come back with a t- prefix and must be passed WITH it) |
getGroups | List user groups (Teams) | (a token whose user can see the Workspace) |
| Operation | What it does | Requirement |
|---|
inviteUserToWorkspace | Invite a member | (the Enterprise plan, and Workspace owner or admin) |
getUser | Get a member | (the Enterprise plan, and Workspace owner or admin) |
editUser | Edit a member | (the Enterprise plan, and Workspace owner or admin) |
removeUser | Deactivate a member | (the Enterprise plan, and Workspace owner or admin) |
inviteGuestToWorkspace | Invite a guest | (the Enterprise plan — and inviting a guest only creates them: share a task, List or Folder with them separately to give them anything to see) |
getGuest | Get a guest | (the Enterprise plan, and Workspace owner or admin) |
editGuest | Edit a guest | (the Enterprise plan, and Workspace owner or admin) |
removeGuest | Remove a guest | (the Enterprise plan, and Workspace owner or admin) |
addGuestToTask | Share a task with a guest | (the Enterprise plan, and rights to share the task) |
removeGuestFromTask | Unshare a task from a guest | (the Enterprise plan, and rights to share the task) |
addGuestToList | Share a List with a guest | (the Enterprise plan, and rights to share the List) |
removeGuestFromList | Unshare a List from a guest | (the Enterprise plan, and rights to share the List) |
addGuestToFolder | Share a Folder with a guest | (the Enterprise plan, and rights to share the Folder) |
removeGuestFromFolder | Unshare a Folder from a guest | (the Enterprise plan, and rights to share the Folder) |
createGroup | Create user group | (Workspace owner or admin — and note adding a view-only guest to a group converts them to a PAID guest, which can add a billable seat) |
updateGroup | Update user group | (Workspace owner or admin — and note adding a view-only guest to a group converts them to a PAID guest, which can add a billable seat) |
deleteGroup | Delete user group | (Workspace owner or admin) |
| Operation | What it does | Requirement |
|---|
searchDocs | Search Docs | (a token whose user can see the Docs — v3, so a Workspace ID) |
createDoc | Create Doc | (rights to create a Doc in the chosen parent — v3) |
getDoc | Get Doc | (a token whose user can see the Doc — v3) |
getDocPageListing | Get a Doc's page listing | (a token whose user can see the Doc — v3; this is the cheap outline, without page content) |
getDocPages | Get a Doc's pages with content | (a token whose user can see the Doc — v3; content is converted to markdown, so some ClickUp-only blocks will not round-trip) |
createDocPage | Create page in a Doc | (rights to edit the Doc — v3) |
getDocPage | Get page | (a token whose user can see the Doc — v3) |
editDocPage | Edit page | (rights to edit the Doc — v3; the default edit mode REPLACES the page body, so append or prepend explicitly if that is what you meant) |
| Operation | What it does | Requirement |
|---|
getChatChannels | List Channels | (a token whose user can see the Channels — v3) |
getChatChannel | Get Channel | (a token whose user can see the Channel — v3) |
createChatChannel | Create Channel | (rights to create Channels in the Workspace — v3; creating a Channel whose name already exists returns the EXISTING one rather than failing) |
createLocationChatChannel | Create Channel on a Space/Folder/List | (rights on the Space, Folder or List — v3; if that location already has a Channel this returns it rather than creating a second) |
createDirectMessage | Create direct message | (a token whose user can message the people named — v3; up to 15 users, and an existing conversation is returned rather than duplicated) |
updateChatChannel | Update Channel | (rights to administer the Channel — v3) |
deleteChatChannel | Delete Channel | (rights to administer the Channel — v3) |
getChatChannelFollowers | List Channel followers | (a token whose user can see the Channel — v3) |
getChatChannelMembers | List Channel members | (a token whose user can see the Channel — v3) |
getChatMessages | List Channel messages | (a token whose user can see the Channel — v3) |
sendChatMessage | Send message | (a token whose user can post in the Channel — v3; the message is attributed to that user, and posts of type post also need a subtype id) |
updateChatMessage | Update message | (a token whose user owns the message — v3) |
deleteChatMessage | Delete message | (a token whose user owns the message — v3) |
getChatMessageReplies | List message replies | (a token whose user can see the Channel — v3) |
createChatReply | Reply to a message | (a token whose user can post in the Channel — v3) |
getChatMessageReactions | List message reactions | (a token whose user can see the Channel — v3) |
createChatReaction | React to a message | (a token whose user can post in the Channel — v3; the reaction is a lower-case emoji NAME such as thumbsup, not the emoji itself) |
deleteChatReaction | Remove a reaction | (a token whose user owns the reaction — v3; name the same emoji that was added) |
getChatMessageTaggedUsers | List users tagged in a message | (a token whose user can see the Channel — v3) |
getPostSubtypes | Get post subtype IDs | (a token whose user can see the Workspace — v3; subtype ids are unique per Workspace, so they cannot be hard-coded across accounts) |
| Operation | What it does | Requirement |
|---|
getEntityAttachments | List an entity's attachments | (a token whose user can see the parent entity — v3) |
updateAcl | Update privacy and access | (rights to administer the object — v3; sharing an item can add billable guest seats) |
queryAuditLog | Query the audit log | (the Enterprise plan AND the Workspace OWNER specifically — an admin is not enough — v3) |
Find the tasks that changed since the last run, without listing the whole Workspace
A reporting or escalation workflow needs the tasks touched since it last ran. Listing every task and filtering downstream burns the rate limit (100 requests a minute on most plans) and still misses tasks that moved between Lists. Searching the Workspace with a date-updated floor pushes both problems into ClickUp: it returns only what actually changed, across every Space, in one call.
Set Operation to getFilteredTeamTasks, then fill in:
| Field | Value | Notes |
|---|
teamId | 9012345678 | The Workspace — ClickUp calls it a Team in the API. Read it once with List the Workspaces this token can see; it is stable |
dateUpdatedGt | {{ lastRun.timestamp }} | Unix MILLISECONDS, not a date string — ClickUp rejects the ISO form. This is the floor that makes the call incremental |
statuses | in progress, blocked | Comma-separated, and each must be spelled exactly as that Space has it — an unknown status silently matches nothing rather than erroring |
includeClosed | false | Leave closed tasks out. ClickUp excludes them by default, so this is only worth setting to true |
page | 0 | Zero-indexed, 100 tasks a page, and ClickUp offers no page-size override — feed page + 1 back in inside a Loop while hasMore is true |
Sets {{changed.tasks}} (the array), {{changed.count}} and {{changed.hasMore}}. hasMore is read from ClickUp's own last_page flag on this endpoint rather than guessed from the row count, so it is safe to loop on. Wire {{changed.tasks.[0].id}} into a following ClickUp node's taskId to comment on one, or into updateTaskId to change its status. Note the search is silently limited to tasks the token's user can already read, so an empty result can mean a permission gap rather than nothing having changed.