Skip to main content

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: RaclipErrorAuthenticationError, PermissionError, NotFoundError, ValidationError, RateLimitError, APIError, APIConnectionError.

License

MIT.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

raclip-0.0.1.tar.gz (7.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

raclip-0.0.1-py3-none-any.whl (11.5 kB view details)

Uploaded Python 3

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

Hashes for raclip-0.0.1.tar.gz
Algorithm Hash digest
SHA256 a89a00d2895f5b1c0060f1935de49cb2ed01b61f0c7eff8c0e4026a0a3ec4181
MD5 60bac620b50738a9fe9f72e0c69db7d6
BLAKE2b-256 9133704673a564e53f1e4359581b437f64d3c3ca031dcc59692b18df5de58540

See more details on using hashes here.

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

Hashes for raclip-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4fafaf4caf93d4d948db978b331382a6f1a8948cd75b893e33880077ec3b91a8
MD5 5aca71a58a719d6fa2c56977ee935563
BLAKE2b-256 a662948da83b8dfa5f1a880ee6d0b750a6c18e921923e963cc6ceee4cf8c56d9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page