Search all guides

Reference · Tools

Todoist integration

Manage tasks, projects, sections, comments, labels, and reminders within the Todoist application.

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.

Works as
Action
Tool name
todoist
Operations
9 — Close , Create , Delete , Get , Get Many and 4 more
Parameters
53
Outputs
Output, Error
Credentials
Todoist OAuth2
Official docs
Todoist docs developer.todoist.com

What you can build with Todoist

  • 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.

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.

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)stringYes—The ID of the task.

Task: Create

ParameterTypeRequiredDefaultDescription
Project ID (project)stringYes—The project ID. Find in Todoist: click on the project, copy from the URL (e.g., https://app.todoist.com/app/project/2302163813).
Label NamesstringNo—Comma-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)stringYes—Task content (the task title/name).
Additional Fields (options)collectionNo{}Optional task fields to send with the create call.
— DescriptionstringNo—A description for the task.
— Due Date TimestringNo—Specific date and time in RFC3339 format in UTC (e.g., 2023-01-15T10:30:00Z).
— Due StringstringNo—Human defined task due date (e.g., “next Monday”, “Tomorrow”). Value is set using local (not UTC) time.
— Due String LocalestringNo—2-letter code specifying language in case due_string is not written in English.
— Section IDstringNo—Section ID to place the task in.
— Parent Task IDstringNo—Parent 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 DatestringNo—Specific date in YYYY-MM-DD format.
— Assignee IDstringNo—Responsible 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 DatestringNo—Specific deadline date in YYYY-MM-DD format.

Task: Delete

ParameterTypeRequiredDefaultDescription
Task ID (taskId)stringYes—The ID of the task.

Task: Get

ParameterTypeRequiredDefaultDescription
Task ID (taskId)stringYes—The 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 IDstringNo—Filter tasks by project ID.
— Section IDstringNo—Filter tasks by section ID.
— LabelstringNo—Filter tasks by label name.
— FilterstringNo—Filter by any supported Todoist filter expression (see https://todoist.com/help/articles/introduction-to-filters-V98wIH).
— LangstringNo—IETF language tag defining what language filter is written in, if different from default English.
— IDsstringNo—A comma-separated list of task IDs to retrieve.
— Parent IDstringNo—Filter tasks by parent task ID.

Task: Move

ParameterTypeRequiredDefaultDescription
Task ID (taskId)stringYes—The ID of the task.
Project ID (project)stringYes—The 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 IDstringNo—The destination section ID. The task becomes the last root task of the section.
— Parent Task IDstringNo—The destination parent task ID. The task becomes the last child of the parent task.

Task: Quick Add

ParameterTypeRequiredDefaultDescription
TextstringYes—Natural 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.
— NotestringNo—The content of the note
— ReminderstringNo—The 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)stringYes—The ID of the task.

Task: Update

ParameterTypeRequiredDefaultDescription
Task ID (taskId)stringYes—The ID of the task.
Update Fields (updateFields)collectionNo{}The task fields to change. Fields you leave out keep their current value.
— ContentstringNo—Task content.
— DescriptionstringNo—A description for the task.
— Due Date TimestringNo—Specific date and time in RFC3339 format in UTC.
— Due StringstringNo—Human defined task due date (e.g., “next Monday”, “Tomorrow”).
— Due String LocalestringNo—2-letter code specifying language in case due_string is not written in English.
— Label NamesstringNo—Comma-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 DatestringNo—Specific date in YYYY-MM-DD format.
— Assignee IDstringNo—Responsible user ID (for shared tasks).
— DurationnumberNo0Positive integer for task duration.
— Duration UnitoptionsNominuteUnit of time for duration.
Options: minute, day
— Deadline DatestringNo—Specific deadline date in YYYY-MM-DD format.

Project: Archive

ParameterTypeRequiredDefaultDescription
Project ID (projectId)stringYes—The project ID.

Project: Create

ParameterTypeRequiredDefaultDescription
Name (name)stringYes—Name of the project.
Additional Fields (projectOptions)collectionNo{}Optional project fields to send with the create call.
— ColoroptionsNo—The 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 IDstringNo—Parent project ID.
— View StyleoptionsNolistThe default view style of the project.
Options: list, board

Project: Delete

ParameterTypeRequiredDefaultDescription
Project ID (projectId)stringYes—The project ID.

Project: Get

ParameterTypeRequiredDefaultDescription
Project ID (projectId)stringYes—The project ID.

Project: Get Collaborators

ParameterTypeRequiredDefaultDescription
Project ID (projectId)stringYes—The 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)stringYes—The project ID.

Project: Update

ParameterTypeRequiredDefaultDescription
Project ID (projectId)stringYes—The project ID.
Update Fields (projectUpdateFields)collectionNo{}The project fields to change. Fields you leave out keep their current value.
— NamestringNo—Name of the project.
— ColoroptionsNo—The 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)stringYes—The project ID to add the section to.
Name (sectionName)stringYes—Name 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 IDstringYes—The section ID.

Section: Get

ParameterTypeRequiredDefaultDescription
Section IDstringYes—The section ID.

Section: Get Many

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

Section: Update

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

Comment: Create

ParameterTypeRequiredDefaultDescription
Task ID (commentTaskId)stringYes—The ID of the task to comment on.
Content (commentContent)stringYes—Comment content.

Comment: Delete

ParameterTypeRequiredDefaultDescription
Comment IDstringYes—The comment ID.

Comment: Get

ParameterTypeRequiredDefaultDescription
Comment IDstringYes—The comment ID.

Comment: Get Many

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

Comment: Update

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

Label: Create

ParameterTypeRequiredDefaultDescription
Name (labelName)stringYes—Name of the label.
Additional Fields (labelOptions)collectionNo{}Optional label fields to send with the create call.
— ColoroptionsNo—The 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 IDstringYes—The label ID.

Label: Get

ParameterTypeRequiredDefaultDescription
Label IDstringYes—The 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 IDstringYes—The label ID.
Update Fields (labelUpdateFields)collectionNo{}The label fields to change. Fields you leave out keep their current value.
— NamestringNo—Name of the label.
— ColoroptionsNo—The 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)stringYes—The 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 RepresentationstringYes—Human-readable date and time. (shown when Due Date Type is natural_language)
DatestringYes—Full-day date in YYYY-MM-DD format. (shown when Due Date Type is full_day)
Date TimestringYes—Date and time in ISO format. (shown when Due Date Type is floating_time, fixed_timezone)
TimezonestringYes—Timezone 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 IDstringNo—User ID to notify (for shared tasks).

Reminder: Delete

ParameterTypeRequiredDefaultDescription
Reminder IDstringYes—The reminder ID.

Reminder: Update

ParameterTypeRequiredDefaultDescription
Reminder IDstringYes—The 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 IDstringNo—User ID to notify (for shared tasks).

All Operations

ParameterTypeRequiredDefaultDescription
Todoist AccountcredentialNo—Connect 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.

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

This tool manages tasks, projects, sections, comments, labels, and reminders in Todoist. It is ideal when you need to create, get, update, or delete any of these items, or perform actions like closing tasks or archiving projects. It produces updated Todoist data or information about Todoist items, such as a list of tasks or project details.

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 Todoist

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 reviewed . Spotted something wrong? Tell us.