Official client libraries for the Transcript Create API. Choose the SDK that matches your preferred programming language.
Full-featured async Python client with Pydantic models and comprehensive error handling.
- Installation:
pip install transcript-create-client - Documentation: clients/python/README.md
- Key Features:
- Async/await support with httpx
- Full type hints with Pydantic
- Automatic retries with exponential backoff
- Client-side and adaptive rate limiting
- Custom exception classes
- Job polling support
- 85% test coverage
Quick Example:
from transcript_create_client import TranscriptClient
async with TranscriptClient(base_url="http://localhost:8000") as client:
job = await client.create_job("https://youtube.com/watch?v=...", "single")
completed = await client.wait_for_completion(job.id)
transcript = await client.get_transcript(job.id)Universal TypeScript/JavaScript client that works in Node.js and browsers.
- Installation:
npm install @transcript-create/sdk - Documentation: clients/javascript/README.md
- Key Features:
- Full TypeScript support with complete type definitions
- Promise-based async API
- Automatic retries with exponential backoff
- Client-side and adaptive rate limiting
- Custom error classes
- Tree-shakeable ESM and CJS builds
- Browser and Node.js support
Quick Example:
import { TranscriptClient } from '@transcript-create/sdk';
const client = new TranscriptClient({ baseUrl: 'http://localhost:8000' });
const job = await client.createJob('https://youtube.com/watch?v=...', 'single');
const completed = await client.waitForCompletion(job.id);
const transcript = await client.getTranscript(job.id);| Feature | Python | JavaScript/TypeScript |
|---|---|---|
| Async/await | ✅ | ✅ |
| Type safety | ✅ (Pydantic) | ✅ (TypeScript) |
| Retry logic | ✅ | ✅ |
| Rate limiting | ✅ Adaptive | ✅ Adaptive |
| Error handling | ✅ Custom exceptions | ✅ Custom error classes |
| Job polling | ✅ | ✅ |
| Browser support | ❌ | ✅ |
| Unit tests | ✅ 21 tests, 85% coverage | ✅ 13 tests |
All SDKs support creating transcription jobs and waiting for completion:
Python:
job = await client.create_job(url, kind="single")
completed = await client.wait_for_completion(job.id, timeout=3600)JavaScript:
const job = await client.createJob(url, 'single');
const completed = await client.waitForCompletion(job.id, { timeout: 3600000 });Python:
results = await client.search(
query="machine learning",
source="native",
limit=50
)JavaScript:
const results = await client.search({
query: 'machine learning',
source: 'native',
limit: 50
});Python:
srt = await client.export_srt(video_id)
vtt = await client.export_vtt(video_id)
pdf = await client.export_pdf(video_id)JavaScript:
const srtBlob = await client.exportSRT(videoId);
const vttBlob = await client.exportVTT(videoId);
const pdfBlob = await client.exportPDF(videoId);Both SDKs support similar configuration options:
| Option | Description | Python | JavaScript |
|---|---|---|---|
| Base URL | API endpoint | base_url |
baseUrl |
| API Key | Authentication | api_key |
apiKey |
| Timeout | Request timeout | timeout |
timeout |
| Max Retries | Retry attempts | max_retries |
maxRetries |
| Rate Limit | Requests/second | rate_limit |
rateLimit |
Both SDKs provide similar error hierarchies:
APIError- Base error classAuthenticationError- Auth failuresInvalidAPIKeyError- Invalid API keyNotFoundError- Resource not foundTranscriptNotFoundError- Transcript not foundValidationError- Request validation failedRateLimitError- Rate limit exceededQuotaExceededError- API quota exceededServerError- Server errors (5xx)NetworkError- Network failuresTimeoutError- Request timeout
Contributions to the SDKs are welcome! Please see:
# Tag and push
git tag python-sdk-v0.1.0
git push origin python-sdk-v0.1.0
# GitHub Actions will automatically publish to PyPI# Tag and push
git tag javascript-sdk-v0.1.0
git push origin javascript-sdk-v0.1.0
# GitHub Actions will automatically publish to npmApache License 2.0 - see LICENSE