Todoist
Let an agent keep a to-do list without the run of it. It reads and filters tasks, creates, updates, completes, moves and comments, and deleting a task or moving it to another project can wait for a person.
- host
- api.todoist.com
- connect
- API key, per user
Create task
todoist-create-task
Update task
todoist-update-task
Close task
todoist-close-task
Reopen task
todoist-reopen-task
Reads and writes in Todoist. Writes are off until you switch them on.
Each one is a named operation from the pack. Reads change nothing.
Writes
Create task
read backtodoist-create-task
Create one task. With no project_id it goes to the user's Inbox. A due date can be natural language (due_string: "tomorrow at 12:00", "every monday") or a date (due_date).
Update task
read backtodoist-update-task
Change one task's content, description, labels, priority, due date or deadline; only the fields given change. labels replaces the whole list.
Close task
acknowledgedtodoist-close-task
Complete one task, as the Todoist app does. A regular task moves to history with its subtasks; a recurring task moves to its next date and stays active. Undo with reopen-task.
Reopen task
read backtodoist-reopen-task
Reopen one completed task. Any completed parent tasks and sections come back too, at the end of their list.
Move task to project
read backtodoist-move-task-to-project
Move one task, with its subtasks, to another project, outside any section. A shared project's members can then see it.
Move task to section
read backtodoist-move-task-to-section
Move one task, with its subtasks, into a section. A section in another project moves it to that project too.
Delete task
acknowledgedtodoist-delete-task
Delete one task and all of its subtasks. It cannot be restored through the API.
Add comment
read backtodoist-add-comment
Add one comment to a task, as the token's user. Nobody is notified by the call itself.
Create section
read backtodoist-create-section
Create one section in a project, at the end.
Delete section
acknowledgedtodoist-delete-section
Delete one section and every task in it. The tasks are not counted separately: the impact is one section.
Reads
List projects
todoist-list-projects
List the user's active projects, 50 per page, with each one's id, name, parent_id, is_shared, is_archived and inbox_project. Todoist returns next_cursor when there are more; pass it as cursor for the next page.
Get project
todoist-get-project
Get one project by id: name, description, parent_id, color, view style, is_shared and is_archived.
List sections
todoist-list-sections
List active sections, 50 per page, with id, project_id, name and section_order. Give project_id for one project's sections; leave it out for all of them. Todoist returns next_cursor when there are more; pass it as cursor.
Get section
todoist-get-section
Get one section by id: name, description, project_id, section_order and is_archived.
List labels
todoist-list-labels
List the user's personal labels, 100 per page, with id, name, color and is_favorite. Tasks name labels by name, not id. Shared labels that exist only on other people's tasks are not listed. Todoist returns next_cursor when there are more; pass it as cursor.
List tasks
todoist-list-tasks
List active (not completed) tasks, 25 per page, with id, content, description, project_id, section_id, parent_id, labels, priority, due and deadline. Narrow by project_id, section_id, parent_id (its subtasks) or one label name; with none, every active task is listed. Todoist returns next_cursor when there are more; pass it as cursor with the same other inputs. Long task descriptions can cut a page at 64 KB.
Filter tasks
todoist-filter-tasks
List active tasks that match a Todoist filter query, 25 per page, for example "today | overdue", "#Work & p1" or "assigned to: me". One query at a time: the comma operator is not supported. Todoist returns next_cursor when there are more; pass it as cursor with the same query.
Get task
todoist-get-task
Get one active task by id: content, description, project_id, section_id, parent_id, labels, priority (4 is urgent), due, deadline, duration, responsible_uid, checked and updated_at. A completed or deleted task answers 404; use list-completed-tasks for completed ones.
List completed tasks
todoist-list-completed-tasks
List tasks completed between since and until, 25 per page, with id, content, project_id and completed_at. The range may be at most 3 months. Narrow by project_id or a filter query. Todoist returns next_cursor when there are more; pass it as cursor with the same other inputs.
List task comments
todoist-list-task-comments
List the comments on one task, 20 per page, with id, content, posted_uid, posted_at and file_attachment. Todoist returns next_cursor when there are more; pass it as cursor. A comment can be up to 15,000 characters, so a page of long comments can be cut at 64 KB.
How do users connect? Each one brings their own Todoist.
- 1.Call for the userYour server invokes the action for the signed-in user. Without a Todoist connection, the SDK throws EndUserNotConnectedError with a connect link.
- 2.The user pastes a keyThe link opens a form that shows where in Todoist's settings to create the key. The link lasts 10 minutes and works once.
- 3.Anlyon checks itThe key is checked with Todoist before it is kept, and bound to api.todoist.com. It is never shown back.
- 4.Your server confirmsYour server confirms the connection for the user who is signed in, and the call goes through.
Guardrails. Suggested limits and approvals, for you to review.
Suggested limits
- 100 tasks created a day
- 200 task updates a day
- 100 tasks completed a day
- 50 tasks reopened a day
- 50 tasks moved to a project a day
- 100 tasks moved to a section a day
- 20 tasks deleted a day
- 200 comments a day
- 20 sections created a day
- 10 sections deleted a day
Suggested approvals
- A person approves deleting a task
- A person approves deleting a section
- A person approves moving a task to another project
What the key must allow
- Your API token, from Todoist's developer settings
- It has no scopes and can do anything you can do in Todoist
Good to know
- The token has no narrower permissions. The daily limits and the approval rules are what narrow the agent.
- Completing a recurring task keeps it active, so a completion is acknowledged rather than read back.
For your own account
- 1.In Todoist, open Settings, Integrations, Developer, and copy your API token.
- 2.In Anlyon, open Actions, then Integrations, choose Todoist and paste the token.
- 3.Anlyon checks the token with Todoist before storing it. It becomes a secret named TODOIST, bound to api.todoist.com.
Todoist in your code. For one of your users, or for your own account.
Act for one of your users from your server, or connect your company's own Todoist with the CLI.
import { Client, EndUserNotConnectedError } from "@anlyonhq/sdk";const anlyon = new Client({ apiKey: process.env.ANLYON_API_KEY! });try { const { data } = await anlyon .forUser(session.userId) .actions.invoke("todoist-create-task", { content: "Send the Acme renewal quote" }); return { status: "done", grade: data.grade };} catch (error) { if (error instanceof EndUserNotConnectedError) { // The user connects their own Todoist, then you call again. return { status: "connect_required", url: error.connectUrl }; } throw error;}Other integrations. Under the same limits, approvals and receipts.
Available
Stripe
Payments · API key
Refunds under a money ceiling, and every customer, payment and invoice to read.
Available
GitHub
Code · API key
Issues, pull requests and code, in the repositories you choose.
Available
HubSpot
CRM · Sign in
Contacts, companies and deals: search them and change them.
- Anlyon app
- Available
- Your own app
- Recommended for production
