Build with Todoist
The central hub for the Todoist developer platform. One API, official SDKs, a CLI, and an MCP server — built for developers and agents.
Free to use with any Todoist account.
Everything you need to build
Pick the building block that fits your project. They all interface with the same object model — tasks, projects, sections, comments — and share one unified approach to authentication.
API
A unified, (mostly) RESTful API for tasks, projects, sections, comments, and more. Fully described by an OpenAPI specification.
SDKs
Official Python and TypeScript SDKs with typed access to the full API, published to PyPI and npm.
MCP server
Our hosted Model Context Protocol server connects Claude, ChatGPT, Cursor, VS Code, and others to Todoist with a one-minute OAuth setup.
Webhooks
HTTP callbacks the moment things change, so your integration reacts in real time instead of polling.
Sync endpoint
The batching endpoint that powers our first-party apps: read and write many resources in a single request.
AI agents welcome
Agents are first-class users of Todoist. Whether it's a personal assistant using MCP or a coding agent in your terminal, they get the same full-featured access.
Connect over MCP
Add the hosted server to Claude, ChatGPT, Cursor, VS Code, or another MCP-compatible client, and authorize with OAuth. Setup guide
# Server URL (Streamable HTTP)
https://ai.todoist.net/mcp
# e.g. Claude Code
claude mcp add --transport http todoist https://ai.todoist.net/mcp
Give your coding agent the CLI
JSON output, dry runs, and installable skills for Claude Code, Codex, Copilot, Gemini, and more. CLI reference
npm install -g @doist/todoist-cli
td auth login
# Support for various agents
td skill install claude-code
td skill install codex
Make your first call
Grab your API token from Todoist under Settings → Integrations → Developer, then create a task:
curl "https://api.todoist.com/api/v1/tasks" \
-H "Authorization: Bearer $TODOIST_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"content": "Ship the integration", "due_string": "tomorrow"}'
Building for other people? Use OAuth authorization instead of a personal token.