todoist
Manage your Todoist tasks from the terminal
TLDR
Add a task
Add a high priority task with a label, project, and due date
Add a high priority task with a label, project, and due date in quick mode
List all tasks with a header and color
List all high priority tasks
List today's tasks with high priority that have the specified label
SYNOPSIS
todoist [OPTIONS] COMMAND [ARGS]...
Common Commands:
add <content> [OPTIONS] - Add a new task.
list [OPTIONS] - List tasks.
show <task_id> - Show details of a specific task.
done <task_id>... - Mark tasks as complete.
edit <task_id> [OPTIONS] - Edit an existing task.
projects - List all projects.
labels - List all labels.
sync - Synchronize local data with Todoist.
PARAMETERS
--version
Show the installed version of todoist-cli and exit.
--help
Display help message for the todoist command or a specific subcommand.
--config
Specify an alternative path for the configuration file (default: ~/.config/todoist/config.ini).
--no-sync
Prevent automatic synchronization with the Todoist API before executing the command.
The text content for a new task when using the 'add' subcommand.
--project
Specify the project for a new or existing task by name or ID. Used with 'add' or 'edit'.
--due
Set a due date for a task (e.g., 'today', 'tomorrow', 'next monday', 'every 2 weeks'). Used with 'add' or 'edit'.
--label
Assign a label to a task by name or ID. Can be used multiple times. Used with 'add' or 'edit'.
--priority
Set task priority (1: highest, 4: lowest). Used with 'add' or 'edit'.
--filter
Filter tasks based on Todoist query syntax (e.g., 'today & p1'). Used with 'list'.
--show-completed
Include completed tasks in the listing. Used with 'list'.
DESCRIPTION
The todoist command, primarily referring to the community-developed
todoist-cli Python package, provides a powerful and lightweight command-line interface for interacting with the Todoist task management service directly from your Linux terminal. It allows users to manage their tasks, projects, labels, and filters without needing to open the web application or a dedicated desktop client. This tool is invaluable for users who prefer terminal-centric workflows, wish to integrate task management into scripts, or need quick access to their Todoist data. It supports core functionalities like adding new tasks, listing existing tasks with various filters, marking tasks as complete, and managing task properties such as due dates, priorities, and assigned projects. The todoist command communicates with the official Todoist API, requiring an API token for authentication, and it includes features for local data synchronization to enhance performance and offline access. Its modular design, based on a series of subcommands, makes it versatile for a wide range of task management operations.
CAVEATS
The todoist command is typically implemented by the community-developed
todoist-cli package, not an official Todoist product. It requires Python and
pip for installation. Users must obtain a personal API token from their Todoist account settings for authentication, as the command interacts directly with the Todoist API. Be aware of Todoist API rate limits, though typical usage is unlikely to hit them. While comprehensive, this CLI client might not support every niche feature of the Todoist web or mobile applications, as its functionality is dependent on the public Todoist API and the developer's implementation.
AUTHENTICATION
To use the todoist command, you need to set up authentication. Obtain your Todoist API token from your Todoist account settings (Integrations -> Developer). Then, run todoist config and paste your token when prompted. This token is stored in
~/.config/todoist/config.ini.
SYNCHRONIZATION
The command maintains a local cache of your Todoist data for faster access. Before most commands, it automatically performs a synchronization with the Todoist API. You can manually force a sync using the todoist sync command. To prevent automatic sync for a specific command, use the
--no-sync global option.
HISTORY
The todoist-cli, which is the most common implementation of the todoist command on Linux, was primarily developed by Sean Schaaf (schaabs) and released as an open-source project on GitHub. Its development began in the mid-to-late 2010s, providing a much-requested command-line interface for Todoist users. Since its inception, it has seen continuous development, adapting to changes in the Todoist API and incorporating features based on community feedback and contributions. It has become a de facto standard for command-line Todoist interaction due to its robustness and active maintenance.
SEE ALSO
todotxt(1), curl(1), remind(1)