clickupInteract with ClickUp project management platform via REST API. Use when working with tasks, spaces, lists, assignees, or any ClickUp workflow automation. Handles pagination, subtasks, and common query patterns. Use for task management, reporting, automation, or any ClickUp-related queries.
Install via ClawdBot CLI:
clawdbot install shubhs0707/clickupInteract with ClickUp's REST API for task management, reporting, and workflow automation.
Before using this skill, ensure the following are configured in TOOLS.md:
CLICKUP_API_KEYCLICKUP_TEAM_IDThe fastest way to query ClickUp:
# Set environment variables
export CLICKUP_API_KEY="pk_..."
export CLICKUP_TEAM_ID="90161392624"
# Get all open tasks
./scripts/clickup-query.sh tasks
# Get task counts (parent vs subtasks)
./scripts/clickup-query.sh task-count
# Get assignee breakdown
./scripts/clickup-query.sh assignees
# Get specific task
./scripts/clickup-query.sh task <task-id>
For custom queries or operations not covered by the helper script:
# Get all open tasks (with subtasks and pagination)
curl "https://api.clickup.com/api/v2/team/{team_id}/task?include_closed=false&subtasks=true" \
-H "Authorization: {api_key}"
Never query tasks without subtasks=true:
# ✅ CORRECT
?subtasks=true
# ❌ WRONG
(no subtasks parameter)
Why: Without this parameter, you miss potentially 70%+ of actual tasks. Parent tasks are just containers; real work happens in subtasks.
ClickUp API returns max 100 tasks per page. Always loop until last_page: true:
page=0
while true; do
result=$(curl -s "...&page=$page" -H "Authorization: $CLICKUP_API_KEY")
# Process tasks
echo "$result" | jq '.tasks[]'
# Check if done
is_last=$(echo "$result" | jq -r '.last_page')
[ "$is_last" = "true" ] && break
((page++))
done
Why: Workspaces with 300+ tasks need 3-4 pages. Missing pages = incomplete data.
# Parent tasks have parent=null
jq '.tasks[] | select(.parent == null)'
# Subtasks have parent != null
jq '.tasks[] | select(.parent != null)'
# Using helper script (recommended)
./scripts/clickup-query.sh task-count
# Direct API with jq
curl -s "https://api.clickup.com/api/v2/team/{team_id}/task?subtasks=true" \
-H "Authorization: {api_key}" | \
jq '{
total: (.tasks | length),
parents: ([.tasks[] | select(.parent == null)] | length),
subtasks: ([.tasks[] | select(.parent != null)] | length)
}'
# Using helper script (recommended)
./scripts/clickup-query.sh assignees
# Direct API
curl -s "https://api.clickup.com/api/v2/team/{team_id}/task?subtasks=true" \
-H "Authorization: {api_key}" | \
jq -r '.tasks[] |
if .assignees and (.assignees | length) > 0
then .assignees[0].username
else "Unassigned"
end' | sort | uniq -c | sort -rn
curl "https://api.clickup.com/api/v2/list/{list_id}/task" \
-X POST \
-H "Authorization: {api_key}" \
-H "Content-Type: application/json" \
-d '{
"name": "Task Name",
"description": "Description here",
"assignees": [user_id],
"status": "to do",
"priority": 3
}'
curl "https://api.clickup.com/api/v2/task/{task_id}" \
-X PUT \
-H "Authorization: {api_key}" \
-H "Content-Type: application/json" \
-d '{
"name": "Updated Name",
"status": "in progress",
"priority": 2
}'
# Using helper script
./scripts/clickup-query.sh task {task_id}
# Direct API
curl "https://api.clickup.com/api/v2/task/{task_id}" \
-H "Authorization: {api_key}"
curl "https://api.clickup.com/api/v2/team/{team_id}/task?space_ids[]={space_id}&subtasks=true" \
-H "Authorization: {api_key}"
curl "https://api.clickup.com/api/v2/list/{list_id}/task?subtasks=true" \
-H "Authorization: {api_key}"
curl "https://api.clickup.com/api/v2/team/{team_id}/task?include_closed=true&subtasks=true" \
-H "Authorization: {api_key}"
For detailed API documentation, query patterns, and troubleshooting:
Read: references/api-guide.md
Covers:
# Get all open tasks grouped by assignee
./scripts/clickup-query.sh assignees
# Get specific team member's tasks (use user ID, not username!)
curl "https://api.clickup.com/api/v2/team/{team_id}/task?subtasks=true&assignees[]={user_id}" \
-H "Authorization: {api_key}"
# Count tasks by status
./scripts/clickup-query.sh tasks | \
jq -r '.tasks[].status.status' | sort | uniq -c | sort -rn
# Find unassigned tasks
./scripts/clickup-query.sh tasks | \
jq '.tasks[] | select(.assignees | length == 0)'
# Count by priority
./scripts/clickup-query.sh tasks | \
jq -r '.tasks[] | .priority.priority // "none"' | sort | uniq -c | sort -rn
scripts/clickup-query.sh for common operations| head -n 5 firstassignees[]={user_id} parameter, not jq username matchingsubtasks=trueCLICKUP_API_KEY is set correctlyassignees[] param, not jq text matchingGenerated Mar 1, 2026
Automatically generate daily standup reports by fetching all open tasks grouped by assignee, helping teams quickly see who is working on what. This reduces manual status gathering and ensures subtasks are included for accurate workload visibility. Ideal for agile development environments to streamline morning meetings.
Conduct regular audits of tasks to monitor status distribution, identify unassigned work, and ensure compliance with project timelines. This helps managers spot bottlenecks and maintain accountability across teams. Useful in regulated industries like finance or healthcare where task tracking is critical.
Analyze task priorities to allocate resources effectively, identifying high-priority items that need immediate attention. This enables teams to focus on urgent deliverables and balance workloads across members. Beneficial for fast-paced industries like marketing or consulting.
Automatically create tasks in ClickUp from customer support tickets or other systems, assigning them to the right team members with predefined statuses and priorities. This reduces manual entry and speeds up response times. Ideal for service-oriented businesses to improve workflow automation.
Generate high-level reports on task counts, assignee breakdowns, and progress metrics to provide executives with insights into team productivity and project health. This supports data-driven decision-making and strategic planning. Suitable for any industry needing executive oversight.
Offer this skill as part of a subscription-based service for project management automation, charging monthly or annual fees per user or team. Revenue comes from recurring payments, with tiers based on usage limits or advanced features. Targets businesses looking to enhance their ClickUp workflows without custom development.
Provide consulting services to help companies integrate this skill into their existing workflows, offering customization, training, and support. Revenue is generated through one-time project fees or ongoing retainer agreements. Appeals to organizations needing tailored solutions for complex ClickUp environments.
Offer basic functionality for free to attract users, with premium features like advanced analytics, bulk operations, or API rate limit increases available for a fee. Revenue comes from upgrades and add-ons. Targets small to medium-sized businesses seeking cost-effective automation tools.
💬 Integration Tip
Always set the subtasks=true parameter in API calls to include all tasks, and handle pagination to avoid missing data beyond the first 100 results.
Manage Trello boards, lists, and cards via the Trello REST API.
Sync and query CalDAV calendars (iCloud, Google, Fastmail, Nextcloud, etc.) using vdirsyncer + khal. Works on Linux.
Manage tasks and projects in Todoist. Use when user asks about tasks, to-dos, reminders, or productivity.
Master OpenClaw's timing systems. Use for scheduling reliable reminders, setting up periodic maintenance (janitor jobs), and understanding when to use Cron v...
Calendar management and scheduling. Create events, manage meetings, and sync across calendar providers.
Kanban-style task management dashboard for AI assistants. Manage tasks via CLI or dashboard UI. Use when user mentions tasks, kanban, task board, mission con...