- Home
- Resources
- Integrations
- Todoist
Todoist n8n integrationAutomate Todoist with n8n.
A task list saves time only when something else fills it. The Todoist n8n integration opens 36 operations spread over 6 resources, from adding a task by writing one sentence to exporting a whole project. Todoist has no trigger node, so the workflow starts on a Schedule or a Webhook.
Verified Trustpilot reviews · AI, automation & growth agency
What can the Todoist n8n integration actually automate?
The Todoist node ships with n8n and talks to the Todoist API for you: it creates, reads, updates, moves and closes items in the account behind the credential, the connection record you save once in n8n. Six resources are covered, 36 operations sit under them, so most of what a team does by hand in the app has an equivalent step inside a workflow, meaning a chain of automated steps that runs without anyone clicking.
Three shapes cover most of what gets built. The first is an intake queue that fills itself. A form reply or an inbound message reaches n8n, task.quickAdd reads one line of text, and the task lands in the right project with its label and its due date already set. Nobody retypes anything, and the request stops living in a mailbox.
The second is the morning digest. task.getAll with Return All turned on returns every task matching a filter, a formatting step lines them up, and the summary goes out to Slack as a single message. Deadlines become readable without opening the app, which is the point for teams that report on due dates rather than on activity.
The third is the mirror. project.getAll and task.getAll read the account at a fixed interval, then task.create or task.update write back what changed elsewhere, often in Notion for teams that document in one place and execute in another, or against Google Calendar when due dates have to sit next to meetings.
The node stops at 6 resources. Any Todoist API endpoint it does not expose is still reachable with the HTTP Request node, which reuses the same credential through its predefined authentication, so there is no second token to keep track of. That is the honest fallback, and it costs one node instead of a custom integration.
Two limits shape every design here. Todoist has no trigger node in n8n, so a run starts on a Schedule Trigger at a fixed interval, on a Webhook node called by another service (a URL that service calls when something happens on its side), or on the trigger of another tool in the same workflow. And identifiers rule everything: projects, sections and labels are picked from a list or passed as IDs, which is why most flows read before they write. The n8n training drills that reflex on a working automation, and the n8n review looks at where the platform fits.
How do you connect Todoist to n8n?
- 01
Copy the API token from Todoist
In Todoist, open Settings, then Integrations, and select the Developer tab. The API token sits there, ready to copy. It is the only value the API key method needs, which makes it the shortest path to a working node. Keep the tab open: the token goes straight into n8n in the next step, and it is tied to the account it came from.
- 02
Create the Todoist credential in n8n
In n8n, open the Credentials menu, create a Todoist credential and paste the token into the API Key field. A credential is set up once and reused everywhere: every Todoist node in every workflow picks it from a dropdown, and rotating the token later means editing one record instead of visiting each node. The same credential also serves the HTTP Request node.
- 03
Or set up OAuth2 on a self-hosted instance
OAuth2 is documented for self-hosting. Open the Todoist App Management Console, select Create a new app, give it a name such as
n8n integration, then create it. Copy the OAuth Redirect URL that n8n displays into the OAuth redirect URL field of the app, and bring the Client ID and the Client Secret back into the n8n credential.
What the Todoist node can do, operation by operation
The Todoist node exposes 36 operations across 6 resources. For each one: the node as you configure it in n8n, the required fields, and our field notes.
| Resource | Create | Get | Get Many | Update | Delete | Archive | Close | Get Collaborators | Move | Quick Add | Reopen | Unarchive |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Task | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||
| Project | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
| Section | ✓ | ✓ | ✓ | ✓ | ✓ | |||||||
| Comment | ✓ | ✓ | ✓ | ✓ | ✓ | |||||||
| Label | ✓ | ✓ | ✓ | ✓ | ✓ | |||||||
| Reminder | ✓ | ✓ | ✓ | ✓ |
Operations index
Task
9 operationsClose a task
task.closeWhat you see in n8n
Notes & use cases
Closing a task from a workflow does what ticking the checkbox does in the app: the task leaves the active list and stops showing up in filters.
Key parameters
- Task ID: the identifier of the task to close, usually carried over from an earlier node as
{{ $json.id }}.
Create a task
task.createWhat you see in n8n
Notes & use cases
The structured way to add work: every field is set explicitly instead of being read from a sentence, which keeps the result predictable when the data comes from another system.
Key parameters
- Project Name or ID: the destination project, chosen from the list or given as an ID.
- Content: the task text itself.
- Additional Fields: 13 optional fields, among them Due String (a due date written in plain words, read in local time), Due Date in
YYYY-MM-DD, Priority from 1 (normal) to 4 (urgent) and Assignee ID for a shared task.
Delete a task
task.deleteWhat you see in n8n
Notes & use cases
Deletion is permanent and the node has no undo operation, so it belongs in cleanup flows rather than in day-to-day routing.
Key parameters
- Task ID: the task to remove, often the identifier stored when the workflow created it.
Get a task
task.getWhat you see in n8n
Notes & use cases
A single task comes back with its fields, which is how a workflow checks the current state before deciding what to do next.
Key parameters
- Task ID: the identifier of the task to read, often pulled from a message or a database row as
{{ $json.taskId }}.
Get many tasks
task.getAllWhat you see in n8n
Notes & use cases
This is the reporting operation of the node: one call, every task that matches, ready to be counted, formatted or exported.
Key parameters
- Return All: on, n8n walks the pages of the API and brings back everything; off, Limit caps how many tasks come back.
- Filters: Filter takes any supported Todoist filter, while Project Name or ID, Section Name or ID, Label Name or ID and IDs (a comma separated list) narrow the result further.
- Lang: the language the filter is written in, when it is not English.
Move a task
task.moveWhat you see in n8n
Notes & use cases
Moving leaves the content alone: same task, same identifier, new project, and a new section inside it when needed.
Key parameters
- Task ID: the task to move.
- Project Name or ID: the destination project, required even when only the section changes.
- Section Name or ID: optional, the section the task lands in.
Quick add a task
task.quickAddWhat you see in n8n
Notes & use cases
Quick Add reads natural language the way the app does, so one written sentence becomes a complete task.
Key parameters
- Text: the sentence to parse. The due date is written in free form, a project starts with
#, a label with@, an assignee with+, a priority reads asp1, a deadline sits between{}, and everything after//becomes the description. - Additional Fields: Note adds the content of a note, Reminder takes a date in free form text, and Auto Reminder adds the default reminder when the due date has a time.
Reopen a task
task.reopenWhat you see in n8n
Notes & use cases
The mirror of Close: a completed task returns to the active list and shows up again in filters and digests.
Key parameters
- Task ID: the closed task to bring back.
Update a task
task.updateWhat you see in n8n
Notes & use cases
Only the fields you fill in are sent, so a workflow can push a new due date or a new priority without rewriting the task.
Key parameters
- Task ID: the task to edit.
- Update Fields: Content and Description for the text, Due String, Due Date or Due Date Time for the timing, plus Priority, Label Names, Assignee ID and Deadline Date in
YYYY-MM-DD.
Project
8 operationsArchive a project
project.archiveWhat you see in n8n
Notes & use cases
Archiving takes the project out of the active list without deleting anything it holds. It is the end of engagement gesture.
Key parameters
- Project ID: the project to archive, accepted as a string or as a number.
Create a project
project.createWhat you see in n8n
Notes & use cases
Every client, campaign or sprint can get its own container, created by the workflow with the same naming rule each time.
Key parameters
- Name: the name of the project.
- Additional Fields: Color picks from the Todoist palette (
berry_red,teal,lavenderand the rest), Parent ID nests it under an existing project, Is Favorite pins it, and View Style opens it aslistorboard.
Delete a project
project.deleteWhat you see in n8n
Notes & use cases
Deleting a project cannot be undone from the node: no operation brings it back, and nothing in n8n keeps a copy of what was inside. The step is better placed behind a human approval than in an automatic branch.
Key parameters
- Project ID: the project to delete, given as a string or as a number.
Get a project
project.getWhat you see in n8n
Notes & use cases
Turning an identifier into a readable record is the job here: one project in, its data out.
Key parameters
- Project ID: the project to read, as a string or as a number.
Get project collaborators
project.getCollaboratorsWhat you see in n8n
Notes & use cases
The people who share a project come back here, and nowhere else in the node. It is the only operation that answers who, rather than what.
Key parameters
- Project ID: the shared project to inspect, as a string or as a number.
Get many projects
project.getAllWhat you see in n8n
Notes & use cases
One call, every project in the account. The operation takes no parameter at all: no filter, no pagination setting, nothing to configure, so sorting, counting and filtering all happen in the next node of the workflow.
Unarchive a project
project.unarchiveWhat you see in n8n
Notes & use cases
An archived project comes back among the active ones. This is the counterpart of Archive and the quickest way to reopen work that was closed too early.
Key parameters
- Project ID: the archived project to restore.
Update a project
project.updateWhat you see in n8n
Notes & use cases
Renaming, recoloring or pinning a project happens through this operation, and only the fields you fill in travel.
Key parameters
- Project ID: the project to edit.
- Update Fields: Name, Color, Is Favorite and View Style (
listorboard).
Section
5 operationsCreate a section
section.createWhat you see in n8n
Notes & use cases
Sections split a project into stages, and creating them from a workflow gives every new project the same layout.
Key parameters
- Project Name or ID: the project the section is added to.
- Name: the name of the section.
- Additional Fields: Order sets where the section sits among the others.
Delete a section
section.deleteWhat you see in n8n
Notes & use cases
Removing a section changes the structure of a project, so the operation tends to clean up a template rather than run every day.
Key parameters
- Section ID: the section to delete, usually read from Get many sections earlier in the run.
Get a section
section.getWhat you see in n8n
Notes & use cases
Confirming that a section identifier still points to something is the practical use of this read, and the returned record gives the next node its name.
Key parameters
- Section ID: the section to read.
Get many sections
section.getAllWhat you see in n8n
Notes & use cases
Sections come back as a list, across the account or inside a single project, which gives a workflow the map it needs before it moves anything.
Key parameters
- Filters: Project Name or ID restricts the list to one project, chosen from the list or passed through an expression.
Update a section
section.updateWhat you see in n8n
Notes & use cases
The node exposes a single editable field on a section, and that is its name. Nothing else about a section can be changed from a workflow.
Key parameters
- Section ID: the section to rename.
- Update Fields: Name, the new section name.
Comment
5 operationsCreate a comment
comment.createWhat you see in n8n
Notes & use cases
Posts a comment on a task that already exists in Todoist and returns that comment with an identifier of its own.
Key parameters
- Task ID: the task the comment lands on, almost always mapped from an earlier node with an expression, the n8n syntax that pulls a value out of the incoming item, such as
{{ $json.id }}. - Content: the text of the comment, usually assembled from the data that came in (an order number, a form answer).
Delete a comment
comment.deleteWhat you see in n8n
Notes & use cases
Removes one comment for good. The node answers with a confirmation and not with the text it just erased, so anything worth keeping gets read first, with Get a comment.
Key parameters
- Comment ID: the identifier of the comment itself, not the one of the task it hangs under. It comes from Get many comments, or from the step that wrote the comment earlier in the same execution.
Get a comment
comment.getWhat you see in n8n
Notes & use cases
Fetches one precise comment from its identifier and hands the content to the nodes that follow.
Key parameters
- Comment ID: the identifier of the comment to read. Chain the operation after Get many comments when the workflow has to find the right one first.
Get many comments
comment.getAllWhat you see in n8n
Notes & use cases
Returns a list of comments instead of a single one, and one of the two filters below sets its scope: a single task, or every comment in a project.
Key parameters
- Task ID: inside Filters, keeps only the comments attached to one task.
- Project ID: inside Filters, widens the read to every comment in a project.
Update a comment
comment.updateWhat you see in n8n
Notes & use cases
Replaces the text of a comment that is already published. A task reporting on the same job three times a day stays readable, because the status lives in one comment rather than in a stack of them.
Key parameters
- Comment ID: the comment to rewrite, kept from the execution that created it.
- Content: inside Update Fields, the new text. It takes the place of the old one, so the workflow sends the complete line and not only the part that moved.
Label
5 operationsCreate a label
label.createWhat you see in n8n
Notes & use cases
Adds a label to the Todoist account and returns the identifier that the later steps will reuse.
Key parameters
- Name: the name of the label, the only required field.
- Color: inside Additional Fields, a closed list of named values such as
sky_blue,olive_greenormagenta. A color gets picked from the list, never typed as a hex code. - Order: where the label sits in the list; Is Favorite marks it as a favorite.
Delete a label
label.deleteWhat you see in n8n
Notes & use cases
Drops a label from the account. The call has no way back: recovering the label means creating it again.
Key parameters
- Label ID: the identifier of the label, the one Get many labels returns. The name alone will not do.
Get a label
label.getWhat you see in n8n
Notes & use cases
Reads one label and returns the state Todoist holds for it.
Key parameters
- Label ID: the identifier of the label being looked up, stored by the step that created it or taken from a list read.
Get many labels
label.getAllWhat you see in n8n
Notes & use cases
Lists every label in the account in one call, with nothing to set up first. That is how a workflow works on stable identifiers instead of trusting a name that somebody may have changed since.
Update a label
label.updateWhat you see in n8n
Notes & use cases
Edits a label in place. Only the fields added under Update Fields travel to Todoist, so changing a color leaves the name untouched.
Key parameters
- Label ID: the label concerned.
- Name: its new name.
- Color: one of the values in the list,
redorlavenderfor instance, when the meaning of the label changes. - Order and Is Favorite: move the label up the list or put it in the favorites.
Reminder
4 operationsCreate a reminder
reminder.createWhat you see in n8n
Notes & use cases
Attaches a reminder to an existing task so Todoist speaks up at the right moment.
Key parameters
- Task ID: the task carrying the reminder.
- Due Date Type: how the moment is written, each choice opening its own field:
natural_languagewith Natural Language Representation (tomorrow 2pm),full_daywith Date inYYYY-MM-DD,floating_timewith Date Time and no timezone,fixed_timezonewith Timezone likeAmerica/New_York. - Minute Offset: under Additional Fields, fires a
relativereminder that many minutes before the due date; Notify User ID points it at one person on a shared task.
Delete a reminder
reminder.deleteWhat you see in n8n
Notes & use cases
Cancels a reminder without touching the task: the task stays, the notification goes away.
Key parameters
- Reminder ID: the identifier of the reminder, returned by Get many reminders or by the step that set it up.
Get many reminders
reminder.getAllWhat you see in n8n
Notes & use cases
Brings back every reminder the account holds, with no parameter to fill in first. The node offers no filter either, so the sorting and the picking happen in the nodes that follow.
Update a reminder
reminder.updateWhat you see in n8n
Notes & use cases
Moves or retunes a reminder that is already in place, rather than deleting it and creating another one at the risk of losing the link to the task.
Key parameters
- Reminder ID: the reminder being edited.
- Due: inside Update Fields, holds the new moment at which it should fire.
- Type and Minute Offset: switch between
absoluteandrelative, or change how many minutes before the task due date it goes off; Notify User ID passes it to somebody else.
Need help automating Todoist with n8n?
A person reads every message.
Questions that come up before building
01Is the Todoist n8n integration free?
02What credentials does the Todoist node need?
03What are the limits of the Todoist node in n8n?
04Does Todoist have a trigger node in n8n?
05n8n or Make for Todoist?
Get our weekly integration tips.
No spam. Unsubscribe anytime.



