On January 7, the Todoist Dev team took the first steps towards shutting down the Sync v9 API as discussed in this announcement.
We have until February 10 to migrate to the new unified API, so I started working on the migration with the help of Claude Opus 4.5 AI Agent.
Proper context has been provided by scraping the entire Todoist API v1 documentation and turning it into a set of markdown files that Claude Opus can easily read and refer to.
I have tried to follow the best practices of writing prompts and spent some time planning before taking the first steps to start code modifications.
I have also instructed the Agent to split the work required into multiple PRs so that they become easy to review.
Starting from this line, most of the content below and the upcoming PR descriptions are generated by AI.
Overview
This issue tracks the migration of Todoist.Net from the Todoist Sync API v9 to the new unified Todoist API v1. This is a major breaking release that will be versioned as v11.0.0.
The Todoist API v1 combines the previous REST and Sync APIs into a single unified API with improved consistency, cursor-based pagination, and updated error handling.
Migration Phases
PR 1: Core Renames
- Rename
Item -> DetailedTask, AddItem -> AddTask, UpdateItem -> UpdateTask
- Rename
Note -> Comment
- Rename
ItemsService -> TasksService, NotesService -> CommentsService
- Update client properties:
Items -> Tasks, Notes -> Comments
- Update test files to use new naming
PR 2: Foundation and new REST Endpoints and Services
- Update REST client base URL from
sync/v9 to api/v1
- Add new HTTP methods (
DeleteAsync, PutAsync, PostJsonAsync)
- Add
PaginatedResponse<T> model for cursor-based pagination
- Update error handling for v1 API format (
error_tag, http_code, error_extra)
- Remove deprecated properties (
UserInfo.IsBizAdmin, CompletedTask.CommentCount)
- Implement new v1 REST endpoints for Tasks
- Implement new v1 REST endpoints for Comments
- Implement new v1 REST endpoints for Projects
- Implement new v1 REST endpoints for Sections
- Implement new v1 REST endpoints for Labels
- Add pagination support to list methods
- Update service implementations for v1 endpoint patterns
PR 3: Documentation and Final Release Prep
- Update README with new API usage examples
- Update inline XML documentation
- Add migration guide for users upgrading from v10.x
- Final integration testing
Update: Phase 3 Scope Expansion (Implemented)
During implementation, migration gaps were identified that required broad contract/model/service finalization beyond the original docs-focused PR 3 plan.
This update documents what changed and why.
- Reorganized models and services by domain (entity-based folder structure)
- Redesigned common abstractions:
- sync response model family,
- command result/operation models,
- pagination/query primitives,
- guard/exception foundations
- Refactored domain models for v1-aligned request/response/query contracts
- Added new model coverage for:
- Workspaces,
- Workspace Filters,
- View Options,
- Calendars,
- ID mappings,
- Template import contracts
- Redesigned/finalized client contracts (
ITodoistClient, IAdvancedTodoistClient, ITodoistRestClient)
- Refactored service interfaces/implementations to redesigned contracts and v1 route semantics
- Added new services for Workspaces, Workspace Filters, View Options, Calendars, and IDs
- Finalized
TodoistClient + TodoistRestClient wiring for the expanded v1 surface
- Retained release prep tasks (README/docs/migration guide/integration validation) as part of finalization
Breaking Changes Summary
| Category |
Old |
New |
| Model |
Item |
DetailedTask |
| Model |
AddItem |
AddTask |
| Model |
UpdateItem |
UpdateTask |
| Model |
Note |
Comment |
| Service |
ItemsService |
TasksService |
| Service |
NotesService |
CommentsService |
| Client Property |
ITodoistClient.Items |
ITodoistClient.Tasks |
| Client Property |
ITodoistClient.Notes |
ITodoistClient.Comments |
Additional Breaking Changes Introduced in Phase 3
- Service/interface contract reshaping and method signature updates for v1 query/request/response models
- Service/interface renames in parts of the public surface (for example:
IBackupService -> IBackupsService, IUploadService -> IUploadsService)
- Significant model refactors/replacements and relocations across domains
- Sync/command abstraction redesign requiring migration for consumers depending on previous internals
- Expanded public client surface with new domains:
- Workspaces,
- Workspace Filters,
- View Options,
- Calendars,
- ID mappings
Compatibility Notes
- JSON property names remain unchanged (
items, notes, item_id) for sync API response compatibility
- Sync command type strings remain unchanged (
item_add, note_add) for API compatibility
- Target frameworks unchanged:
netstandard2.0, net462
On January 7, the Todoist Dev team took the first steps towards shutting down the Sync v9 API as discussed in this announcement.
We have until February 10 to migrate to the new unified API, so I started working on the migration with the help of Claude Opus 4.5 AI Agent.
Proper context has been provided by scraping the entire Todoist API v1 documentation and turning it into a set of markdown files that Claude Opus can easily read and refer to.
I have tried to follow the best practices of writing prompts and spent some time planning before taking the first steps to start code modifications.
I have also instructed the Agent to split the work required into multiple PRs so that they become easy to review.
Starting from this line, most of the content below and the upcoming PR descriptions are generated by AI.
Overview
This issue tracks the migration of Todoist.Net from the Todoist Sync API v9 to the new unified Todoist API v1. This is a major breaking release that will be versioned as v11.0.0.
The Todoist API v1 combines the previous REST and Sync APIs into a single unified API with improved consistency, cursor-based pagination, and updated error handling.
Migration Phases
PR 1: Core Renames
Item->DetailedTask,AddItem->AddTask,UpdateItem->UpdateTaskNote->CommentItemsService->TasksService,NotesService->CommentsServiceItems->Tasks,Notes->CommentsPR 2: Foundation and new REST Endpoints and Services
sync/v9toapi/v1DeleteAsync,PutAsync,PostJsonAsync)PaginatedResponse<T>model for cursor-based paginationerror_tag,http_code,error_extra)UserInfo.IsBizAdmin,CompletedTask.CommentCount)PR 3: Documentation and Final Release Prep
Update: Phase 3 Scope Expansion (Implemented)
ITodoistClient,IAdvancedTodoistClient,ITodoistRestClient)TodoistClient+TodoistRestClientwiring for the expanded v1 surfaceBreaking Changes Summary
ItemDetailedTaskAddItemAddTaskUpdateItemUpdateTaskNoteCommentItemsServiceTasksServiceNotesServiceCommentsServiceITodoistClient.ItemsITodoistClient.TasksITodoistClient.NotesITodoistClient.CommentsAdditional Breaking Changes Introduced in Phase 3
IBackupService->IBackupsService,IUploadService->IUploadsService)Compatibility Notes
items,notes,item_id) for sync API response compatibilityitem_add,note_add) for API compatibilitynetstandard2.0,net462