Metadata-Version: 2.4
Name: tuplets-ai
Version: 0.1.0
Summary: Official Python SDK for the Tuplets API
Project-URL: Homepage, https://tuplets.ai
Project-URL: Documentation, https://tuplets.ai/docs
Project-URL: API, https://api.tuplets.ai
Author-email: Tuplets <contact@tuplets.ai>
License: Proprietary
Keywords: audio,sdk,speech-to-text,transcription,tuplets
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: Other/Proprietary License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Multimedia :: Sound/Audio :: Speech
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.10
Requires-Dist: httpx<1.0,>=0.27
Provides-Extra: dev
Requires-Dist: pytest<10,>=8.3; extra == 'dev'
Description-Content-Type: text/markdown

# Tuplets Python SDK

Official Python SDK for the Tuplets API.

## Installation

```bash
pip install tuplets-ai
```

## Usage

```python
from tuplets_ai import JobCreateParams, TupletsClient

client = TupletsClient(api_key="tb_your_api_key")

job = client.jobs.create_from_file(
    "interview.mp3",
    params=JobCreateParams(language="en", diarization=True),
)

final_job = client.jobs.wait(job.id)

if final_job.status == "completed":
    transcript = client.jobs.download_result(job.id)
    print(transcript["text"])
```

## Direct Uploads

```python
from tuplets_ai import JobCreateParams, TupletsClient

client = TupletsClient(api_key="tb_your_api_key")

upload = client.uploads.create_target(
    filename="large-audio.wav",
    size=12_000_000,
    content_type="audio/wav",
)
client.uploads.upload_file(upload, "large-audio.wav")

job = client.jobs.create_from_uploaded_audio(
    object_key=upload.object_key,
    upload_token=upload.upload_token,
    params=JobCreateParams(language="en", transcription_model="premium"),
)
```

## Async Usage

```python
from tuplets_ai import AsyncTupletsClient, JobCreateParams

async def main() -> None:
    async with AsyncTupletsClient(api_key="tb_your_api_key") as client:
        job = await client.jobs.create_from_url(
            "https://storage.example.com/call.mp3",
            params=JobCreateParams(language="en", pii_processing=True),
        )
        final_job = await client.jobs.wait(job.id)
        if final_job.status == "completed":
            transcript = await client.jobs.download_result(job.id)
            print(transcript["text"])
```

## Supported Resources

- `client.jobs` for transcription job submission, polling, cancellation, and result download
- `client.uploads` for signed browser/direct upload targets
- `client.solutions` for public solutions inquiries
