Documents & Productivity — entry 005 of 31
ClickUp
ClickUp's REST API mirrors nearly every surface of its all-in-one project management app -- tasks, docs, goals, time tracking, and custom fields -- authenticated with either a personal API token or a full OAuth2 app flow for marketplace integrations. The Free Forever plan includes real API access at 100 requests/minute per token, scaling up to 10,000 requests/minute on Enterprise -- pricing tier changes throughput, not access. The live API host sends no CORS headers, so browser calls need a server-side proxy.
GreatAPIs Score
Auth quickstart
- Register an app / run the OAuth flow to obtain a bearer token.
- Send it as an Authorization header
Authorization: Bearer <token>
Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.
Endpoints
Authorization2
POST/v2/oauth/tokenGet Access Token
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
GET/v2/userGet Authorized User
| Status | Description | Schema |
|---|---|---|
200 | — |
Attachments1
POST/v2/task/{task_id}/attachmentCreate Task Attachment
| Name | In | Required | Type |
|---|---|---|---|
task_id | path | yes | string |
custom_task_ids | query | no | boolean |
team_id | query | no | number |
multipart/form-data (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
Comments10
PUT/v2/comment/{comment_id}Update Comment
| Name | In | Required | Type |
|---|---|---|---|
comment_id | path | yes | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
DELETE/v2/comment/{comment_id}Delete Comment
| Name | In | Required | Type |
|---|---|---|---|
comment_id | path | yes | number |
| Status | Description | Schema |
|---|---|---|
200 | — |
GET/v2/comment/{comment_id}/replyGet Threaded Comments
| Name | In | Required | Type |
|---|---|---|---|
comment_id | path | yes | number |
| Status | Description | Schema |
|---|---|---|
200 | schema |
POST/v2/comment/{comment_id}/replyCreate Threaded Comment
| Name | In | Required | Type |
|---|---|---|---|
comment_id | path | yes | number |
application/json — schema (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
GET/v2/list/{list_id}/commentGet List Comments
| Name | In | Required | Type |
|---|---|---|---|
list_id | path | yes | number |
start | query | no | integer |
start_id | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/list/{list_id}/commentCreate List Comment
| Name | In | Required | Type |
|---|---|---|---|
list_id | path | yes | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
GET/v2/task/{task_id}/commentGet Task Comments
| Name | In | Required | Type |
|---|---|---|---|
task_id | path | yes | string |
custom_task_ids | query | no | boolean |
team_id | query | no | number |
start | query | no | integer |
start_id | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/task/{task_id}/commentCreate Task Comment
| Name | In | Required | Type |
|---|---|---|---|
task_id | path | yes | string |
custom_task_ids | query | no | boolean |
team_id | query | no | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
GET/v2/view/{view_id}/commentGet Chat View Comments
| Name | In | Required | Type |
|---|---|---|---|
view_id | path | yes | string |
start | query | no | integer |
start_id | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/view/{view_id}/commentCreate Chat View Comment
| Name | In | Required | Type |
|---|---|---|---|
view_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
Custom Task Types1
GET/v2/team/{team_id}/custom_itemGet Custom Task Types
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
| Status | Description | Schema |
|---|---|---|
200 | — |
Custom Fields6
GET/v2/folder/{folder_id}/fieldGet Folder Custom Fields
| Name | In | Required | Type |
|---|---|---|---|
folder_id | path | yes | number |
include_applied_objects | query | no | boolean |
Content-Type | header | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
GET/v2/list/{list_id}/fieldGet List Custom Fields
| Name | In | Required | Type |
|---|---|---|---|
list_id | path | yes | number |
include_applied_objects | query | no | boolean |
Content-Type | header | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
GET/v2/space/{space_id}/fieldGet Space Custom Fields
| Name | In | Required | Type |
|---|---|---|---|
space_id | path | yes | number |
include_applied_objects | query | no | boolean |
Content-Type | header | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/task/{task_id}/field/{field_id}Set Custom Field Value
| Name | In | Required | Type |
|---|---|---|---|
task_id | path | yes | string |
field_id | path | yes | string |
custom_task_ids | query | no | boolean |
team_id | query | no | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — | |
400 | Returned when the Custom Field is not applicable to the task's custom task type. | — |
DELETE/v2/task/{task_id}/field/{field_id}Remove Custom Field Value
| Name | In | Required | Type |
|---|---|---|---|
task_id | path | yes | string |
field_id | path | yes | string |
custom_task_ids | query | no | boolean |
team_id | query | no | number |
| Status | Description | Schema |
|---|---|---|
200 | — |
GET/v2/team/{team_id}/fieldGet Workspace Custom Fields
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
include_applied_objects | query | no | boolean |
Content-Type | header | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
Folders6
GET/v2/folder/{folder_id}Get Folder
| Name | In | Required | Type |
|---|---|---|---|
folder_id | path | yes | number |
| Status | Description | Schema |
|---|---|---|
200 | — |
PUT/v2/folder/{folder_id}Update Folder
| Name | In | Required | Type |
|---|---|---|---|
folder_id | path | yes | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
DELETE/v2/folder/{folder_id}Delete Folder
| Name | In | Required | Type |
|---|---|---|---|
folder_id | path | yes | number |
| Status | Description | Schema |
|---|---|---|
200 | — |
GET/v2/space/{space_id}/folderGet Folders
| Name | In | Required | Type |
|---|---|---|---|
space_id | path | yes | number |
archived | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/space/{space_id}/folderCreate Folder
| Name | In | Required | Type |
|---|---|---|---|
space_id | path | yes | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/space/{space_id}/folder_template/{template_id}Create Folder from template
| Name | In | Required | Type |
|---|---|---|---|
space_id | path | yes | string |
template_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | Folder created successfully | — |
400 | Bad request - Name is required | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Template or space not found | — |
500 | Internal server error | — |
Goals8
GET/v2/goal/{goal_id}Get Goal
| Name | In | Required | Type |
|---|---|---|---|
goal_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
PUT/v2/goal/{goal_id}Update Goal
| Name | In | Required | Type |
|---|---|---|---|
goal_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
DELETE/v2/goal/{goal_id}Delete Goal
| Name | In | Required | Type |
|---|---|---|---|
goal_id | path | yes | string |
Content-Type | header | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/goal/{goal_id}/key_resultCreate Key Result
| Name | In | Required | Type |
|---|---|---|---|
goal_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
PUT/v2/key_result/{key_result_id}Edit Key Result
| Name | In | Required | Type |
|---|---|---|---|
key_result_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
DELETE/v2/key_result/{key_result_id}Delete Key Result
| Name | In | Required | Type |
|---|---|---|---|
key_result_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
GET/v2/team/{team_id}/goalGet Goals
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
include_completed | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/team/{team_id}/goalCreate Goal
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
Guests10
POST/v2/folder/{folder_id}/guest/{guest_id}Add Guest To Folder
| Name | In | Required | Type |
|---|---|---|---|
folder_id | path | yes | number |
guest_id | path | yes | number |
include_shared | query | no | boolean |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
DELETE/v2/folder/{folder_id}/guest/{guest_id}Remove Guest From Folder
| Name | In | Required | Type |
|---|---|---|---|
folder_id | path | yes | number |
guest_id | path | yes | number |
include_shared | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/list/{list_id}/guest/{guest_id}Add Guest To List
| Name | In | Required | Type |
|---|---|---|---|
list_id | path | yes | number |
guest_id | path | yes | number |
include_shared | query | no | boolean |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
DELETE/v2/list/{list_id}/guest/{guest_id}Remove Guest From List
| Name | In | Required | Type |
|---|---|---|---|
list_id | path | yes | number |
guest_id | path | yes | number |
include_shared | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/task/{task_id}/guest/{guest_id}Add Guest To Task
| Name | In | Required | Type |
|---|---|---|---|
task_id | path | yes | string |
guest_id | path | yes | number |
include_shared | query | no | boolean |
custom_task_ids | query | no | boolean |
team_id | query | no | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
DELETE/v2/task/{task_id}/guest/{guest_id}Remove Guest From Task
| Name | In | Required | Type |
|---|---|---|---|
task_id | path | yes | string |
guest_id | path | yes | number |
include_shared | query | no | boolean |
custom_task_ids | query | no | boolean |
team_id | query | no | number |
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/team/{team_id}/guestInvite Guest To Workspace
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
GET/v2/team/{team_id}/guest/{guest_id}Get Guest
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
guest_id | path | yes | number |
| Status | Description | Schema |
|---|---|---|
200 | — |
PUT/v2/team/{team_id}/guest/{guest_id}Edit Guest On Workspace
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
guest_id | path | yes | number |
application/json
| Status | Description | Schema |
|---|---|---|
200 | — |
DELETE/v2/team/{team_id}/guest/{guest_id}Remove Guest From Workspace
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
guest_id | path | yes | number |
| Status | Description | Schema |
|---|---|---|
200 | — |
Lists11
GET/v2/folder/{folder_id}/listGet Lists
| Name | In | Required | Type |
|---|---|---|---|
folder_id | path | yes | number |
archived | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/folder/{folder_id}/listCreate List
| Name | In | Required | Type |
|---|---|---|---|
folder_id | path | yes | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/folder/{folder_id}/list_template/{template_id}Create List From Template in Folder
| Name | In | Required | Type |
|---|---|---|---|
folder_id | path | yes | string |
template_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | List created successfully | schema |
400 | Bad request - Name is required | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Template, folder, or space not found | — |
500 | Internal server error | — |
GET/v2/list/{list_id}Get List
| Name | In | Required | Type |
|---|---|---|---|
list_id | path | yes | number |
| Status | Description | Schema |
|---|---|---|
200 | — |
PUT/v2/list/{list_id}Update List
| Name | In | Required | Type |
|---|---|---|---|
list_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
DELETE/v2/list/{list_id}Delete List
| Name | In | Required | Type |
|---|---|---|---|
list_id | path | yes | number |
Content-Type | header | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/list/{list_id}/task/{task_id}Add Task To List
| Name | In | Required | Type |
|---|---|---|---|
list_id | path | yes | number |
task_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
DELETE/v2/list/{list_id}/task/{task_id}Remove Task From List
| Name | In | Required | Type |
|---|---|---|---|
list_id | path | yes | number |
task_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
GET/v2/space/{space_id}/listGet Folderless Lists
| Name | In | Required | Type |
|---|---|---|---|
space_id | path | yes | number |
archived | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/space/{space_id}/listCreate Folderless List
| Name | In | Required | Type |
|---|---|---|---|
space_id | path | yes | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/space/{space_id}/list_template/{template_id}Create List From Template in Space
| Name | In | Required | Type |
|---|---|---|---|
space_id | path | yes | string |
template_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | List created successfully | — |
400 | Bad request - Name is required, or is already taken | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Template, folder, or space not found | — |
500 | Internal server error | — |
Members2
GET/v2/list/{list_id}/memberGet List Members
| Name | In | Required | Type |
|---|---|---|---|
list_id | path | yes | number |
| Status | Description | Schema |
|---|---|---|
200 | — |
GET/v2/task/{task_id}/memberGet Task Members
| Name | In | Required | Type |
|---|---|---|---|
task_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
Roles1
GET/v2/team/{team_id}/customrolesGet Custom Roles
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
include_members | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | — |
Shared Hierarchy1
GET/v2/team/{team_id}/sharedShared Hierarchy
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
| Status | Description | Schema |
|---|---|---|
200 | — |
Spaces5
GET/v2/space/{space_id}Get Space
| Name | In | Required | Type |
|---|---|---|---|
space_id | path | yes | number |
| Status | Description | Schema |
|---|---|---|
200 | — |
PUT/v2/space/{space_id}Update Space
| Name | In | Required | Type |
|---|---|---|---|
space_id | path | yes | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
DELETE/v2/space/{space_id}Delete Space
| Name | In | Required | Type |
|---|---|---|---|
space_id | path | yes | number |
| Status | Description | Schema |
|---|---|---|
200 | — |
GET/v2/team/{team_id}/spaceGet Spaces
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
archived | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/team/{team_id}/spaceCreate Space
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
Tags6
GET/v2/space/{space_id}/tagGet Space Tags
| Name | In | Required | Type |
|---|---|---|---|
space_id | path | yes | number |
Content-Type | header | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/space/{space_id}/tagCreate Space Tag
| Name | In | Required | Type |
|---|---|---|---|
space_id | path | yes | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
PUT/v2/space/{space_id}/tag/{tag_name}Edit Space Tag
| Name | In | Required | Type |
|---|---|---|---|
space_id | path | yes | number |
tag_name | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
DELETE/v2/space/{space_id}/tag/{tag_name}Delete Space Tag
| Name | In | Required | Type |
|---|---|---|---|
space_id | path | yes | number |
tag_name | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/task/{task_id}/tag/{tag_name}Add Tag To Task
| Name | In | Required | Type |
|---|---|---|---|
task_id | path | yes | string |
tag_name | path | yes | string |
custom_task_ids | query | no | boolean |
team_id | query | no | number |
Content-Type | header | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
DELETE/v2/task/{task_id}/tag/{tag_name}Remove Tag From Task
| Name | In | Required | Type |
|---|---|---|---|
task_id | path | yes | string |
tag_name | path | yes | string |
custom_task_ids | query | no | boolean |
team_id | query | no | number |
Content-Type | header | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
Tasks10
GET/v2/list/{list_id}/taskGet Tasks
| Name | In | Required | Type |
|---|---|---|---|
list_id | path | yes | number |
archived | query | no | boolean |
include_markdown_description | query | no | boolean |
page | query | no | integer |
order_by | query | no | string |
reverse | query | no | boolean |
subtasks | query | no | boolean |
statuses | query | no | array |
include_closed | query | no | boolean |
include_timl | query | no | boolean |
assignees | query | no | array |
watchers | query | no | array |
tags | query | no | array |
due_date_gt | query | no | integer |
due_date_lt | query | no | integer |
date_created_gt | query | no | integer |
date_created_lt | query | no | integer |
date_updated_gt | query | no | integer |
date_updated_lt | query | no | integer |
date_done_gt | query | no | integer |
date_done_lt | query | no | integer |
custom_fields | query | no | array |
custom_field | query | no | array |
custom_items | query | no | array |
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/list/{list_id}/taskCreate Task
| Name | In | Required | Type |
|---|---|---|---|
list_id | path | yes | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/list/{list_id}/taskTemplate/{template_id}Create Task From Template
| Name | In | Required | Type |
|---|---|---|---|
list_id | path | yes | number |
template_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
GET/v2/task/bulk_time_in_status/task_idsGet Bulk Tasks' Time in Status
| Name | In | Required | Type |
|---|---|---|---|
task_ids | query | yes | string |
custom_task_ids | query | no | boolean |
team_id | query | no | number |
Content-Type | header | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
GET/v2/task/{task_id}Get Task
| Name | In | Required | Type |
|---|---|---|---|
task_id | path | yes | string |
custom_task_ids | query | no | boolean |
team_id | query | no | number |
include_subtasks | query | no | boolean |
include_markdown_description | query | no | boolean |
custom_fields | query | no | array |
| Status | Description | Schema |
|---|---|---|
200 | — |
PUT/v2/task/{task_id}Update Task
| Name | In | Required | Type |
|---|---|---|---|
task_id | path | yes | string |
custom_task_ids | query | no | boolean |
team_id | query | no | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
DELETE/v2/task/{task_id}Delete Task
| Name | In | Required | Type |
|---|---|---|---|
task_id | path | yes | string |
custom_task_ids | query | no | boolean |
team_id | query | no | number |
Content-Type | header | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | — |
POST/v2/task/{task_id}/mergeMerge Tasks
| Name | In | Required | Type |
|---|---|---|---|
task_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | Tasks merged successfully | — |
400 | Bad request - invalid task IDs or other validation errors | — |
403 | Unauthorized to merge these tasks | — |
404 | One or more tasks not found | — |
GET/v2/task/{task_id}/time_in_statusGet Task's Time in Status
| Name | In | Required | Type |
|---|---|---|---|
task_id | path | yes | string |
custom_task_ids | query | no | boolean |
team_id | query | no | number |
Content-Type | header | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
GET/v2/team/{team_Id}/taskGet Filtered Team Tasks
| Name | In | Required | Type |
|---|---|---|---|
team_Id | path | yes | number |
page | query | no | integer |
order_by | query | no | string |
reverse | query | no | boolean |
subtasks | query | no | boolean |
space_ids[] | query | no | array |
project_ids[] | query | no | array |
list_ids[] | query | no | array |
statuses[] | query | no | array |
include_closed | query | no | boolean |
assignees[] | query | no | array |
tags[] | query | no | array |
due_date_gt | query | no | integer |
due_date_lt | query | no | integer |
date_created_gt | query | no | integer |
date_created_lt | query | no | integer |
date_updated_gt | query | no | integer |
date_updated_lt | query | no | integer |
date_done_gt | query | no | integer |
date_done_lt | query | no | integer |
custom_fields | query | no | array |
parent | query | no | string |
include_markdown_description | query | no | boolean |
custom_items[] | query | no | array |
| Status | Description | Schema |
|---|---|---|
200 | — |
Task Checklists6
PUT/v2/checklist/{checklist_id}Edit Checklist
| Name | In | Required | Type |
|---|---|---|---|
checklist_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
DELETE/v2/checklist/{checklist_id}Delete Checklist
| Name | In | Required | Type |
|---|---|---|---|
checklist_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/checklist/{checklist_id}/checklist_itemCreate Checklist Item
| Name | In | Required | Type |
|---|---|---|---|
checklist_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
PUT/v2/checklist/{checklist_id}/checklist_item/{checklist_item_id}Edit Checklist Item
| Name | In | Required | Type |
|---|---|---|---|
checklist_id | path | yes | string |
checklist_item_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
DELETE/v2/checklist/{checklist_id}/checklist_item/{checklist_item_id}Delete Checklist Item
| Name | In | Required | Type |
|---|---|---|---|
checklist_id | path | yes | string |
checklist_item_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/task/{task_id}/checklistCreate Checklist
| Name | In | Required | Type |
|---|---|---|---|
task_id | path | yes | string |
custom_task_ids | query | no | boolean |
team_id | query | no | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
Task Relationships4
POST/v2/task/{task_id}/dependencyAdd Dependency
| Name | In | Required | Type |
|---|---|---|---|
task_id | path | yes | string |
custom_task_ids | query | no | boolean |
team_id | query | no | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
DELETE/v2/task/{task_id}/dependencyDelete Dependency
| Name | In | Required | Type |
|---|---|---|---|
task_id | path | yes | string |
depends_on | query | yes | string |
dependency_of | query | yes | string |
custom_task_ids | query | no | boolean |
team_id | query | no | number |
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/task/{task_id}/link/{links_to}Add Task Link
| Name | In | Required | Type |
|---|---|---|---|
task_id | path | yes | string |
links_to | path | yes | string |
custom_task_ids | query | no | boolean |
team_id | query | no | number |
| Status | Description | Schema |
|---|---|---|
200 | — |
DELETE/v2/task/{task_id}/link/{links_to}Delete Task Link
| Name | In | Required | Type |
|---|---|---|---|
task_id | path | yes | string |
links_to | path | yes | string |
custom_task_ids | query | no | boolean |
team_id | query | no | number |
| Status | Description | Schema |
|---|---|---|
200 | — |
Templates3
GET/v2/team/{team_id}/folder_templateGet Folder Templates
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
Content-Type | header | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Folder templates retrieved successfully. | — |
GET/v2/team/{team_id}/list_templateGet List Templates
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
Content-Type | header | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | List templates retrieved successfully. | — |
GET/v2/team/{team_id}/taskTemplateGet Task Templates
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
page | query | yes | integer |
Content-Type | header | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
Workspaces3
GET/v2/teamGet Authorized Workspaces
| Status | Description | Schema |
|---|---|---|
200 | — |
GET/v2/team/{team_id}/planGet Workspace Plan
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
GET/v2/team/{team_id}/seatsGet Workspace seats
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
User Groups4
GET/v2/groupGet Groups
| Name | In | Required | Type |
|---|---|---|---|
team_id | query | yes | number |
group_ids | query | no | array |
| Status | Description | Schema |
|---|---|---|
200 | — |
PUT/v2/group/{group_id}Update Group
| Name | In | Required | Type |
|---|---|---|---|
group_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
DELETE/v2/group/{group_id}Delete Group
| Name | In | Required | Type |
|---|---|---|---|
group_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/team/{team_id}/groupCreate Group
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
Time Tracking13
GET/v2/team/{team_Id}/time_entriesGet time entries within a date range
| Name | In | Required | Type |
|---|---|---|---|
team_Id | path | yes | number |
start_date | query | no | number |
end_date | query | no | number |
assignee | query | no | number |
include_task_tags | query | no | boolean |
include_location_names | query | no | boolean |
include_approval_history | query | no | boolean |
include_approval_details | query | no | boolean |
space_id | query | no | number |
folder_id | query | no | number |
list_id | query | no | number |
task_id | query | no | string |
custom_task_ids | query | no | boolean |
team_id | query | no | number |
is_billable | query | no | boolean |
Content-Type | header | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | If your time entry is associated with a task that uses custom task ids you can expect a `custom_id`` field in the body of the response. The task field will only be included if there is a task associated with a time entry. | — |
POST/v2/team/{team_Id}/time_entriesCreate a time entry
| Name | In | Required | Type |
|---|---|---|---|
team_Id | path | yes | number |
custom_task_ids | query | no | boolean |
team_id | query | no | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/team/{team_Id}/time_entries/startStart a time Entry
| Name | In | Required | Type |
|---|---|---|---|
team_Id | path | yes | number |
custom_task_ids | query | no | boolean |
team_id | query | no | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
GET/v2/team/{team_id}/time_entries/currentGet running time entry
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
assignee | query | no | number |
Content-Type | header | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/team/{team_id}/time_entries/stopStop a time Entry
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
Content-Type | header | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
GET/v2/team/{team_id}/time_entries/tagsGet all tags from time entries
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
Content-Type | header | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/team/{team_id}/time_entries/tagsAdd tags from time entries
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
PUT/v2/team/{team_id}/time_entries/tagsChange tag names from time entries
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
DELETE/v2/team/{team_id}/time_entries/tagsRemove tags from time entries
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
GET/v2/team/{team_id}/time_entries/{timer_id}Get singular time entry
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
timer_id | path | yes | string |
include_task_tags | query | no | boolean |
include_location_names | query | no | boolean |
include_approval_history | query | no | boolean |
include_approval_details | query | no | boolean |
Content-Type | header | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
PUT/v2/team/{team_id}/time_entries/{timer_id}Update a time Entry
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
timer_id | path | yes | number |
custom_task_ids | query | no | boolean |
team_id | query | no | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
DELETE/v2/team/{team_id}/time_entries/{timer_id}Delete a time Entry
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
timer_id | path | yes | number |
Content-Type | header | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
GET/v2/team/{team_id}/time_entries/{timer_id}/historyGet time entry history
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
timer_id | path | yes | string |
Content-Type | header | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
Time Tracking (Legacy)4
GET/v2/task/{task_id}/timeGet tracked time
| Name | In | Required | Type |
|---|---|---|---|
task_id | path | yes | string |
custom_task_ids | query | no | boolean |
team_id | query | no | number |
Content-Type | header | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/task/{task_id}/timeTrack time
| Name | In | Required | Type |
|---|---|---|---|
task_id | path | yes | string |
custom_task_ids | query | no | boolean |
team_id | query | no | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
PUT/v2/task/{task_id}/time/{interval_id}Edit time tracked
| Name | In | Required | Type |
|---|---|---|---|
task_id | path | yes | string |
interval_id | path | yes | string |
custom_task_ids | query | no | boolean |
team_id | query | no | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
DELETE/v2/task/{task_id}/time/{interval_id}Delete time tracked
| Name | In | Required | Type |
|---|---|---|---|
task_id | path | yes | string |
interval_id | path | yes | string |
custom_task_ids | query | no | boolean |
team_id | query | no | number |
Content-Type | header | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
Users4
POST/v2/team/{team_id}/userInvite User To Workspace
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
GET/v2/team/{team_id}/user/{user_id}Get User
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
user_id | path | yes | number |
include_shared | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | — |
PUT/v2/team/{team_id}/user/{user_id}Edit User On Workspace
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
user_id | path | yes | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
DELETE/v2/team/{team_id}/user/{user_id}Remove User From Workspace
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
user_id | path | yes | number |
| Status | Description | Schema |
|---|---|---|
200 | — |
Views12
GET/v2/folder/{folder_id}/viewGet Folder Views
| Name | In | Required | Type |
|---|---|---|---|
folder_id | path | yes | number |
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/folder/{folder_id}/viewCreate Folder View
| Name | In | Required | Type |
|---|---|---|---|
folder_id | path | yes | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
GET/v2/list/{list_id}/viewGet List Views
| Name | In | Required | Type |
|---|---|---|---|
list_id | path | yes | number |
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/list/{list_id}/viewCreate List View
| Name | In | Required | Type |
|---|---|---|---|
list_id | path | yes | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
GET/v2/space/{space_id}/viewGet Space Views
| Name | In | Required | Type |
|---|---|---|---|
space_id | path | yes | number |
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/space/{space_id}/viewCreate Space View
| Name | In | Required | Type |
|---|---|---|---|
space_id | path | yes | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
GET/v2/team/{team_id}/viewGet Workspace (Everything level) Views
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/team/{team_id}/viewCreate Workspace (Everything level) View
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
GET/v2/view/{view_id}Get View
| Name | In | Required | Type |
|---|---|---|---|
view_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
PUT/v2/view/{view_id}Update View
| Name | In | Required | Type |
|---|---|---|---|
view_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
DELETE/v2/view/{view_id}Delete View
| Name | In | Required | Type |
|---|---|---|---|
view_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
GET/v2/view/{view_id}/taskGet View Tasks
| Name | In | Required | Type |
|---|---|---|---|
view_id | path | yes | string |
page | query | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | — |
Webhooks4
GET/v2/team/{team_id}/webhookGet Webhooks
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
| Status | Description | Schema |
|---|---|---|
200 | — |
POST/v2/team/{team_id}/webhookCreate Webhook
| Name | In | Required | Type |
|---|---|---|---|
team_id | path | yes | number |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
PUT/v2/webhook/{webhook_id}Update Webhook
| Name | In | Required | Type |
|---|---|---|---|
webhook_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | — |
DELETE/v2/webhook/{webhook_id}Delete Webhook
| Name | In | Required | Type |
|---|---|---|---|
webhook_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | — |
Try it
Developer reference
https://api.clickup.com/apiRate limits are per personal or OAuth token and vary by the Workspace plan hosting the token: Free Forever, Unlimited, and Business get 100 requests per minute per token, Business Plus gets 1,000 requests per minute per token, and Enterprise gets 10,000 requests per minute per token. Exceeding the limit returns HTTP 429; every response reports live usage via X-RateLimit-Limit/-Remaining/-Reset headers.
- GET/v2/user
- GET/v2/team
- GET/v2/list/{list_id}/task
- POST/v2/list/{list_id}/task
- GET/v2/task/{task_id}