Metadata-Version: 2.5
Name: nixflex
Version: 0.1.0
Summary: Official Python SDK for the Nixflex voice AI platform - AI phone agents, outbound campaigns, SMS and caller context.
Project-URL: Homepage, https://nixflex.com
Project-URL: Documentation, https://docs.nixflex.com/sdks/python
Project-URL: Repository, https://github.com/nixflex/nixflex-python
Project-URL: Changelog, https://github.com/nixflex/nixflex-python/blob/main/CHANGELOG.md
Author-email: Nixflex <stackadvisor.app@gmail.com>
License: MIT
License-File: LICENSE
Keywords: ai-receptionist,nixflex,phone,sdk,sms,telephony,telnyx,twilio,voice-agent,voice-ai
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Communications :: Telephony
Classifier: Typing :: Typed
Requires-Python: >=3.9
Requires-Dist: httpx<2,>=0.27
Provides-Extra: dev
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest>=8; extra == 'dev'
Description-Content-Type: text/markdown

# nixflex

Official Python SDK for the [Nixflex](https://nixflex.com) voice AI platform - AI phone agents, outbound campaigns, SMS and caller context.

```bash
pip install nixflex
```

```python
from nixflex import Nixflex

client = Nixflex(api_key="nxf_xxx:nxfs_xxx")   # both halves, joined by a colon

call = client.calls.create(
    agent_id="agent_15d1a9ee16294087",
    to_number="+447700900123",
    prompt="Call Sam to confirm his appointment on Tuesday at 11.",
)
print(call["call_id"])
```

Async:

```python
from nixflex import AsyncNixflex

async with AsyncNixflex(api_key="nxf_xxx:nxfs_xxx") as client:
    agents = await client.agents.list()
```

- Every endpoint: `agents`, `calls`, `campaigns`, `phone_numbers`, `callers` (caller context), `sms` (+ `sms.campaigns`), `keys`, `usage`, `webhooks`, `storage`, `llm`, `tts` - the same names as the Node SDK and the CLI.
- Retries: a 429 is retried once honouring `Retry-After`; network failures retry once; 5xx retries only `GET`/`DELETE`. A `POST` is never blind-retried - a call is never dialled twice.
- Typed errors: `NixflexAuthenticationError`, `NixflexRateLimitError` (`.retry_after_seconds`), `NixflexNotFoundError`, ...
- `verify_webhook_signature(raw_body, header, key_secret)` for signed webhooks.
- Python 3.9+, one dependency (`httpx`).

Docs: https://docs.nixflex.com/sdks/python
