Metadata-Version: 2.1
Name: ultravox-client
Version: 0.0.7
Summary: Python client SDK for Ultravox.
Home-page: https://ultravox.ai
License: Apache-2.0
Keywords: ultravox,audio,realtime,artificial intelligence
Author: Fixie Team
Author-email: hello@fixie.ai
Requires-Python: >=3.11,<4.0
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Dist: livekit (>=0.18.1,<0.19.0)
Requires-Dist: numpy (>=2.1.3,<3.0.0)
Requires-Dist: pyee (>=11.0.1,<12.0.0)
Requires-Dist: sounddevice (>=0.5.1,<0.6.0)
Requires-Dist: websockets (>=14.1,<15.0)
Project-URL: Documentation, https://fixie-ai.github.io/ultradox/
Project-URL: Repository, https://github.com/fixie-ai/ultravox-client-sdk-python
Description-Content-Type: text/markdown

# Ultravox client SDK for Python
Python client SDK for [Ultravox](https://ultravox.ai).

[![pypi-v](https://img.shields.io/pypi/v/ultravox-client.svg?label=ultravox-client&color=orange)](https://pypi.org/project/ultravox-client/)

## Getting started

```bash
pip install ultravox-client
```

## Usage

```python
import asyncio
import signal

import ultravox_client as uv

session = uv.UltravoxSession()
done = asyncio.Event()

@session.on("status")
def on_status():
    if session.status == uv.UltravoxSessionStatus.DISCONNECTED:
        done.set()

await session.join_call(os.getenv("JOIN_URL", None))
loop = asyncio.get_running_loop()
loop.add_signal_handler(signal.SIGINT, lambda: done.set())
loop.add_signal_handler(signal.SIGTERM, lambda: done.set())
await done.wait()
await session.leave_call()
```

See the included example app for a more complete example. To get a `joinUrl`, you'll want to integrate your server with the [Ultravox REST API](https://fixie-ai.github.io/ultradox/).

