> ## Documentation Index
> Fetch the complete documentation index at: https://docs.atako.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Todoist

> Connect Todoist to your Atako agents — 9 read and 7 write actions.

Let your agents manage your Todoist to-dos — read projects, sections, labels and tasks (including Todoist filter queries), create, update, complete and reopen tasks, and add projects, sections and comments.

## Connection

* **Authentication**: API key (Personal API token).

<Note>
  Log in to the Todoist web app (todoist.com) → click your avatar at the top-left → Settings → Integrations → Developer tab → Copy API token. The token acts with your full Todoist account — there are no scopes to choose. "Issue a new API token" on the same tab revokes the old one.

  See [Todoist's documentation](https://www.todoist.com/help/articles/find-your-api-token-Jpzx9IIlB).
</Note>

## Read actions (9)

| Action                       | Description                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `filter_tasks`               | List active tasks matching a Todoist filter query, e.g. "today \| overdue", "p1 & #Work", "@waiting", "due before: next week". Arguments: query (string, required, max 1024 chars); lang (string, IETF tag of the language the query is written in, e.g. "fr", when not English); cursor, limit (1-200).                                                                                                                                           |
| `get_task`                   | Retrieve one active task: content, description, project, section, labels, priority, due date, deadline, duration and assignee.                                                                                                                                                                                                                                                                                                                     |
| `list_comments`              | List the comments of a task or of a project. Provide exactly one of task\_id or project\_id. Optional: cursor, limit (1-200).                                                                                                                                                                                                                                                                                                                      |
| `list_completed_tasks`       | List tasks completed within a time window of at most 3 months — their ids are what reopen\_task accepts. Arguments: since and until (strings, RFC 3339 date-times, e.g. "2026-09-01T00:00:00Z"; since inclusive, until exclusive; both required). Optional: project\_id, section\_id, parent\_id, filter\_query (string, Todoist filter syntax, max 1024 chars), filter\_lang (string, IETF tag), cursor, limit. Answers \{ items, next\_cursor }. |
| `list_labels`                | List the personal labels of the connected user — their names are what labels accepts on create\_task/update\_task. Optional: cursor, limit (1-200).                                                                                                                                                                                                                                                                                                |
| `list_project_collaborators` | List the collaborators of a shared project (id, name, email) — their ids, sent as integers, are what assignee\_id accepts on create\_task/update\_task. Optional: cursor, limit (1-200).                                                                                                                                                                                                                                                           |
| `list_projects`              | List the active projects of the connected user (the Inbox included) — their ids are what project\_id accepts. Answers \{ results, next\_cursor }; pass next\_cursor as cursor for the next page. Optional: cursor, limit (1-200). Also a cheap way to check the connection works.                                                                                                                                                                  |
| `list_sections`              | List the active sections, optionally of one project — their ids are what section\_id accepts. Optional: project\_id, cursor, limit (1-200).                                                                                                                                                                                                                                                                                                        |
| `list_tasks`                 | List active (not completed) tasks; every given filter narrows the list. Optional: project\_id, section\_id, parent\_id (subtasks of a task), label (a label name), ids (comma-separated task ids), cursor, limit (1-200). Answers \{ results, next\_cursor }.                                                                                                                                                                                      |

## Write actions (7)

| Action           | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `close_task`     | Complete a task, like ticking it in the app: a regular task and its subtasks move to history; a recurring task is rescheduled to its next occurrence. Arguments: task\_id (string, required).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `create_comment` | Add a comment to a task or a project. Arguments: content (string, required, Markdown, max 15000 chars); exactly one of task\_id or project\_id (string).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `create_project` | Create a project. Arguments: name (string, required); description (string); parent\_id (string, id of a parent project to create a sub-project); color (string, one of 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\_favorite (boolean); view\_style (string: "list", "board" or "calendar").                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `create_section` | Create a section in a project. Arguments: name (string, required); project\_id (string, required — from list\_projects); description (string); order (integer, position in the project).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `create_task`    | Create a task (in the Inbox when no project\_id). Arguments: content (string, required — the task title); description (string); project\_id, section\_id, parent\_id (strings — ids from list\_projects, list\_sections, list\_tasks); labels (array of label NAME strings, e.g. \["waiting"]); priority (integer 1-4, 4 = most urgent, shown as p1 in the app); ONE of due\_string (string in natural language, e.g. "tomorrow at 10am", "every monday"), due\_date (string "YYYY-MM-DD") or due\_datetime (string RFC 3339, e.g. "2026-10-01T09:00:00Z"); due\_lang (string, language of due\_string, e.g. "fr"); deadline\_date (string "YYYY-MM-DD"); duration (positive integer) together with duration\_unit ("minute" or "day"); assignee\_id (integer — a collaborator id from list\_project\_collaborators sent as a bare number, e.g. 1234567, not a string; shared projects only). |
| `reopen_task`    | Reopen a completed task (its completed parent tasks and sections are restored too). Arguments: task\_id (string, required).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `update_task`    | Update a task; only the given fields change (moving it to another project or section is not supported). Arguments: task\_id (string, required); content (string); description (string); labels (array of label NAME strings — replaces the whole list); priority (integer 1-4, 4 = most urgent); due\_string (string, natural language, e.g. "next friday"; "no date" removes the due date), due\_date (string "YYYY-MM-DD") or due\_datetime (string RFC 3339); due\_lang (string); deadline\_date (string "YYYY-MM-DD"); duration (positive integer) together with duration\_unit ("minute" or "day"); assignee\_id (integer — collaborator id from list\_project\_collaborators as a bare number, not a string).                                                                                                                                                                           |

## Permissions

Every action above must be explicitly granted to an agent before it can be used. See [Permissions](/integrations/permissions) for the grant model and [Security](/integrations/security) for how credentials are protected.
