> ## Documentation Index
> Fetch the complete documentation index at: https://developers.callaro.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Python SDK

> Build a robust Python client wrapper for Callaro APIs with central auth, retries, and structured errors.

# Use a shared internal Python client today.

Until an official SDK is available, use `requests` or `httpx` with one maintained client module.

## Recommended wrapper capabilities

* Base URL and key handling from environment.
* Timeout defaults and retry policy for transient errors.
* Error payload parsing and request ID logging.
* Optional type hints for common response envelopes.

<CodeGroup>
  ```python Python theme={null}
  import os
  import requests

  BASE_URL = os.getenv("CALLARO_BASE_URL", "https://api.callaro.ai")
  API_KEY = os.environ["CALLARO_API_KEY"]

  def callaro(method, path, **kwargs):
      headers = kwargs.pop("headers", {})
      headers.setdefault("X-Api-Key", API_KEY)
      response = requests.request(method, f"{BASE_URL}{path}", headers=headers, **kwargs)
      payload = response.json()
      response.raise_for_status()
      return payload
  ```
</CodeGroup>

## Usage pattern

1. Keep endpoint helpers in service modules.
2. Use idempotency keys for sensitive mutation flows.
3. Log `request_id` and error code for all non-2xx responses.
4. Add smoke tests for campaign launch and log retrieval flows.

## Maintained downloads guidance

* Store client template in a shared internal package.
* Pin runtime and dependency versions in lockfiles.
* Track API changes and update wrapper before production rollout.

## What to do next

* Start with [`../getting-started/quickstart`](../getting-started/quickstart) for a first working workflow.
* Use [`../api-reference/overview`](../api-reference/overview) as the contract baseline.
* Import the maintained [`./postman`](./postman) collection when testing endpoint coverage and auth flows.
