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

# Python SDK — calls

> Python SDK reference for placing outbound voice calls programmatically with caller-ID checks and cap planning.

`CallsClient` is reachable on every Kataven client as `client.calls`. Each method maps to one HTTP endpoint on the [Hub API](/api-reference/introduction); links to the underlying spec entry are inline below.

Place outbound voice calls. The server enforces caller-ID ownership and per-tenant cost caps before dispatching to the carrier.

## Methods at a glance

| Method      | HTTP                           | Summary                    |
| ----------- | ------------------------------ | -------------------------- |
| `originate` | `POST /api/v1/calls/originate` | Originate an outbound call |

## Reference

### `client.calls.originate(...)`

Originate an outbound call

**HTTP** — `POST /api/v1/calls/originate` · [API reference →](/api-reference/introduction#tag/Calls/operation/postApiV1CallsOriginate)

```python theme={null}
    def originate(self, from_number: str, to_number: str, agent_id: str) -> Dict[str, Any]:
```

`from_number` must be a tenant-owned, outbound-enabled E.164 number.
Cap-exceeded calls return 429 (RateLimitError).

Places an outbound call from one of your registered phone numbers to an arbitrary E.164 destination using a configured agent. Subject to per-tenant cost caps (see /api/v1/call-limits).
