Skip to main content

Todoist API Python Client

This is the official Python SDK for the Todoist API.

Installation

pip install todoist-api-python

Or add the project as a dependency in pyproject.toml:

dependencies = [
  "todoist-api-python>=3.1.0,<4",
]

Supported Python Versions

Python version 3.10 and above.

Usage

Here's an example of initializing the API client, fetching a task, and paginating through its comments:

from todoist_api_python.api import TodoistAPI

api = TodoistAPI("YOUR_API_TOKEN")

task = api.get_task("6X4Vw2Hfmg73Q2XR")
print(f"Task: {task.content}")

comments_iter = api.get_comments(task_id=task.id)
for comments in comments_iter:
    for comment in comments:
        print(f"Comment: {comment.content}")

Async usage

Always close TodoistAPIAsync explicitly, either via async with (recommended) or by calling await api.close().

from todoist_api_python.api_async import TodoistAPIAsync

async with TodoistAPIAsync("YOUR_API_TOKEN") as api:
    task = await api.get_task("6X4Vw2Hfmg73Q2XR")
    print(task.content)

Documentation

For more detailed reference documentation, have a look at the SDK documentation and the API documentation.

Migrating from 3.x

Version 4.x introduces a breaking HTTP stack migration from requests to httpx.

  • TodoistAPI(..., session=...) is now TodoistAPI(..., client=...) with httpx.Client.
  • TodoistAPIAsync(..., session=...) is now TodoistAPIAsync(..., client=...) with httpx.AsyncClient.
  • Error handling should catch httpx.HTTPStatusError instead of requests.exceptions.HTTPError.

Development

To install Python dependencies:

$ uv sync

To install pre-commit:

$ uv run pre-commit install

You can try your changes via REPL by running:

$ uv run python

You can then import the library as described in Usage without having to create a file. If you decide to use TodoistAPIAsync, please keep in mind that you have to import asyncio and run asyncio.run(yourmethod()) to make your async methods run as expected.

Releases

This API client is public, and available in a PyPI repository.

A new update is automatically released by GitHub Actions, by creating a release with a tag in the format vX.Y.Z (v<Major>.<Minor>.<Patch>).

Users of the API client can then update to the new version in their pyproject.toml file.

Feedback

Any feedback, bugs, questions, comments, etc., can be reported as Issues in this repository.

Contributions

We would love contributions! Pull requests are welcome.

Metadata

Release files for todoist_api_python 4.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for todoist_api_python 4.0.1
File Size Uploaded Provenance Actions
todoist_api_python-4.0.1.tar.gz 25.0 kB Without provenance Details for todoist_api_python-4.0.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for todoist_api_python 4.0.1
File Interpreter ABI Platform Actions
todoist_api_python-4.0.1-py3-none-any.whl Python 3 none any Details for todoist_api_python-4.0.1-py3-none-any.whl

Total release size: 53.4 kB

Release files / todoist_api_python-4.0.1.tar.gz

Download URL todoist_api_python-4.0.1.tar.gz
Size 25.0 kB
Tags Source
SHA-256 checksum
How to use checksums
caec9fdb04b571188e442035d7fbe75c859589c7eefa4ea65ac8a9cbbfe1f95f
BLAKE2b-256 checksum
How to use checksums
b7ede90d33d8c89a0d9044a0a37c46edb08992ba6e9fc7334e4b872289e28cb9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.6.11

Release files / todoist_api_python-4.0.1-py3-none-any.whl

Download URL todoist_api_python-4.0.1-py3-none-any.whl
Size 28.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d239e698f45d54a8fc771711f63b2877099566093c280eda265d0422275c777e
BLAKE2b-256 checksum
How to use checksums
17f54326e0c39e731015d9d7cfd84aa766b04c70eb18f170f59c407cd191c5e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.6.11

Security for todoist_api_python 4.0.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page