✅ 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.
Metadata
Release files for todoist-tdc 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| todoist_tdc-0.3.1.tar.gz | 52.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| todoist_tdc-0.3.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 91.9 kB
Release files / todoist_tdc-0.3.1.tar.gz
| Download URL | todoist_tdc-0.3.1.tar.gz |
|---|---|
| Size | 52.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ee02b2327ed24cee874c743ef77e4ca84115a78720ea9e771436d16dd22dc195
|
|
BLAKE2b-256 checksum How to use checksums |
66ee53aea0cc1eedc5b5dacc095046c7adf9ae9d1a00e070405ad2b11d79c7ea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2025.
Transparency logRelease files / todoist_tdc-0.3.1-py3-none-any.whl
| Download URL | todoist_tdc-0.3.1-py3-none-any.whl |
|---|---|
| Size | 39.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7ac54f13dcf91c80edaf205d6e8d7a5df53c52c00aa59e16c0af7abea73d369e
|
|
BLAKE2b-256 checksum How to use checksums |
d36ac91850d6c163d50cad6b02e0ad18b819e16c040304e69ffb7ca60627eef2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2025.
Transparency log