Reference · Tools

Todoist

Manage tasks, projects, sections, comments, labels, and reminders in Todoist

Action Productivity v1

The Todoist node manages tasks, projects, sections, comments, labels and reminders through the REST and Sync APIs. A typical build is turning every flagged email into a Todoist task in the right project, with a due date and label already applied.

Node type
Action
Parameters
53
Outputs
Output, Error
Credentials
Todoist OAuth2

Todoist

Manage tasks, projects, sections, comments, labels, and reminders in Todoist

Overview

Todoist is a task management and productivity application. This tool provides full CRUD operations for tasks (create, get, get many, update, delete, close, reopen, move, quick add), projects (create, get, get many, update, delete, archive, unarchive, get collaborators), sections (create, get, get many, update, delete), comments (create, get, get many, update, delete), labels (create, get, get many, update, delete), and reminders (create, update, delete, get many). Uses the Todoist REST API v1 for most operations and the Sync API v9 for task move, quick add, and reminder operations. Supports OAuth2 authentication with automatic token refresh.

Category: Productivity
Tool Name: todoist
Version: 1

Appearance: Icon: si-todoist | Color: #E44332

Node Type

Action — processes input items and produces output

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires Todoist OAuth2 credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Tasktask
Projectproject
Sectionsection
Commentcomment
Labellabel
Reminderreminder

Operations

Task (task)

OperationValueDescription
ClosecloseMark a task complete.
CreatecreateCreate a new task.
DeletedeleteDelete a task.
GetgetRetrieve a single task.
Get ManygetAllRetrieve many tasks.
MovemoveMove a task to another project, section or parent task.
Quick AddquickAddCreate a task from a natural-language phrase.
ReopenreopenReopen a closed task.
UpdateupdateUpdate a task’s fields.

Project (project)

OperationValueDescription
ArchivearchiveArchive a project.
CreatecreateCreate a new project.
DeletedeleteDelete a project.
GetgetRetrieve a single project.
Get CollaboratorsgetCollaboratorsRetrieve the collaborators on a project.
Get ManygetAllRetrieve many projects.
UnarchiveunarchiveRestore an archived project.
UpdateupdateUpdate a project’s fields.

Section (section)

OperationValueDescription
CreatecreateCreate a new section in a project.
DeletedeleteDelete a section.
GetgetRetrieve a single section.
Get ManygetAllRetrieve many sections.
UpdateupdateUpdate a section’s fields.

Comment (comment)

OperationValueDescription
CreatecreateAdd a comment to a task.
DeletedeleteDelete a comment.
GetgetRetrieve a single comment.
Get ManygetAllRetrieve many comments.
UpdateupdateUpdate a comment’s content.

Label (label)

OperationValueDescription
CreatecreateCreate a new label.
DeletedeleteDelete a label.
GetgetRetrieve a single label.
Get ManygetAllRetrieve many labels.
UpdateupdateUpdate a label’s fields.

Reminder (reminder)

OperationValueDescription
CreatecreateAttach a reminder to a task.
DeletedeleteDelete a reminder.
Get ManygetAllRetrieve many reminders.
UpdateupdateUpdate a reminder’s due date or settings.

Parameters

Reminder: Get Many takes no parameters of its own — see All Operations.

Task: Close

ParameterTypeRequiredDefaultDescription
Task ID (taskId)stringYesThe ID of the task.

Task: Create

ParameterTypeRequiredDefaultDescription
Project ID (project)stringYesThe project ID. Find in Todoist: click on the project, copy from the URL (e.g., https://app.todoist.com/app/project/2302163813).
Label NamesstringNoComma-separated list of label names to assign to the task (e.g., “shopping, urgent”). Labels are created automatically if they do not exist.
Content (content)stringYesTask content (the task title/name).
Additional Fields (options)collectionNo{}Optional task fields to send with the create call.
— DescriptionstringNoA description for the task.
— Due Date TimestringNoSpecific date and time in RFC3339 format in UTC (e.g., 2023-01-15T10:30:00Z).
— Due StringstringNoHuman defined task due date (e.g., “next Monday”, “Tomorrow”). Value is set using local (not UTC) time.
— Due String LocalestringNo2-letter code specifying language in case due_string is not written in English.
— Section IDstringNoSection ID to place the task in.
— Parent Task IDstringNoParent task ID to make this task a sub-task.
— PrioritynumberNo1Task priority from 1 (normal) to 4 (urgent).
— OrdernumberNo0Non-zero integer used to sort tasks under the same parent.
— Due DatestringNoSpecific date in YYYY-MM-DD format.
— Assignee IDstringNoResponsible user ID (for shared tasks).
— DurationnumberNo0Positive integer for task duration (must be used with Duration Unit).
— Duration UnitoptionsNominuteUnit of time for duration (must be used with Duration).
Options: minute, day
— Deadline DatestringNoSpecific deadline date in YYYY-MM-DD format.

Task: Delete

ParameterTypeRequiredDefaultDescription
Task ID (taskId)stringYesThe ID of the task.

Task: Get

ParameterTypeRequiredDefaultDescription
Task ID (taskId)stringYesThe ID of the task.

Task: Get Many

ParameterTypeRequiredDefaultDescription
Return All (returnAll)booleanNofalseWhether to return all results or only up to a given limit.
Limit (limit)numberNo50Max number of results to return. (shown when Return All is false)
Filters (filters)collectionNo{}Narrow the tasks that are returned.
— Project IDstringNoFilter tasks by project ID.
— Section IDstringNoFilter tasks by section ID.
— LabelstringNoFilter tasks by label name.
— FilterstringNoFilter by any supported Todoist filter expression (see https://todoist.com/help/articles/introduction-to-filters-V98wIH).
— LangstringNoIETF language tag defining what language filter is written in, if different from default English.
— IDsstringNoA comma-separated list of task IDs to retrieve.
— Parent IDstringNoFilter tasks by parent task ID.

Task: Move

ParameterTypeRequiredDefaultDescription
Task ID (taskId)stringYesThe ID of the task.
Project ID (project)stringYesThe project ID. Find in Todoist: click on the project, copy from the URL (e.g., https://app.todoist.com/app/project/2302163813).
Additional Fields (options)collectionNo{}Optional destination fields for the move.
— Section IDstringNoThe destination section ID. The task becomes the last root task of the section.
— Parent Task IDstringNoThe destination parent task ID. The task becomes the last child of the parent task.

Task: Quick Add

ParameterTypeRequiredDefaultDescription
TextstringYesNatural language text for quick adding a task (e.g., “Buy milk @Grocery #shopping tomorrow”). Can include due date, project (#name), label (@name), assignee (+name), priority (p1-p4), deadline ({in 3 days}), or description (// text).
Additional Fields (options)collectionNo{}Optional fields to send alongside the quick-add text.
— NotestringNoThe content of the note
— ReminderstringNoThe date of the reminder, added in free form text
— Auto ReminderbooleanNofalseWhen enabled, the default reminder will be added to the new item if it has a due date with time set

Task: Reopen

ParameterTypeRequiredDefaultDescription
Task ID (taskId)stringYesThe ID of the task.

Task: Update

ParameterTypeRequiredDefaultDescription
Task ID (taskId)stringYesThe ID of the task.
Update Fields (updateFields)collectionNo{}The task fields to change. Fields you leave out keep their current value.
— ContentstringNoTask content.
— DescriptionstringNoA description for the task.
— Due Date TimestringNoSpecific date and time in RFC3339 format in UTC.
— Due StringstringNoHuman defined task due date (e.g., “next Monday”, “Tomorrow”).
— Due String LocalestringNo2-letter code specifying language in case due_string is not written in English.
— Label NamesstringNoComma-separated list of label names.
— PrioritynumberNo1Task priority from 1 (normal) to 4 (urgent).
— OrdernumberNo0Non-zero integer used to sort tasks under the same parent.
— Due DatestringNoSpecific date in YYYY-MM-DD format.
— Assignee IDstringNoResponsible user ID (for shared tasks).
— DurationnumberNo0Positive integer for task duration.
— Duration UnitoptionsNominuteUnit of time for duration.
Options: minute, day
— Deadline DatestringNoSpecific deadline date in YYYY-MM-DD format.

Project: Archive

ParameterTypeRequiredDefaultDescription
Project ID (projectId)stringYesThe project ID.

Project: Create

ParameterTypeRequiredDefaultDescription
Name (name)stringYesName of the project.
Additional Fields (projectOptions)collectionNo{}Optional project fields to send with the create call.
— ColoroptionsNoThe color of the project.
Options: berry_red, red, orange, yellow, olive_green, lime_green, green, mint_green, teal, sky_blue, light_blue, blue, grape, violet, lavender, magenta, salmon, charcoal, grey, taupe
— Is FavoritebooleanNofalseWhether the project is a favorite.
— Parent IDstringNoParent project ID.
— View StyleoptionsNolistThe default view style of the project.
Options: list, board

Project: Delete

ParameterTypeRequiredDefaultDescription
Project ID (projectId)stringYesThe project ID.

Project: Get

ParameterTypeRequiredDefaultDescription
Project ID (projectId)stringYesThe project ID.

Project: Get Collaborators

ParameterTypeRequiredDefaultDescription
Project ID (projectId)stringYesThe project ID.

Project: Get Many

ParameterTypeRequiredDefaultDescription
Return All (returnAll)booleanNofalseWhether to return all results or only up to a given limit.
Limit (limit)numberNo50Max number of results to return. (shown when Return All is false)

Project: Unarchive

ParameterTypeRequiredDefaultDescription
Project ID (projectId)stringYesThe project ID.

Project: Update

ParameterTypeRequiredDefaultDescription
Project ID (projectId)stringYesThe project ID.
Update Fields (projectUpdateFields)collectionNo{}The project fields to change. Fields you leave out keep their current value.
— NamestringNoName of the project.
— ColoroptionsNoThe color of the project.
Options: berry_red, red, orange, yellow, olive_green, lime_green, green, mint_green, teal, sky_blue, light_blue, blue, grape, violet, lavender, magenta, salmon, charcoal, grey, taupe
— Is FavoritebooleanNofalseWhether the project is a favorite.
— View StyleoptionsNolistThe default view style of the project.
Options: list, board

Section: Create

ParameterTypeRequiredDefaultDescription
Project ID (sectionProject)stringYesThe project ID to add the section to.
Name (sectionName)stringYesName of the section.
Additional Fields (sectionOptions)collectionNo{}Optional section fields to send with the create call.
— OrdernumberNo0The order of the section.

Section: Delete

ParameterTypeRequiredDefaultDescription
Section IDstringYesThe section ID.

Section: Get

ParameterTypeRequiredDefaultDescription
Section IDstringYesThe section ID.

Section: Get Many

ParameterTypeRequiredDefaultDescription
Filters (sectionFilters)collectionNo{}Narrow the sections that are returned.
— Project IDstringNoFilter sections by project ID.

Section: Update

ParameterTypeRequiredDefaultDescription
Section IDstringYesThe section ID.
Update Fields (sectionUpdateFields)collectionNo{}The section fields to change. Fields you leave out keep their current value.
— NamestringNoName of the section.

Comment: Create

ParameterTypeRequiredDefaultDescription
Task ID (commentTaskId)stringYesThe ID of the task to comment on.
Content (commentContent)stringYesComment content.

Comment: Delete

ParameterTypeRequiredDefaultDescription
Comment IDstringYesThe comment ID.

Comment: Get

ParameterTypeRequiredDefaultDescription
Comment IDstringYesThe comment ID.

Comment: Get Many

ParameterTypeRequiredDefaultDescription
Filters (commentFilters)collectionNo{}Narrow the comments that are returned.
— Task IDstringNoFilter comments by task ID.
— Project IDstringNoFilter comments by project ID.

Comment: Update

ParameterTypeRequiredDefaultDescription
Comment IDstringYesThe comment ID.
Update Fields (commentUpdateFields)collectionNo{}The comment fields to change.
— ContentstringNoComment content.

Label: Create

ParameterTypeRequiredDefaultDescription
Name (labelName)stringYesName of the label.
Additional Fields (labelOptions)collectionNo{}Optional label fields to send with the create call.
— ColoroptionsNoThe color of the label.
Options: berry_red, red, orange, yellow, olive_green, lime_green, green, mint_green, teal, sky_blue, light_blue, blue, grape, violet, lavender, magenta, salmon, charcoal, grey, taupe
— OrdernumberNo0Label order.
— Is FavoritebooleanNofalseWhether the label is a favorite.

Label: Delete

ParameterTypeRequiredDefaultDescription
Label IDstringYesThe label ID.

Label: Get

ParameterTypeRequiredDefaultDescription
Label IDstringYesThe label ID.

Label: Get Many

ParameterTypeRequiredDefaultDescription
Return All (returnAll)booleanNofalseWhether to return all results or only up to a given limit.
Limit (limit)numberNo50Max number of results to return. (shown when Return All is false)

Label: Update

ParameterTypeRequiredDefaultDescription
Label IDstringYesThe label ID.
Update Fields (labelUpdateFields)collectionNo{}The label fields to change. Fields you leave out keep their current value.
— NamestringNoName of the label.
— ColoroptionsNoThe color of the label.
Options: berry_red, red, orange, yellow, olive_green, lime_green, green, mint_green, teal, sky_blue, light_blue, blue, grape, violet, lavender, magenta, salmon, charcoal, grey, taupe
— OrdernumberNo0Label order.
— Is FavoritebooleanNofalseWhether the label is a favorite.

Reminder: Create

ParameterTypeRequiredDefaultDescription
Task ID (itemId)stringYesThe ID of the task to attach the reminder to.
Due Date TypeoptionsYesnatural_languageHow to specify when the reminder should trigger.
Options: natural_language, full_day, floating_time, fixed_timezone
Natural Language RepresentationstringYesHuman-readable date and time. (shown when Due Date Type is natural_language)
DatestringYesFull-day date in YYYY-MM-DD format. (shown when Due Date Type is full_day)
Date TimestringYesDate and time in ISO format. (shown when Due Date Type is floating_time, fixed_timezone)
TimezonestringYesTimezone for the fixed timezone date. (shown when Due Date Type is fixed_timezone)
Additional Fields (reminderOptions)collectionNo{}Optional reminder fields to send with the create call.
— TypeoptionsNoabsoluteThe reminder type.
Options: absolute, relative
— Minute OffsetnumberNo0Minutes before the task due date.
— Notify User IDstringNoUser ID to notify (for shared tasks).

Reminder: Delete

ParameterTypeRequiredDefaultDescription
Reminder IDstringYesThe reminder ID.

Reminder: Update

ParameterTypeRequiredDefaultDescription
Reminder IDstringYesThe reminder ID.
Update Fields (reminderUpdateFields)collectionNo{}The reminder fields to change. Fields you leave out keep their current value.
— DuejsonNo{}Due date object with fields: string (natural language), date (YYYY-MM-DD), datetime (ISO), timezone.
— TypeoptionsNoabsoluteThe reminder type.
Options: absolute, relative
— Minute OffsetnumberNo0Minutes before the task due date.
— Notify User IDstringNoUser ID to notify (for shared tasks).

All Operations

ParameterTypeRequiredDefaultDescription
Todoist AccountcredentialNoConnect your Todoist account via OAuth2.
Max ConcurrencynumberNo10Maximum number of items to process concurrently.

Output Data

One output item per input item — this node never fans out, whatever the operation. The rest of the item JSON passes through unchanged and binary data is forwarded.

What the response adds to the item depends on what the operation returns:

OperationsWhat lands on the item
Task: Create, Task: Get, Task: Quick Add, Project: Create, Project: Get, Section: Create, Section: Get, Comment: Create, Comment: Get, Label: Create, Label: GetThe returned record’s own fields, merged in at the top level of the item JSON.
Task: Get Many, Project: Get Many, Project: Get Collaborators, Section: Get Many, Comment: Get Many, Label: Get Many, Reminder: Get Many_todoistResults — the whole array of records, nested on the item — plus _todoistResultCount, its length. An empty result set gives _todoistResults: [] and _todoistResultCount: 0.
Task: Update, Task: Delete, Task: Close, Task: Reopen, Task: Move, Project: Update, Project: Delete, Project: Archive, Project: Unarchive, Section: Update, Section: Delete, Comment: Update, Comment: Delete, Label: Update, Label: Delete, Reminder: Create, Reminder: Update, Reminder: Deletesuccess: true. These calls return no record of their own.

Anything that comes back in a shape other than a record or a list also lands as success: true.

List operations do not produce one item per record. Add a Split Out node on _todoistResults when you want downstream nodes to see one record at a time.

Reference the result downstream by expression — {{ $json._todoistResultCount }} after a list operation, or the record’s own fields such as {{ $json.id }} after a single-record operation.

Usage Examples

  • Create a new task in Todoist with a due date
  • Get all tasks from a Todoist project
  • Move a task to a different section
  • Create a project in Todoist
  • Add a comment to a task
  • Close a completed task
  • Quick add a task using natural language

Example Configuration

Create a task with labels, a due string and a duration:

{
  "type": "todoist",
  "parameters": {
    "resource": "task",
    "operation": "create",
    "project": "2302163813",
    "content": "Review quarterly reports",
    "labels": "work, urgent",
    "options": {
      "description": "Review Q1 financial reports and prepare summary",
      "dueString": "next Friday at 2pm",
      "priority": 2,
      "duration": 120,
      "durationUnit": "minute"
    }
  }
}

Create a task from a natural-language phrase:

{
  "type": "todoist",
  "parameters": {
    "resource": "task",
    "operation": "quickAdd",
    "text": "Buy groceries @Errands #shopping tomorrow at 10am",
    "options": {
      "note": "Don't forget milk and bread",
      "reminder": "tomorrow at 9am",
      "auto_reminder": true
    }
  }
}

Read a page of tasks that are due today or overdue in one project:

{
  "type": "todoist",
  "parameters": {
    "resource": "task",
    "operation": "getAll",
    "returnAll": false,
    "limit": 50,
    "filters": {
      "projectId": "2302163813",
      "filter": "today | overdue",
      "lang": "en"
    }
  }
}

Update a task’s content, priority, labels and due date:

{
  "type": "todoist",
  "parameters": {
    "resource": "task",
    "operation": "update",
    "taskId": "7654321",
    "updateFields": {
      "content": "Updated task name",
      "priority": 3,
      "labels": "urgent, high-priority",
      "dueString": "next Monday"
    }
  }
}

Move a task into another project’s section:

{
  "type": "todoist",
  "parameters": {
    "resource": "task",
    "operation": "move",
    "taskId": "7654321",
    "project": "2302163814",
    "options": {
      "section": "section_id_123"
    }
  }
}

Create a board-style project:

{
  "type": "todoist",
  "parameters": {
    "resource": "project",
    "operation": "create",
    "name": "Q1 Marketing Campaign",
    "projectOptions": {
      "color": "blue",
      "is_favorite": true,
      "view_style": "board"
    }
  }
}

Rename a project and change its color:

{
  "type": "todoist",
  "parameters": {
    "resource": "project",
    "operation": "update",
    "projectId": "2302163813",
    "projectUpdateFields": {
      "name": "Q1 Marketing Campaign - Updated",
      "color": "green",
      "is_favorite": false
    }
  }
}

Add a section to a project:

{
  "type": "todoist",
  "parameters": {
    "resource": "section",
    "operation": "create",
    "sectionProject": "2302163813",
    "sectionName": "In Progress",
    "sectionOptions": {
      "order": 1
    }
  }
}

Comment on a task:

{
  "type": "todoist",
  "parameters": {
    "resource": "comment",
    "operation": "create",
    "commentTaskId": "7654321",
    "commentContent": "Great progress on this task! Let's review tomorrow."
  }
}

Read the comments on one task:

{
  "type": "todoist",
  "parameters": {
    "resource": "comment",
    "operation": "getAll",
    "commentFilters": {
      "task_id": "7654321"
    }
  }
}

Create a favorite label:

{
  "type": "todoist",
  "parameters": {
    "resource": "label",
    "operation": "create",
    "labelName": "High Priority",
    "labelOptions": {
      "color": "red",
      "is_favorite": true,
      "order": 1
    }
  }
}

Attach a reminder described in plain English:

{
  "type": "todoist",
  "parameters": {
    "resource": "reminder",
    "operation": "create",
    "itemId": "7654321",
    "dueDateType": "natural_language",
    "natural_language_representation": "tomorrow at 9am",
    "reminderOptions": {
      "type": "absolute",
      "minute_offset": 0
    }
  }
}

Attach a reminder pinned to a specific timezone:

{
  "type": "todoist",
  "parameters": {
    "resource": "reminder",
    "operation": "create",
    "itemId": "7654321",
    "dueDateType": "fixed_timezone",
    "datetime": "2024-01-15T09:00:00",
    "timezone": "America/New_York",
    "reminderOptions": {
      "type": "absolute"
    }
  }
}

Create a recurring daily task:

{
  "type": "todoist",
  "parameters": {
    "resource": "task",
    "operation": "create",
    "project": "2302163813",
    "content": "Daily standup meeting",
    "options": {
      "dueString": "every day at 9am",
      "priority": 2
    }
  }
}

Pull every task in a project that is due today:

{
  "type": "todoist",
  "parameters": {
    "resource": "task",
    "operation": "getAll",
    "returnAll": true,
    "filters": {
      "projectId": "2302163813",
      "filter": "today"
    }
  }
}

Pull every task carrying one label:

{
  "type": "todoist",
  "parameters": {
    "resource": "task",
    "operation": "getAll",
    "returnAll": true,
    "filters": {
      "labelId": "urgent"
    }
  }
}

Error Handling

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes failed items to Error output port

Tips

Todoist tool for managing tasks, projects, sections, comments, labels, and reminders via the Todoist REST and Sync APIs.

Frequently asked questions

What can it manage besides tasks?

Projects, sections, comments, labels and reminders — enough to organise work as well as create it.

Which API does it use?

Both the REST and Sync APIs depending on the operation, so you do not have to choose between them yourself.

Is it useful for inbox-to-task automation?

Yes, that is the classic pattern: something arrives elsewhere and becomes a task with the right project, label and due date without manual entry.

Which credential does it need?

A Todoist OAuth2 credential.

Build with the Todoist node

Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Todoist OAuth2 credentials first.

Open BusyBot

Last updated . Spotted something wrong? Tell us.