---
title: Todoist API Integration on Truto
slug: todoist
category: Ticketing
canonical: "https://truto.one/integrations/detail/todoist/"
---

# Todoist API Integration on Truto



**Category:** Ticketing  
**Status:** Generally available

## Unified APIs

### Unified Ticketing API

- **Attachments** — Attachments are the files associated with a ticket or a comment.
- **Collections** — Tickets and contacts can be grouped into Collections. Collection resource usually maps to the various grouping systems used in the underlying product. Some examples are lists, projects, epics, etc. You can differentiate between these grouping systems using the type attribute of a Collection.
- **Comments** — Comments represent the communication happening on a Ticket, both between a User and a Contact and the internal things like notes, private comments, etc. A Ticket can have one or more Comments.
- **Tags** — Tags represent a common classification approach used in various ticketing systems. A Ticket may have one or more Tags associated with them.
- **Tickets** — Core resource which represents some work that needs to be carried out. Tickets are usually mapped to issues, tasks, work items, etc. depending on the underlying product.
- **Users** — Users represent the people using the underlying ticketing system. They are usually called agents, team members, admins, etc.

## MCP-ready AI tools

Truto exposes 34 tools for Todoist that AI agents can call directly.

- **list_all_todoist_projects** — List all projects in Todoist. Returns array of projects with fields including id, name, comment_count, order, color, is_shared, is_favorite, is_inbox_project, is_team_inbox, view_style, url, and parent_id.
- **get_single_todoist_project_by_id** — Get a specific project in Todoist by id. Returns fields including id, name, comment_count, color, is_shared, order, is_favorite, is_inbox_project, is_team_inbox, view_style, url, and parent_id.
- **create_a_todoist_project** — Create a new project in Todoist. Requires name. Returns id, name, comment_count, color, is_shared, order, is_favorite, is_inbox_project, is_team_inbox, view_style, url, and parent_id in the response.
- **update_a_todoist_project_by_id** — Update a project in Todoist by id. Returns id, name, comment_count, color, is_shared, order, is_favorite, is_inbox_project, is_team_inbox, view_style, url, and parent_id in the response.
- **delete_a_todoist_project_by_id** — Delete a project in Todoist with id. This also deletes all its sections and tasks. Returns empty body with status 204 on success.
- **todoist_projects_archive** — Archive a project in Todoist. Requires id. Returns 204 No Content with an empty body after successfully hiding the project (for personal projects, hides for the user; for workspace projects, hides for all workspace users).
- **todoist_projects_unarchive** — Unarchive a project in Todoist. Requires id. Returns 204 No Content on success.
- **list_all_todoist_tasks** — Get all active tasks in Todoist. Returns fields including id, content, description, is_completed, due (date, datetime, string, timezone), deadline, project_id, section_id, labels, priority, order, url, and assignment details.
- **get_single_todoist_task_by_id** — Get an active task in Todoist by id. Returns key fields including creator_id, assignee_id, content, description, due dates, deadline, labels, project_id, parent_id, and url.
- **create_a_todoist_task** — Create a new task in Todoist. Requires content. Returns fields including id (task identifier), content (task text), description, due (date, datetime, string, timezone), deadline (date), project_id, section_id, parent_id, priority, labels, is_completed, creator_id, created_at, and url.
- **update_a_todoist_task_by_id** — Update a task in Todoist. Requires id. Returns content, description, labels, priority, due details, deadline, duration, and other task metadata in the response.
- **delete_a_todoist_task_by_id** — Delete a task in Todoist by id. Returns a 204 No Content response with an empty body upon success.
- **todoist_tasks_close** — Close a task in Todoist using id. Regular tasks are marked complete and moved to history with subtasks. Tasks with recurring due dates are scheduled to their next occurrence. Returns 204 No Content on success.
- **todoist_tasks_reopen** — Reopen a specific task in Todoist using id. Returns 204 No Content with an empty body. Any ancestor items or sections are also restored and appear at the end of their parent list.
- **list_all_todoist_comments** — List comments in Todoist for a given task_id or project_id. Requires one of task_id or project_id. Returns id, content, posted_at, project_id, task_id, and attachment details.
- **get_single_todoist_comment_by_id** — Get a specific comment in Todoist by id. Returns id, content, posted_at, project_id or task_id, and attachment details including file_name, file_type, file_url, and resource_type.
- **create_a_todoist_comment** — Create a new comment in Todoist. Requires either task_id or project_id, and content. Returns the created comment including id, content, task_id or project_id, and related metadata.
- **update_a_todoist_comment_by_id** — Update comment id in Todoist. Requires id and content. Returns id for identification, content for updated text, posted_at for timestamp, task_id or project_id for linkage, and attachment details if available.
- **delete_a_todoist_comment_by_id** — Delete a comment in Todoist by id. Requires id. Returns 204 No Content response indicating success.
- **list_all_todoist_personal_label** — List all personal-labels in Todoist. Returns id, name, color, order, and is_favorite for each label.
- **get_single_todoist_personal_label_by_id** — Get a personal label in Todoist using id. Returns id, name, color, order, and is_favorite in the response.
- **create_a_todoist_personal_label** — Create a new personal label in Todoist. Requires name. Returns id, name, color, order, and is_favorite fields.
- **update_a_todoist_personal_label_by_id** — Update a personal label in Todoist by id. Returns id, name, color, order, and is_favorite fields in the response.
- **delete_a_todoist_personal_label_by_id** — Delete a personal label in Todoist using id. All instances of the label will be removed from tasks. Returns empty response with status 204 to indicate success.
- **list_all_todoist_shared_labels** — List all shared labels in Todoist. Returns an array of label names currently assigned to tasks.
- **todoist_shared_labels_remove** — Remove a shared-label in Todoist by providing its name. This action deletes all instances of the label from associated tasks. Requires name. Returns 204 No Content on success.
- **todoist_shared_labels_rename** — Rename all instances of a shared label in Todoist. Requires name and new_name. Returns empty response with status 204 indicating success.
- **list_all_todoist_collaborators** — List all collaborators in Todoist for a project. Requires project_id. Returns id (collaborator identifier), name (collaborator name), and email (collaborator email) for each collaborator.
- **list_all_todoist_sections** — List all sections in Todoist. Returns id, project_id, order, and name for each section.
- **get_single_todoist_section_by_id** — Get a single section in Todoist by id. Returns id, project_id, order, and name. If the section id has changed due to moving to another project, returns 301 with new URL in Location header.
- **create_a_todoist_section** — Create a new section in Todoist. Requires project_id and name. Returns id, project_id, order, and name of the section.
- **update_a_todoist_section_by_id** — Update a section in Todoist using id. Returns the updated section with fields such as id, project_id, and name.
- **delete_a_todoist_section_by_id** — Delete a section in Todoist by id along with all of its tasks. Requires id. Returns empty body with 204 No Content status on success.
- **todoist_attachment_download** — Use this endpoint to download an attachment file from the system.

## How it works

1. **Link your customer's Todoist account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Todoist.** The Proxy API is a 1-to-1 mapping of the Todoist API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Push action items from your platform into users' Todoist workflows** — SaaS products like meeting intelligence tools or CRMs can automatically create Todoist tasks for their users when action items are identified — ensuring nothing falls through the cracks without requiring users to leave either tool.
- **Sync ticket lifecycle between your helpdesk and Todoist** — Customer support platforms can escalate tickets into shared Todoist projects for engineering teams, then keep status in sync by closing or reopening tasks as the originating ticket progresses — enabling two-way state management across tools.
- **Aggregate Todoist tasks into your product's UI** — Time-tracking, invoicing, or daily planner SaaS tools can read a user's active Todoist tasks and surface them natively, letting users start timers, log work, or plan their day without context-switching.
- **Auto-organize work into Todoist projects and sections** — SaaS platforms managing client accounts, deals, or campaigns can dynamically create Todoist projects and sections that mirror their own data structures — giving end users a ready-made organizational hierarchy in Todoist.
- **Contextualize pushed tasks with labels and comments** — B2B tools can attach labels like @critical_bug or @CRM-FollowUp and add threaded comments to Todoist tasks they create, so users can filter and act on synced work without losing context from the originating system.

## What you can build

- **Two-way ticket-to-task sync** — Map your platform's tickets to Todoist tasks via the Unified Ticketing API, keeping status (open/closed), comments, and assignments synchronized bidirectionally.
- **Automated project scaffolding** — Dynamically create Todoist projects and sections when new clients, deals, or campaigns are created in your product, giving users instant organizational structure.
- **Cross-platform comment threading** — Push and pull comments between your app and Todoist tasks so that support agents and engineers can collaborate without leaving their preferred tool.
- **Smart task creation with labels and priorities** — Create Todoist tasks with assignees, due dates, priority levels, and custom labels directly from events in your platform — like deal stage changes or crash alerts.
- **Active task feed for time tracking or planning** — Fetch a user's Todoist tasks and display them natively in your dashboard so users can log time, plan sprints, or build daily agendas without switching apps.
- **Attachment sync and download** — Download attachments from Todoist task comments into your platform using the attachment download endpoint, keeping files accessible wherever your users work.

## FAQs

### What authentication method does the Todoist integration use?

Todoist uses OAuth 2.0 for user-level authorization. Truto handles the full OAuth flow, token storage, and refresh so your team doesn't need to manage credentials directly.

### How does Todoist map to Truto's Unified Ticketing API?

Todoist tasks map to Tickets, projects map to Collections, labels (personal and shared) map to Tags, comments map to Comments, collaborators map to Users, and file downloads map to Attachments.

### Can I close and reopen Todoist tasks programmatically?

Yes. The integration supports dedicated close and reopen operations for tasks via the todoist_tasks_close and todoist_tasks_reopen endpoints, which map to ticket status changes in the Unified Ticketing API.

### Does the integration support both personal and shared labels?

Yes. You can list, create, update, and delete personal labels, and list, rename, and remove shared labels. Both are accessible through the Unified Ticketing API's Tags resource.

### What operations are supported on Todoist projects?

Full CRUD — list, get, create, update, and delete — plus archive and unarchive operations. These map to the Collections resource in Truto's Unified Ticketing API.

### How does Truto handle pagination and rate limits for Todoist?

Truto abstracts away Todoist's pagination and rate-limiting logic. Your application makes standard API calls to Truto, and Truto manages cursor-based pagination and respects Todoist's rate limits automatically.
