Skip to main content

Python API Client for Kanboard

Client library for Kanboard API.

  • Author: Frédéric Guillot

  • License: MIT

Installation

python3 -m pip install kanboard
  • This library is compatible with Python >= 3.9.

On Fedora (36 and later), you can install the package using DNF:

dnf install python3-kanboard

Examples

Methods and arguments are the same as the JSON-RPC procedures described in the official documentation.

Python methods are dynamically mapped to the API procedures: You must use named arguments.

By default, calls are made synchronously, meaning that they will block the program until completed.

Creating a new team project

import kanboard

with kanboard.Client("http://localhost/jsonrpc.php", "jsonrpc", "your_api_token") as kb:
    project_id = kb.create_project(name="My project")

Authenticate as user

import kanboard

with kanboard.Client("http://localhost/jsonrpc.php", "admin", "secret") as kb:
    kb.get_my_projects()

Use a custom authentication header

If your Kanboard instance uses a custom authentication header (for example, define('API_AUTHENTICATION_HEADER', 'X-My-Custom-Auth-Header'); in your Kanboard configuration):

import kanboard

with kanboard.Client(url="http://localhost/jsonrpc.php",
                     username="demo",
                     password="secret",
                     auth_header="X-My-Custom-Auth-Header") as kb:
    kb.get_me()

Create a new task

import kanboard

with kanboard.Client("http://localhost/jsonrpc.php", "jsonrpc", "your_api_token") as kb:
    project_id = kb.create_project(name="My project")
    task_id = kb.create_task(project_id=project_id, title="My task title")

Use a personalized user agent

import kanboard

with kanboard.Client(url="http://localhost/jsonrpc.php",
                     username="admin",
                     password="secret",
                     user_agent="My Kanboard client") as kb:
    kb.get_my_projects()

Request timeout

By default, requests time out after 30 seconds. You can change this with the timeout parameter (in seconds), or set it to None to disable the timeout:

import kanboard

# Custom 60-second timeout
with kanboard.Client(url="http://localhost/jsonrpc.php",
                     username="admin",
                     password="secret",
                     timeout=60) as kb:
    kb.get_my_projects()

Error handling

The client raises kanboard.ClientError for API errors, network failures, and malformed responses:

import kanboard

with kanboard.Client("http://localhost/jsonrpc.php", "jsonrpc", "your_api_token") as kb:
    try:
        kb.create_project(name="My project")
    except kanboard.ClientError as e:
        print(e)

SSL connection and self-signed certificates

Example with a valid certificate:

import kanboard

with kanboard.Client("https://example.org/jsonrpc.php", "admin", "secret") as kb:
    kb.get_my_projects()

Example with a custom certificate:

import kanboard

with kanboard.Client(url="https://example.org/jsonrpc.php",
                     username="admin",
                     password="secret",
                     cafile="/path/to/my/cert.pem") as kb:
    kb.get_my_projects()

Example with a custom certificate and hostname mismatch:

import kanboard

with kanboard.Client(url="https://example.org/jsonrpc.php",
                     username="admin",
                     password="secret",
                     cafile="/path/to/my/cert.pem",
                     ignore_hostname_verification=True) as kb:
    kb.get_my_projects()
import kanboard

with kanboard.Client(url="https://example.org/jsonrpc.php",
                     username="admin",
                     password="secret",
                     insecure=True) as kb:
    kb.get_my_projects()

Asynchronous I/O

The client also exposes async/await style method calls. Similarly to the synchronous calls (see above), the method names are mapped to the API methods.

To invoke an asynchronous call, the method name must be appended with _async. For example, a synchronous call to create_project can be made asynchronous by calling create_project_async instead.

import asyncio
import kanboard

async def main():
    with kanboard.Client("http://localhost/jsonrpc.php", "jsonrpc", "your_api_token") as kb:
        project_id = await kb.create_project_async(name="My project")
        print(project_id)

asyncio.run(main())

See the official API documentation for the complete list of methods and arguments.

Release files for kanboard 1.1.8

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

Source distribution (sdist)

Source distribution for kanboard 1.1.8
File Size Uploaded
kanboard-1.1.8.tar.gz 7.7 kB Details

Built distribution (wheel)

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

Total release size: 14.3 kB

Release files / kanboard-1.1.8.tar.gz

Download URL kanboard-1.1.8.tar.gz
Size 7.7 kB
Tags Source
SHA-256 checksum
How to use checksums
a26e00c7e9e7cb034840fc8505946f4834ff10721da5eae5225cc3b00ce3c7bb
BLAKE2b-256 checksum
How to use checksums
d8de0a31e6533512071c54cf37c346fe11e97b0cd85ce9451ce4f5803bfb6a25
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 25, 2026.

Transparency log

Release files / kanboard-1.1.8-py3-none-any.whl

Download URL kanboard-1.1.8-py3-none-any.whl
Size 6.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0208db86424488876a2eda51f8aed01fa9df3470e900efd7f2a9b9d578742858
BLAKE2b-256 checksum
How to use checksums
06837e0207d00effaf988cc6ff4ed06cb46c27524a52a7bbec3710b50dfd9462
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 25, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.1.8 This release

2 release files

1.1.7

2 release files

1.1.6

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

1 release file

1.1.2

1 release file

1.1.1

1 release file

1.1.0

1 release file

1.0.7

1 release file

1.0.6

1 release file

1.0.4

1 release file

1.0.3

1 release file

1.0.1

1 release file

1.0.0

1 release file

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