Skip to main content

kaicalls

Official Python SDK for the KaiCalls API — give your AI agent a phone. Outbound calls, agents, leads, SMS, transcripts, webhooks, and platform APIs.

Install

pip install kaicalls

Quick start

from kaicalls import KaiCalls

kai = KaiCalls(api_key="kc_live_...")

# Make an outbound call — the agent auto-enriches with CRM context
call = kai.calls.create(
    agent_id="uuid-abc123",
    to="+15125551234",
    name="John Smith",
    context="Following up on his kitchen remodel inquiry",
)

# Block until the call finishes, then read the AI summary
result = kai.calls.wait(call.id)
print(result.summary)

Responses support attribute access (call.id, result.summary, call.quality_dimensions.empathy) and behave like dicts.

No account yet? Sign up via the API

from kaicalls import KaiCalls, signup

account = signup(
    business_name="Smith Law Firm",
    email="contact@smithlaw.com",
    plan_id="starter",
)
# account.api_key works immediately; send the owner to account.checkout_url
kai = KaiCalls(api_key=account.api_key)

What's wrapped

Resource Methods
kai.calls create, get, list, wait
kai.recordings get
kai.agents list, get, create, update, versions
kai.leads list, get, create, update, audit
kai.sms send, update_prompt, conversations, messages
kai.transcripts list
kai.phone_numbers list, available, assign, release
kai.workspaces list, get, create, update (lifecycle actions)
kai.webhooks list, create, delete, test, rotate_secret
kai.analytics dashboard, calls, funnel, agents, weekly, businesses
kai.evals create, list, get, update, delete, run, get_run
kai.events list, deliveries, replay, backfill
kai.communication_runs validate, preview, create, list, pause, cancel, jobs, attempts
kai.discovery capabilities, openapi, schemas, health
kai.account balance, usage

Anything not wrapped yet is reachable through the escape hatch:

kai.request("GET", "/api/sdr/pipeline", query={"businessId": "uuid-biz"})

Errors

All non-2xx responses raise KaiCallsError with .status, .code (e.g. unauthorized, forbidden, rate_limited), and .body.

from kaicalls import KaiCallsError

try:
    kai.calls.create(agent_id=agent_id, to=to)
except KaiCallsError as err:
    if err.code == "rate_limited":
        ...  # back off and retry

Notes

Metadata

Release files for kaicalls 0.1.0

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

Source distribution (sdist)

Source distribution for kaicalls 0.1.0
File Size Uploaded
kaicalls-0.1.0.tar.gz 10.1 kB Details

Built distribution (wheel)

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

Total release size: 18.6 kB

Release files / kaicalls-0.1.0.tar.gz

Download URL kaicalls-0.1.0.tar.gz
Size 10.1 kB
Tags Source
SHA-256 checksum
How to use checksums
1333b6270c2437af912f2bc7e7c1c2c5d5c2caef4931ada9f91df9dd81591c5a
BLAKE2b-256 checksum
How to use checksums
dbca9c90f63c42f888ecbcebaf5026cb7e89b1b911848f6d1ac5af1dd5ecd4e4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / kaicalls-0.1.0-py3-none-any.whl

Download URL kaicalls-0.1.0-py3-none-any.whl
Size 8.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
58d3aebbf92ae18f87bab7e0f36d0ef2ea3c9316d2bfc3715c603e4d22b769ce
BLAKE2b-256 checksum
How to use checksums
d71e27c353c9a028a7a0e28dee0a81590c02b2c1af1a38101eb6bd3a220fe85c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

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