Official KaiCalls SDK — give your AI agent a phone. Outbound calls, agents, leads, SMS, transcripts, and webhooks.
Project description
kaicalls
Official Python SDK for the KaiCalls API — give your AI agent a phone. Outbound calls, agents, leads, SMS, transcripts, webhooks, and platform APIs.
- Python 3.9+, one dependency (
requests) - Docs: https://www.kaicalls.com/docs/api · Live OpenAPI:
GET /api/v1/openapi.json
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
- Get an API key at https://www.kaicalls.com/dashboard/settings/api. New keys default to read-only scopes — request write scopes (
calls:write,sms:write, …) when creating the key. - Phone numbers are E.164 (
+15125551234). - API reference: https://www.kaicalls.com/docs/api · Errors: https://www.kaicalls.com/docs/api/errors
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 kaicalls-0.1.0.tar.gz.
File metadata
- Download URL: kaicalls-0.1.0.tar.gz
- Upload date:
- Size: 10.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1333b6270c2437af912f2bc7e7c1c2c5d5c2caef4931ada9f91df9dd81591c5a
|
|
| MD5 |
3c8f2030e4f750bb96a989c404018723
|
|
| BLAKE2b-256 |
dbca9c90f63c42f888ecbcebaf5026cb7e89b1b911848f6d1ac5af1dd5ecd4e4
|
File details
Details for the file kaicalls-0.1.0-py3-none-any.whl.
File metadata
- Download URL: kaicalls-0.1.0-py3-none-any.whl
- Upload date:
- Size: 8.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
58d3aebbf92ae18f87bab7e0f36d0ef2ea3c9316d2bfc3715c603e4d22b769ce
|
|
| MD5 |
3cf5312c828675e5ccabaea0bc736999
|
|
| BLAKE2b-256 |
d71e27c353c9a028a7a0e28dee0a81590c02b2c1af1a38101eb6bd3a220fe85c
|