Official Python SDK for the raclip platform.
Project description
raclip
The official Python SDK for the raclip platform. Read device state and fetch call recordings from the raclip API with a few lines of idiomatic Python.
Status:
0.0.1— read-only surface (devices + calls). Device mutation and call deletion land in a later release.
Install
pip install raclip
# or
uv add raclip
Requires Python 3.10+.
Authenticate
Grab an API key from the raclip console and either pass it explicitly or set
RACLIP_API_KEY in your environment:
export RACLIP_API_KEY="raclip_prod_..."
The SDK never sends your org_id on the wire — the API gateway derives it
from your key and enforces it server-side, so there is nothing to configure.
Quickstart
from raclip import Client
with Client() as client:
devices = client.devices.list()
print(f"{devices.total} devices in this org")
for device in devices.devices:
print(device.device_id, device.status, device.last_seen)
if devices.devices:
device_id = devices.devices[0].device_id
calls = client.calls.list(device_id, per_page=5)
for call in calls.calls:
print(call.call_id, call.duration_seconds, "sec")
print(" download:", call.download_url)
call.download_url is a short-lived presigned S3 URL — fetch it with curl,
httpx, aws s3 cp, or the streaming helper the SDK ships:
client.calls.download(device_id, call.call_id, dest="recording.mp3")
Async
The SDK ships a fully async client that mirrors the sync API one-for-one:
import asyncio
from raclip import AsyncClient
async def main():
async with AsyncClient() as client:
devices = await client.devices.list()
print(f"{devices.total} devices")
asyncio.run(main())
Endpoints covered in 0.0.1
| Method | Description |
|---|---|
client.devices.list() |
paginated list of devices |
client.devices.stats() |
per-org device health summary |
client.devices.get(device_id) |
full device record |
client.devices.status(device_id) |
current status snapshot |
client.calls.list(device_id) |
paginated list of call recordings |
client.calls.latest(device_id) |
most recent recording |
client.calls.get(device_id, call_id) |
call metadata + presigned URL |
client.calls.info(device_id, call_id) |
metadata without generating a URL |
client.calls.statistics(device_id) |
aggregate call stats |
client.calls.download(device_id, call_id, dest=...) |
stream MP3 to a file or file-like |
AsyncClient exposes the same methods under the same names.
Errors
Every non-2xx response is converted into a typed exception so you can
try/except the specific failures you care about:
from raclip import (
Client, AuthenticationError, NotFoundError, RateLimitError
)
with Client() as client:
try:
call = client.calls.get("device-id", "call-id")
except NotFoundError:
print("call is gone")
except RateLimitError as e:
print(f"slow down; retry after {e.retry_after}s")
except AuthenticationError:
print("check your API key")
Full hierarchy: RaclipError → AuthenticationError, PermissionError,
NotFoundError, ValidationError, RateLimitError, APIError,
APIConnectionError.
License
MIT.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file raclip-0.0.1.tar.gz.
File metadata
- Download URL: raclip-0.0.1.tar.gz
- Upload date:
- Size: 7.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.22
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a89a00d2895f5b1c0060f1935de49cb2ed01b61f0c7eff8c0e4026a0a3ec4181
|
|
| MD5 |
60bac620b50738a9fe9f72e0c69db7d6
|
|
| BLAKE2b-256 |
9133704673a564e53f1e4359581b437f64d3c3ca031dcc59692b18df5de58540
|
File details
Details for the file raclip-0.0.1-py3-none-any.whl.
File metadata
- Download URL: raclip-0.0.1-py3-none-any.whl
- Upload date:
- Size: 11.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.22
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4fafaf4caf93d4d948db978b331382a6f1a8948cd75b893e33880077ec3b91a8
|
|
| MD5 |
5aca71a58a719d6fa2c56977ee935563
|
|
| BLAKE2b-256 |
a662948da83b8dfa5f1a880ee6d0b750a6c18e921923e963cc6ceee4cf8c56d9
|