calldesktech
Official Python client SDK for the CallDeskTech API — build, publish and operate voice agents.
Install
pip install -e .
(Not yet published to PyPI — install from a local clone or a git URL for now: pip install git+https://github.com/calldesktech/calldesktech-python.)
Requires Python 3.9+. Only dependency is requests.
Quickstart
Create an API key in your CallDeskTech workspace (Settings → API Keys), then:
from calldesktech import CallDeskTech, CallDeskTechError
client = CallDeskTech(api_key="cdk_live_...")
# Every key is pinned to one workspace.
me = client.me()
tenant_id = me.tenant_id
# Create an agent from a built-in template.
templates = client.list_agent_templates()
result = client.create_agent_from_template(
tenant_id,
{
"templateId": templates[0].id,
"name": "Front Desk",
"voiceEngine": "poc",
"variables": {"business_name": "Acme Dental"},
},
)
print(result.agent_id, result.version_id)
# Promote that version into production, then route a number to the
# environment (not a specific version) so future promotions pick up
# automatically.
environments = client.list_environments(result.agent_id)
production = next(e for e in environments if e.name == "production")
client.promote_environment(result.agent_id, "production", version_id=result.version_id)
numbers = client.list_phone_numbers(tenant_id)
client.route_phone_number(
numbers[0].id,
direction="outbound",
environment_id=production.id,
)
# Place a call (this incurs real cost — only call this when you mean it).
try:
call = client.place_call(numbers[0].id, to_number="+15551234567")
print(call.sid)
except CallDeskTechError as e:
print(f"call failed: {e.status_code} {e.message}")
Coverage
- Account:
me() - Agents: list/create/get/rename/delete, versions (list/publish), templates (list/create-from-template)
- Environments: list, promote (staging/production)
- Subflows: list/create/get/update/delete
- Knowledge bases: list/create/update/delete, Q&A items (list/add)
- Phone numbers: list, routing (by agent version or environment)
- Calls: place, list, get, recording
- Batch calls: list/create/get/run (CSV + dynamic variables, scheduling, call time windows)
- Webhooks: list/create/update/delete/test
- Contacts: list
- Analytics & QA: analytics, QA overview, test cases (list/create/run), Copilot suggestions
Errors
Every non-2xx response raises CallDeskTechError with .status_code and .message (the API's own error text when present).
Types
Request bodies are TypedDicts and responses are dataclasses (see calldesktech.types), inferred from the live OpenAPI spec at https://calldesk.tech/api/v1/openapi.json. Dataclasses keep the original payload on .raw in case a field isn't modeled yet.
Metadata
Release files for calldesktech 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| calldesktech-0.1.0.tar.gz | 9.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| calldesktech-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 19.3 kB
Release files / calldesktech-0.1.0.tar.gz
| Download URL | calldesktech-0.1.0.tar.gz |
|---|---|
| Size | 9.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
27c6369b174ba3e7cb10cc0734ccacf72f0d49d8794244c5c7bf1e5f965a4fce
|
|
BLAKE2b-256 checksum How to use checksums |
ecb309064c4adc133e8f6d71ce9924632d7386f9d55439358aa6b1eebde89abb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / calldesktech-0.1.0-py3-none-any.whl
| Download URL | calldesktech-0.1.0-py3-none-any.whl |
|---|---|
| Size | 9.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
39f5d72fa2646ab1d882aa2fcb57cbacec8eea1a11f979fa82e1eb62f8732f63
|
|
BLAKE2b-256 checksum How to use checksums |
2eb342391a1a06df8bcca238a0e4cbe63ad3e2970ced7f085c423a12f3f329f3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|