todoist cli
Project description
✅ tdc: CLI for Todoist
tdc is a lightweight Python command-line interface for interacting with Todoist.
Powered by:
- todoist-api-python (the official Todoist API client)
- rich for colorful terminal output
Features
- List tasks (with optional filters for project/section)
- Create tasks (with optional priority, due date, reminders, etc.)
- Mark tasks as done
- List projects or create new ones
- List sections in a project
- Hide subtasks by default (use
--subtasksto show them) - Strip emojis with
--strip-emojis(helpful if emoji characters disrupt your terminal or table layout) - Partial matching on project and section names (e.g.,
--project "MyProj"matches"MyProject")
Installation
uv tool install git+https://github.com/pschmitt/tdc
Usage
All commands require an API key.
See https://todoist.com/help/articles/find-your-api-token-Jpzx9IIlB
Show Help
tdc --help
List Tasks
tdc --api-key <YOUR_API_KEY> task list
- Filter by project (partial match):
tdc --api-key <YOUR_API_KEY> task list --project "Work" - Filter by section:
tdc --api-key <YOUR_API_KEY> task list --project "Work" --section "Urgent" - Show IDs:
tdc --api-key <YOUR_API_KEY> task list --ids - Include subtasks:
tdc --api-key <YOUR_API_KEY> task list --subtasks - Apply a Todoist filter (optionally alongside a project):
tdc --api-key <YOUR_API_KEY> task list --project "Work" --filter "assigned to: me" - Filter by task title using a simple regex (case-insensitive):
tdc --api-key <YOUR_API_KEY> task list "test" - Combine Todoist filters with the simple regex filter:
tdc --api-key <YOUR_API_KEY> task list --filter "assigned to: me" test
Create a Task
tdc --api-key <YOUR_API_KEY> task create "Brush teeth" \
--priority 4 \
--due "today 11pm" \
--reminder "today 10pm" \
--project "Daily Routines" \
--section "Night"
Mark a Task as Done
tdc --api-key <YOUR_API_KEY> task done "Brush teeth"
(Optional) Limit to a project:
tdc --api-key <YOUR_API_KEY> task done "Brush teeth" --project "Daily Routines"
Delete a Task
tdc --api-key <YOUR_API_KEY> task delete "Brush teeth"
(Optional) Delete multiple tasks in one command:
tdc --api-key <YOUR_API_KEY> task delete "Brush teeth" "Wash face"
(Optional) Combine with a project and Todoist filter for extra safety:
tdc --api-key <YOUR_API_KEY> task delete "Brush" --project "Daily Routines" --filter "assigned to: me"
(Optional) Add a simple regex (case-insensitive) to limit candidate matches when deleting:
tdc --api-key <YOUR_API_KEY> task delete --pattern nightly
List / Create Projects
List Projects:
tdc --api-key <YOUR_API_KEY> project list
(Use --ids to see project IDs.)
Create a Project:
tdc --api-key <YOUR_API_KEY> project create "MyNewProject"
Clear a Project (delete all tasks, optionally all sections):
tdc --api-key <YOUR_API_KEY> project clear "MyNewProject"
Add --section (with no value) to also delete every section in the project:
tdc --api-key <YOUR_API_KEY> project clear "MyNewProject" --section
List Sections
To list sections in a given project (partial match), use:
tdc --api-key <YOUR_API_KEY> section --project "MyNewProject"
(Again, --ids is available to show section IDs.)
License
GPL-3.0 - see LICENSE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file todoist_tdc-0.3.1.tar.gz.
File metadata
- Download URL: todoist_tdc-0.3.1.tar.gz
- Upload date:
- Size: 52.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ee02b2327ed24cee874c743ef77e4ca84115a78720ea9e771436d16dd22dc195
|
|
| MD5 |
052a420300332665c30ae5faab5321b9
|
|
| BLAKE2b-256 |
66ee53aea0cc1eedc5b5dacc095046c7adf9ae9d1a00e070405ad2b11d79c7ea
|
Provenance
The following attestation bundles were made for todoist_tdc-0.3.1.tar.gz:
Publisher:
pypi.yaml on pschmitt/tdc
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
todoist_tdc-0.3.1.tar.gz -
Subject digest:
ee02b2327ed24cee874c743ef77e4ca84115a78720ea9e771436d16dd22dc195 - Sigstore transparency entry: 598857643
- Sigstore integration time:
-
Permalink:
pschmitt/tdc@fd085fbdb075bd4c56be350e78e5b610723d0f83 -
Branch / Tag:
refs/tags/0.3.1 - Owner: https://github.com/pschmitt
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yaml@fd085fbdb075bd4c56be350e78e5b610723d0f83 -
Trigger Event:
push
-
Statement type:
File details
Details for the file todoist_tdc-0.3.1-py3-none-any.whl.
File metadata
- Download URL: todoist_tdc-0.3.1-py3-none-any.whl
- Upload date:
- Size: 39.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7ac54f13dcf91c80edaf205d6e8d7a5df53c52c00aa59e16c0af7abea73d369e
|
|
| MD5 |
801241344bc7725f3c0d72c0b34b2731
|
|
| BLAKE2b-256 |
d36ac91850d6c163d50cad6b02e0ad18b819e16c040304e69ffb7ca60627eef2
|
Provenance
The following attestation bundles were made for todoist_tdc-0.3.1-py3-none-any.whl:
Publisher:
pypi.yaml on pschmitt/tdc
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
todoist_tdc-0.3.1-py3-none-any.whl -
Subject digest:
7ac54f13dcf91c80edaf205d6e8d7a5df53c52c00aa59e16c0af7abea73d369e - Sigstore transparency entry: 598857695
- Sigstore integration time:
-
Permalink:
pschmitt/tdc@fd085fbdb075bd4c56be350e78e5b610723d0f83 -
Branch / Tag:
refs/tags/0.3.1 - Owner: https://github.com/pschmitt
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yaml@fd085fbdb075bd4c56be350e78e5b610723d0f83 -
Trigger Event:
push
-
Statement type: