Todoist integration | Zervanor
← All connectors

Todoist

Also an agent tool
productivity

Todoist integration on the unified REST API v1 (https://api.todoist.com/api/v1). Core task-management surface: Projects CRUD + archive/unarchive/move, Sections CRUD, Tasks CRUD + close/reopen/move, Comments (notes) CRUD, Labels CRUD + shared-label rename/remove, and the authenticated User identity endpoint. OAuth 2.0 authorization-code flow (comma-separated scopes) presented as a standard Authorization: Bearer token (same handler serves OAuth2 access tokens and personal API tokens). Real signed webhook system: X-Todoist-Hmac-SHA256 = base64(HMAC-SHA256(raw_body, app client_secret)) -> generic_hmac handler, 20 event types discriminated by the payload event_name field. Sync batch endpoint, binary uploads/backups/template-export, and the extended Sync-only groups (reminders, filters, folders, workspaces, activity, colors) are deferred for v1 (see compatibility todoist-05 + api-reference deferred notes).

35 actions · 20 triggers

The Todoist integration lets you connect Todoist to your automations with 35 actions and 20 triggers — and every action is also a tool an AI agent can call. Examples: Get User, Get Projects, Create Project, Get Project, Update Project. No blank-canvas wiring — connect it and use it in your workflows.

Every action below is also a tool an AI agent can call — the same pack powers your workflows and your agents.

Triggers 20

Events in Todoist that can start a workflow.

webhook

Task Added

Fires when a task is created (event_name item:added). Discriminated by the payload event_name field.

webhook

Task Updated

Fires when a task is updated (event_name item:updated). Discriminated by the payload event_name field.

webhook

Task Completed

Fires when a task is completed (event_name item:completed). Discriminated by the payload event_name field.

webhook

Task Uncompleted

Fires when a completed task is reopened (event_name item:uncompleted). Discriminated by the payload event_name field.

webhook

Task Deleted

Fires when a task is deleted (event_name item:deleted). Discriminated by the payload event_name field.

webhook

Project Added

Fires when a project is created (event_name project:added). Discriminated by the payload event_name field.

webhook

Project Updated

Fires when a project is updated (event_name project:updated). Discriminated by the payload event_name field.

webhook

Project Deleted

Fires when a project is deleted (event_name project:deleted). Discriminated by the payload event_name field.

webhook

Project Archived

Fires when a project is archived (event_name project:archived). Discriminated by the payload event_name field.

webhook

Project Unarchived

Fires when a project is unarchived (event_name project:unarchived). Discriminated by the payload event_name field.

webhook

Comment Added

Fires when a comment is added (event_name note:added). Discriminated by the payload event_name field.

webhook

Comment Updated

Fires when a comment is updated (event_name note:updated). Discriminated by the payload event_name field.

webhook

Comment Deleted

Fires when a comment is deleted (event_name note:deleted). Discriminated by the payload event_name field.

webhook

Label Added

Fires when a label is created (event_name label:added). Discriminated by the payload event_name field.

webhook

Label Updated

Fires when a label is updated (event_name label:updated). Discriminated by the payload event_name field.

webhook

Label Deleted

Fires when a label is deleted (event_name label:deleted). Discriminated by the payload event_name field.

webhook

Filter Added

Fires when a filter is created (event_name filter:added). Discriminated by the payload event_name field.

webhook

Filter Updated

Fires when a filter is updated (event_name filter:updated). Discriminated by the payload event_name field.

webhook

Filter Deleted

Fires when a filter is deleted (event_name filter:deleted). Discriminated by the payload event_name field.

webhook

Reminder Fired

Fires when a reminder triggers (event_name reminder:fired). Discriminated by the payload event_name field.

Actions 35

What Zervanor can do in Todoist.

Labels8

GET

Get Labels

Get personal labels. GET /labels.

POST

Create Label

Create a personal label. POST /labels.

GET

Get Label

Get a single personal label by id. GET /labels/{label_id}.

POST

Update Label

Update a personal label by id. POST /labels/{label_id}.

DELETE

Delete Label

Delete a personal label by id. DELETE /labels/{label_id}. Returns 204 No Content.

GET

Get Shared Labels

Get all shared (string) labels in use. GET /labels/shared.

POST

Rename Shared Label

Rename a shared label across all tasks. POST /labels/shared/rename.

POST

Remove Shared Label

Remove a shared label from all tasks. POST /labels/shared/remove.

Projects8

GET

Get Projects

List projects (cursor-paginated). GET /projects.

POST

Create Project

Create a project. POST /projects. Returns the created project with the new id at top-level 'id'.

GET

Get Project

Get a single project by id. GET /projects/{project_id}.

POST

Update Project

Update a project by id. POST /projects/{project_id}.

DELETE

Delete Project

Delete a project by id. DELETE /projects/{project_id}. Returns 204 No Content.

POST

Archive Project

Archive a project. POST /projects/{project_id}/archive.

POST

Unarchive Project

Unarchive a project. POST /projects/{project_id}/unarchive.

POST

Move Project

Move (reparent) a project. POST /projects/{project_id}/move.

Tasks8

GET

Get Tasks

Get active tasks, optionally filtered. GET /tasks.

POST

Create Task

Create a task. POST /tasks. Returns the created task with the new id at top-level 'id'.

GET

Get Task

Get a single task by id. GET /tasks/{task_id}.

POST

Update Task

Update a task by id. POST /tasks/{task_id}.

DELETE

Delete Task

Delete a task by id. DELETE /tasks/{task_id}. Returns 204 No Content.

POST

Close Task

Close (complete) a task. POST /tasks/{task_id}/close. Returns 204 No Content.

POST

Reopen Task

Reopen a closed task. POST /tasks/{task_id}/reopen. Returns 204 No Content.

POST

Move Task

Move a task to a different project, section, or parent. POST /tasks/{task_id}/move.

Comments5

GET

Get Comments

Get comments for a task or project. GET /comments.

POST

Create Comment

Create a comment on a task or project. POST /comments.

GET

Get Comment

Get a single comment by id. GET /comments/{comment_id}.

POST

Update Comment

Update a comment by id. POST /comments/{comment_id}.

DELETE

Delete Comment

Delete a comment by id. DELETE /comments/{comment_id}. Returns 204 No Content.

Sections5

GET

Get Sections

Get sections, optionally filtered by project. GET /sections.

POST

Create Section

Add a section to a project. POST /sections.

GET

Get Section

Get a single section by id. GET /sections/{section_id}.

POST

Update Section

Update a section by id. POST /sections/{section_id}.

DELETE

Delete Section

Delete a section by id. DELETE /sections/{section_id}. Returns 204 No Content.

User1

GET

Get User

Get the authenticated user (identity / connectivity check). GET /user.

Automations using Todoist

Build your own automation with Todoist in the visual builder.

Frequently asked questions

What can I automate with Todoist?

35 actions are available — for example: Get User, Get Projects, Create Project, Get Project, Update Project, and more.

Which Todoist events can start a workflow?

20 triggers — for example: Task Added, Task Updated, Task Completed, Task Uncompleted.

Can Todoist be used as an AI agent tool?

Yes. Every Todoist action automatically becomes a tool an AI agent can call — the same pack powers both your workflows and your agents.

How is the Todoist integration modelled?

Todoist is modelled as a versioned connector pack, and the steps that need reasoning fall to first-party agents hosted in the same runtime as the workflows.