SIPTEL Python SDK
Official Python client for the SIPTEL REST API — AI voice agents, programmable Voice API, SMS, phone numbers, and SIP trunks.
Install
pip install siptel
Quick start
Set your API key (from the dashboard):
export SIPTEL_API_KEY="sk_live_..." # Linux/macOS
# set SIPTEL_API_KEY=sk_live_... # Windows CMD
from siptel import Client
client = Client()
# List AI agents
agents = client.agent.list_agents()
# Outbound AI agent call (see docs for all parameters)
result = client.agent.create_call(
phone_number="+31612345678",
caller_id="+31201234567",
voice="Rachel",
record=True,
voicemail_action="hangup",
greeting_message="Hello!",
task_prompt="You are a helpful assistant.",
language="en-US",
)
# Voice API
call = client.voice.retrieve_call("CA20251109171204335505")
# SMS
client.sms.send(
app_id="...",
phone_number="+31612345678",
sender_id="SIPTEL",
text="Hello from SIPTEL",
)
# Numbers
numbers = client.numbers.list()
Authentication
All requests use Authorization: Bearer <api_key>. You can pass the key explicitly:
client = Client(api_key="sk_live_...")
Configuration
| Option | Environment variable | Default |
|---|---|---|
| API key | SIPTEL_API_KEY |
— |
| Base URL | SIPTEL_BASE_URL (not auto-read; pass base_url=) |
https://api.siptel.ai |
User-Agent |
SIPTEL_USER_AGENT |
SiptelPythonSDK/0.1 |
client = Client(
api_key="sk_live_...",
base_url="https://api.siptel.ai",
timeout=60.0,
)
Resource layout
| Namespace | API area |
|---|---|
client.agent |
AI agent calls, list/get agents |
client.voice |
Voice API (play, gather, transfer, hangup, call status) |
client.sip |
SIP users / trunks |
client.sms |
Send SMS, list SMS apps |
client.numbers |
List/search/purchase/assign numbers |
Errors
The SDK raises typed exceptions on HTTP error responses:
from siptel import (
Client,
AuthenticationError,
InvalidRequestError,
NotFoundError,
PaymentRequiredError,
RateLimitError,
APIError,
)
try:
client.sms.send(...)
except InvalidRequestError as e:
print(e.status_code, e.response_body)
Low-level API
For endpoints not yet wrapped, use the escape hatch:
client.post("/v1/agent/call", json={...})
client.get("/v1/custom/path")
Requirements
- Python 3.10+
requests
License
MIT — see LICENSE.
Metadata
Release files for siptel 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| siptel-0.1.1.tar.gz | 7.5 kB | Without provenance | Details for siptel-0.1.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| siptel-0.1.1-py3-none-any.whl | Python 3 | none | any | Details for siptel-0.1.1-py3-none-any.whl |
Total release size: 18.9 kB
Release files / siptel-0.1.1.tar.gz
| Download URL | siptel-0.1.1.tar.gz |
|---|---|
| Size | 7.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0a85afa4668a9f40454f1fa5ba0e2fd70a51355009ca885203b6504243f1f003
|
|
BLAKE2b-256 checksum How to use checksums |
a7875953ac19b9de0573bdd5939705cca5bbb52477102004304c115d70d101f6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Release files / siptel-0.1.1-py3-none-any.whl
| Download URL | siptel-0.1.1-py3-none-any.whl |
|---|---|
| Size | 11.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9b7c8c3c9c07ab7641017ad06571f90139c6aaafb1237b1a224509ec878c741a
|
|
BLAKE2b-256 checksum How to use checksums |
2c9cabd940f3deb49ece8c150541a08eded9cc30f08ae264e370a7dd7270213e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Security for siptel 0.1.1
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.