Kairos ConnectKairos Connect

One workspace for your entire team. Tasks, docs, chat, and AI — all connected.

Product

  • Features
  • Pricing
  • API
  • Changelog

Solutions

  • Enterprise
  • Startups
  • Agencies

Company

  • About Us
  • Careers
  • Blog
  • Contact

Legal

  • Privacy Policy
  • Terms of Service
  • Security
Kairos ConnectKairos Connect

One workspace. Zero app switching.

Product
  • Features
  • Pricing
  • API
  • Changelog
Solutions
  • Enterprise
  • Startups
  • Agencies
Company
  • About Us
  • Careers
  • Blog
  • Contact
Legal
  • Privacy Policy
  • Terms of Service
  • Security

© 2026 Kairos Connect B.V. All rights reserved.

Kairos ConnectKairos Connect

Core Features

  • Features Overview

    See all features at a glance

  • Tasks & Projects

    Kanban, lists, timelines & sprints

  • Goals & OKRs

    AI-powered goal analysis

  • Team Chat

    E2E encrypted messaging

  • Whiteboard

    Infinite canvas, real-time collab

Platforms

  • Forms

    Drag & drop form builder

  • CRM

    Pipeline, deals & contacts

  • Documents

    6 views, fast databases

  • AI Assistant

    Natural language tasks

  • Mobile Apps

    iOS & Android

  • Desktop Apps

    macOS, Windows, Linux

View all features→
For StartupsFor Small BusinessFor EnterpriseFor Remote Teams
Pricing
vs Asanavs ClickUpvs Notion
Blog
Getting Started
Quick StartAuthentication
API Reference
TasksGoalsCommentsTeamDocuments
SDKs
JavaScript/TypeScriptPythonGo
SDKs/Python

Python SDK

The official Kairos SDK for Python. Features async support, type hints, and Pydantic models.

Requirements

  • Python 3.8 or higher
  • httpx for HTTP requests
  • pydantic for data validation

Installation

# pip
pip install kairos-sdk

# uv
uv add kairos-sdk

# poetry
poetry add kairos-sdk

# pipenv
pipenv install kairos-sdk

Quick Start

from kairos import Kairos

# Initialize the client
kairos = Kairos(api_key="your_api_key")

# List tasks
result = kairos.tasks.list(status="in_progress", limit=10)

print(f"Found {result.pagination.total} tasks")
for task in result.data:
    print(f"- {task.title} ({task.status})")

Async Usage

The SDK supports async/await for use with asyncio:

import asyncio
from kairos import AsyncKairos

async def main():
    # Initialize async client
    kairos = AsyncKairos(api_key="your_api_key")

    # Make async requests
    result = await kairos.tasks.list(status="in_progress")

    for task in result.data:
        print(f"- {task.title}")

    # Don't forget to close the client
    await kairos.close()

# Or use as async context manager
async def main_with_context():
    async with AsyncKairos(api_key="your_api_key") as kairos:
        result = await kairos.tasks.list()
        print(result.data)

asyncio.run(main())

Configuration

import os
from kairos import Kairos

kairos = Kairos(
    # Required: Your API key (use environment variable)
    api_key=os.environ["KAIROS_API_KEY"],

    # Optional: Custom base URL
    base_url="https://gateway.thekairos.app/v1",

    # Optional: Request timeout in seconds
    timeout=30.0,

    # Optional: Retry configuration
    max_retries=3,
    retry_delay=1.0,
)

Tasks

# List tasks with filters
result = kairos.tasks.list(
    status="in_progress",
    priority="high",
    assigned_to="user-id",
    goal_id="goal-id",
    page=1,
    limit=50,
    sort_by="due_date",
    sort_order="asc",
)

# Get a single task
task = kairos.tasks.get("task-id")
print(task.title, task.status)

# Create a task
new_task = kairos.tasks.create(
    title="Implement new feature",
    description="Add user authentication",
    goal_id="goal-id",
    priority="high",
    due_date="2024-01-15",
    story_points=5,
)

# Update a task
updated_task = kairos.tasks.update(
    "task-id",
    status="completed",
    actual_hours=6,
)

# Delete a task
kairos.tasks.delete("task-id")

Goals

# List goals
result = kairos.goals.list(
    status="in_progress",
    include_tasks=True,
)

# Get a goal with tasks
goal = kairos.goals.get(
    "goal-id",
    include_tasks=True,
    include_comments=True,
)

print(f"Goal: {goal.title}")
print(f"Progress: {goal.progress}%")

if goal.tasks:
    for task in goal.tasks:
        print(f"  - {task.title}")

Team

# Get team info
team = kairos.team.get()
print(f"Team: {team.name}")

# List team members (team_id required)
result = kairos.team.list_members(team.id)

for member in result.data:
    print(f"{member.name} ({member.role})")

Documents

# List documents
result = kairos.documents.list(
    doc_type="page",
    visibility="team",
)

# Get document with content
doc = kairos.documents.get(
    "doc-id",
    include_content=True,
    include_children=True,
)

print(doc.title)
print(doc.plain_text)  # Plain text content

Error Handling

from kairos import Kairos
from kairos.exceptions import (
    KairosError,
    KairosAuthError,
    KairosNotFoundError,
    KairosValidationError,
    KairosRateLimitError,
)
import time

try:
    task = kairos.tasks.get("invalid-id")
except KairosNotFoundError:
    print("Task not found")
except KairosValidationError as e:
    print(f"Validation error: {e.message}")
except KairosRateLimitError as e:
    print(f"Rate limited. Retry after: {e.retry_after} seconds")
    time.sleep(e.retry_after)
except KairosAuthError:
    print("Authentication failed")
except KairosError as e:
    print(f"API error: {e.code} - {e.message}")

Type Hints

The SDK uses Pydantic models with full type hints:

from kairos import Kairos
from kairos.types import (
    Task,
    Goal,
    Comment,
    Team,
    TeamMember,
    Document,
    TaskStatus,
    TaskPriority,
    PaginatedResponse,
)

kairos = Kairos(api_key="...")

# All methods return typed models
task: Task = kairos.tasks.get("id")
result: PaginatedResponse[Task] = kairos.tasks.list()

# Access typed attributes
print(task.title)  # str
print(task.status)  # TaskStatus enum
print(task.due_date)  # Optional[date]

Framework Integration

Django

# settings.py
KAIROS_API_KEY = os.environ.get("KAIROS_API_KEY")

# views.py
from django.conf import settings
from kairos import Kairos

kairos = Kairos(api_key=settings.KAIROS_API_KEY)

def tasks_view(request):
    result = kairos.tasks.list(status="in_progress")
    return render(request, "tasks.html", {"tasks": result.data})

FastAPI

from fastapi import FastAPI, Depends
from kairos import AsyncKairos

app = FastAPI()

async def get_kairos():
    async with AsyncKairos() as client:
        yield client

@app.get("/tasks")
async def get_tasks(kairos: AsyncKairos = Depends(get_kairos)):
    result = await kairos.tasks.list()
    return result.data
JavaScript SDKGo SDK