Unofficial Python SDK for the Akiflow task management software.
Project description
Akiflow Python SDK
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.
Status
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!
Documentation
Full API documentation is available at thielem.github.io/akiflow-python-sdk.
Installation
Requires Python 3.10+.
pip install akiflow
Or with uv:
uv add akiflow
Quick Start
Interactive Login
Note: 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 code
Reusing Tokens
Save 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.
Tasks
# 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"])
Labels
# 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)
Debugging
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)
Examples
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
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file akiflow-0.0.2.tar.gz.
File metadata
- Download URL: akiflow-0.0.2.tar.gz
- Upload date:
- Size: 176.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c0cbff685d249d17a9ded7716dea8f313c2afe9de7ee55b9067dca0985f08f66
|
|
| MD5 |
0d2bffed3d0cf682674cf55df3b3b5e9
|
|
| BLAKE2b-256 |
668b2634eeb793008ab953d58ac3187e5c6f59e24e9f0f97e9e3d166f0ba9134
|
Provenance
The following attestation bundles were made for akiflow-0.0.2.tar.gz:
Publisher:
deploy.yml on thielem/akiflow-python-sdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
akiflow-0.0.2.tar.gz -
Subject digest:
c0cbff685d249d17a9ded7716dea8f313c2afe9de7ee55b9067dca0985f08f66 - Sigstore transparency entry: 1185781584
- Sigstore integration time:
-
Permalink:
thielem/akiflow-python-sdk@96b8a9741382320e9c5821243d9a7e0cf156cd71 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/thielem
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
deploy.yml@96b8a9741382320e9c5821243d9a7e0cf156cd71 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file akiflow-0.0.2-py3-none-any.whl.
File metadata
- Download URL: akiflow-0.0.2-py3-none-any.whl
- Upload date:
- Size: 14.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
70ac96244bd65dca059915764fe65fb1b4d32b10c302803e6a111fabde01d932
|
|
| MD5 |
3ae03a30aa38dd42adf13ad9bc312471
|
|
| BLAKE2b-256 |
d42baad44d881c533bd23407120a73a8b71a998597433f8d13a18498b557fcba
|
Provenance
The following attestation bundles were made for akiflow-0.0.2-py3-none-any.whl:
Publisher:
deploy.yml on thielem/akiflow-python-sdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
akiflow-0.0.2-py3-none-any.whl -
Subject digest:
70ac96244bd65dca059915764fe65fb1b4d32b10c302803e6a111fabde01d932 - Sigstore transparency entry: 1185781588
- Sigstore integration time:
-
Permalink:
thielem/akiflow-python-sdk@96b8a9741382320e9c5821243d9a7e0cf156cd71 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/thielem
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
deploy.yml@96b8a9741382320e9c5821243d9a7e0cf156cd71 -
Trigger Event:
workflow_dispatch
-
Statement type: