Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

AHS CTI Python SDK

Python SDK for the AHS CTI Platform — initiate and control outbound calls via REST API.

Requirements: Python ≥ 3.9 · httpx ≥ 0.25


Installation

pip install ahs-cti-api-sdk

Quick Start

API-Key Authentication (recommended for server integrations)

from ahs_cti import CtiClient

with CtiClient(base_url="https://cti.example.com", api_key="ctsk_...", tenant_id=1) as client:
    result = client.calls.dial("+919876543210")
    print(result.call_id)   # save this for end_call

    end = client.calls.end_call(
        result.call_id,
        disposition="INTERESTED",
        list_comments="Customer wants a demo next week",
    )
    print(end.duration)

Credential Authentication

from ahs_cti import CtiClient

with CtiClient(base_url="https://cti.example.com", user_id="agent1", password="secret") as client:
    result = client.calls.dial("+919876543210", caller_id="AH2007C")

Async Client

import asyncio
from ahs_cti import AsyncCtiClient

async def main():
    async with AsyncCtiClient(base_url="https://cti.example.com", api_key="ctsk_...") as client:
        result = await client.calls.dial("+919876543210")
        print(result.call_id)

asyncio.run(main())

ClientConfig Reference

For full control over transport settings, use ClientConfig:

from ahs_cti import CtiClient, ClientConfig

config = ClientConfig(
    base_url="https://cti.example.com",
    timeout=15.0,
    verify_ssl=False,   # for self-signed certificates
    max_retries=5,
)

with CtiClient(config=config, api_key="ctsk_...") as client:
    result = client.calls.dial("+919876543210")
Parameter Type Default Description
base_url str required Root URL of the CTI platform
timeout float 30.0 Request timeout in seconds
verify_ssl bool True Set False for self-signed certs
max_retries int 3 Retry attempts on 5xx / network errors

Error Handling

from ahs_cti import CtiClient, CtiAuthError, CtiApiError, CtiRetryExhaustedError

with CtiClient(...) as client:
    try:
        result = client.calls.dial("+919876543210")
    except CtiAuthError:
        # Invalid or expired API key / credentials
        print("Authentication failed")
    except CtiRetryExhaustedError as e:
        # All retry attempts failed (5xx or network)
        print(f"Failed after {e.attempts} attempts: {e.last_exc}")
    except CtiApiError as e:
        # Any other API error (400, 404, 422 …)
        print(f"API error [{e.status_code}]: {e}")

Exception Hierarchy

CtiError
├── CtiAuthError          — 401 / login failure
└── CtiApiError           — 4xx / 5xx from the platform
    └── CtiRetryExhaustedError  — all retries exhausted

Retry Behaviour

The SDK automatically retries on 500, 502, 503, 504 responses and transient network errors (ConnectError, TimeoutException). Retries use exponential backoff:

Attempt Delay
1st (initial) none
2nd retry 2 s
3rd retry 4 s
4th retry 8 s

Set max_retries=0 in ClientConfig to disable retries entirely.


Self-Signed Certificates

Internal / staging servers often use self-signed TLS certificates. Pass verify_ssl=False:

client = CtiClient(base_url="https://192.168.1.10:8082", api_key="ctsk_...", verify_ssl=False)

Do not disable SSL verification in production.

Release files for ahs-cti-api-sdk 0.1.0a5

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

Source distribution (sdist)

Source distribution for ahs-cti-api-sdk 0.1.0a5
File Size Uploaded
ahs_cti_api_sdk-0.1.0a5.tar.gz 19.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ahs-cti-api-sdk 0.1.0a5
File Interpreter ABI Platform
ahs_cti_api_sdk-0.1.0a5-py3-none-any.whl Python 3 none any Details

Total release size: 38.4 kB

Release files / ahs_cti_api_sdk-0.1.0a5.tar.gz

Download URL ahs_cti_api_sdk-0.1.0a5.tar.gz
Size 19.5 kB
Tags Source
SHA-256 checksum
How to use checksums
efcb718f48f071781489691b0a4868b1ed58732e5efe05a47a72be14d837fbec
BLAKE2b-256 checksum
How to use checksums
7beb407d564e4f120f6edfdaaea684f9189784cc5351ec8c306f9a85d414c31c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 May 22, 2026.

Transparency log

Release files / ahs_cti_api_sdk-0.1.0a5-py3-none-any.whl

Download URL ahs_cti_api_sdk-0.1.0a5-py3-none-any.whl
Size 18.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bb57d4b7ae1e82a9c4c24f7cc30830e584a205bdcfd9c7497f333ce42bb68250
BLAKE2b-256 checksum
How to use checksums
097456d118b0247abb8a0ad42d3ef6682c3785b47e7e4bf70e53c25783eefdcc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 May 22, 2026.

Transparency log
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