askill
todoist

todoistSafety 90Repository

Manage tasks, projects, and productivity in Todoist. View tasks, add new items, check completed work, and organize projects.

0 stars
1.2k downloads
Updated 2/7/2026

Package Files

Loading files...
SKILL.md

Todoist Task Management

This skill provides access to Todoist via the REST API.

Setup Required

Get your API token:

  1. Go to Todoist Settings → Integrations → Developer
  2. Or visit: https://todoist.com/app/settings/integrations/developer
  3. Copy your API token

Set as environment variable:

export TODOIST_TOKEN="your-api-token"

When to Use

Use this skill when the user:

  • Asks about their tasks, TODOs, or what they need to do
  • Wants to add a new task or reminder
  • Asks about completed tasks or productivity
  • Wants to organize projects or sections
  • Mentions "Todoist" or their task list

API Endpoints

Base URL: https://api.todoist.com/rest/v2

All requests need:

-H "Authorization: Bearer $(printenv TODOIST_TOKEN)"

Important: Use $(printenv TODOIST_TOKEN) to ensure the token expands correctly in all shell contexts (zsh eval can lose variable values).

Tasks

Get All Tasks:

curl -s "https://api.todoist.com/rest/v2/tasks" \
  -H "Authorization: Bearer $(printenv TODOIST_TOKEN)"

Get Tasks by Filter:

curl -s -G "https://api.todoist.com/rest/v2/tasks" \
  --data-urlencode "filter=today" \
  -H "Authorization: Bearer $(printenv TODOIST_TOKEN)"

Get Single Task:

curl -s "https://api.todoist.com/rest/v2/tasks/{TASK_ID}" \
  -H "Authorization: Bearer $(printenv TODOIST_TOKEN)"

Create Task:

curl -s -X POST "https://api.todoist.com/rest/v2/tasks" \
  -H "Authorization: Bearer $(printenv TODOIST_TOKEN)" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Task name",
    "due_string": "tomorrow",
    "priority": 2
  }'

Complete Task:

curl -s -X POST "https://api.todoist.com/rest/v2/tasks/{TASK_ID}/close" \
  -H "Authorization: Bearer $(printenv TODOIST_TOKEN)"

Projects

Get All Projects:

curl -s "https://api.todoist.com/rest/v2/projects" \
  -H "Authorization: Bearer $(printenv TODOIST_TOKEN)"

Get Project:

curl -s "https://api.todoist.com/rest/v2/projects/{PROJECT_ID}" \
  -H "Authorization: Bearer $(printenv TODOIST_TOKEN)"

Sections

Get Sections:

curl -s "https://api.todoist.com/rest/v2/sections" \
  -H "Authorization: Bearer $(printenv TODOIST_TOKEN)"

Get Sections in Project:

curl -s "https://api.todoist.com/rest/v2/sections?project_id={PROJECT_ID}" \
  -H "Authorization: Bearer $(printenv TODOIST_TOKEN)"

Labels

Get All Labels:

curl -s "https://api.todoist.com/rest/v2/labels" \
  -H "Authorization: Bearer $(printenv TODOIST_TOKEN)"

Comments

Get Comments on Task:

curl -s "https://api.todoist.com/rest/v2/comments?task_id={TASK_ID}" \
  -H "Authorization: Bearer $(printenv TODOIST_TOKEN)"

Add Comment:

curl -s -X POST "https://api.todoist.com/rest/v2/comments" \
  -H "Authorization: Bearer $(printenv TODOIST_TOKEN)" \
  -H "Content-Type: application/json" \
  -d '{
    "task_id": "TASK_ID",
    "content": "Comment text"
  }'

Filter Syntax

The filter parameter accepts Todoist filter syntax:

FilterDescription
todayDue today
tomorrowDue tomorrow
overduePast due
7 days or next 7 daysDue in next 7 days
no dateNo due date
p1Priority 1 (urgent)
@label_nameHas label
#project_nameIn project
/section_nameIn section
assigned to: meAssigned to you
today & p1Combine with &
`todaytomorrow`

Common Workflows

Get Today's Tasks

curl -s -G "https://api.todoist.com/rest/v2/tasks" \
  --data-urlencode "filter=today" \
  -H "Authorization: Bearer $(printenv TODOIST_TOKEN)" | jq '.[] | {content, due: .due.string, priority}'

Get Overdue Tasks

curl -s -G "https://api.todoist.com/rest/v2/tasks" \
  --data-urlencode "filter=overdue" \
  -H "Authorization: Bearer $(printenv TODOIST_TOKEN)"

Add a Task for Tomorrow

curl -s -X POST "https://api.todoist.com/rest/v2/tasks" \
  -H "Authorization: Bearer $(printenv TODOIST_TOKEN)" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Review the PR",
    "due_string": "tomorrow",
    "priority": 2
  }'

Get All Tasks in a Project

# First, find project ID
curl -s "https://api.todoist.com/rest/v2/projects" \
  -H "Authorization: Bearer $(printenv TODOIST_TOKEN)" | jq '.[] | {name, id}'

# Then get tasks
curl -s "https://api.todoist.com/rest/v2/tasks?project_id={PROJECT_ID}" \
  -H "Authorization: Bearer $(printenv TODOIST_TOKEN)"

Get High Priority Tasks

curl -s -G "https://api.todoist.com/rest/v2/tasks" \
  --data-urlencode "filter=p1 | p2" \
  -H "Authorization: Bearer $(printenv TODOIST_TOKEN)"

List Projects with Task Counts

curl -s "https://api.todoist.com/rest/v2/projects" \
  -H "Authorization: Bearer $(printenv TODOIST_TOKEN)" | jq '.[] | {name, id}'

Task Properties

When creating tasks:

  • content: Task text (required)
  • description: Additional details
  • due_string: Natural language date ("tomorrow", "every monday")
  • due_date: Specific date (YYYY-MM-DD)
  • due_datetime: With time (RFC3339)
  • priority: 1 (urgent) to 4 (normal) - note: API uses 1=urgent, opposite of UI
  • project_id: Project to add to
  • section_id: Section within project
  • labels: Array of label names
  • assignee_id: For shared projects

Notes

Sources

Install

Download ZIP
Requires askill CLI v1.0+

AI Quality Score

92/100Analyzed 2/11/2026

An exceptionally well-documented skill for Todoist API integration, featuring clear setup instructions, comprehensive endpoint coverage, and practical workflows.

90
100
90
95
98

Metadata

Licenseunknown
Version-
Updated2/7/2026
Publishertbroadley

Tags

api