Work in Progress: This project is under active development and is not yet ready for production use.
Disclaimer: This project is not affiliated with, endorsed by, or associated with Akiflow in any way. It is an unofficial, community-built SDK. The underlying API is undocumented and may change at any time without notice, which could break this library. Use at your own risk.
A lightweight Python SDK for the Akiflow task management software. Built on httpx with full type annotations.
This is an early proof of concept. Currently implemented:
- Tasks — create, list, update, mark done, delete
- Labels — create, list, update, delete, lookup by name
Other Akiflow features are not yet covered.
Feel free to contribute!
Full API documentation is available at thielem.github.io/akiflow-python-sdk.
Requires Python 3.10+.
pip install akiflowOr with uv:
uv add akiflowNote: This SDK only supports Akiflow's passwordless email + OTP login. Other authentication methods (e.g., Google SSO) have not been tested and may not work.
The SDK uses Akiflow's passwordless email + OTP flow:
from akiflow import Akiflow
client = Akiflow(email="you@example.com") # prompts for OTP codeSave and reuse tokens to avoid logging in every time:
from akiflow import Akiflow
client = Akiflow(
access_token="eyJ...",
refresh_token="def50200...",
)The client automatically refreshes expired access tokens using the refresh token.
# Create a task
task = client.task.create("Buy groceries")
# Create a scheduled task with priority
task = client.task.create(
"Team meeting",
datetime="2025-01-15T10:00:00",
duration=3600,
priority=2,
)
# List tasks
tasks = client.task.list()
# Mark done
client.task.done(task["id"])
# Delete
client.task.delete(task["id"])# Create a label
label = client.label.create("Work", color="#FF0000")
# List labels
labels = client.label.list()
# Look up label ID by name
label_id = client.label.get_id("Work")
# Delete
client.label.delete(label_id)Enable debug mode to print all HTTP requests and responses:
client = Akiflow(email="you@example.com", debug=True)To bypass SSL verification (useful with proxy tools like Proxyman or Charles):
client = Akiflow(email="you@example.com", verify_ssl=False)See the examples/ directory for complete working scripts:
login_and_create.py— Interactive login with token persistencetoken_and_create.py— Reuse saved tokenscreate_and_done.py— Task lifecycle (create, done, delete)label_lifecycle.py— Label CRUD operations
MIT