Python SDK
Python SDK Documentation
Official Python SDK for the OrbitalsAI API with sync and async support. Build powerful African language transcription into your Python applications.
Installation
Install the SDK using pip:
bash
bash
pip install orbitalsaiAuthentication
Get your API key from the dashboard and initialize the client:
main.py
python
import orbitalsaiclient = orbitalsai.Client(api_key="your_api_key_here")Best Practice
Store your API key as an environment variable to keep it secure.
Basic Usage
Transcribe an audio file with automatic waiting:
main.py
python
import orbitalsaiclient = orbitalsai.Client(api_key="your_api_key_here")# Transcribe with automatic waitingtranscript = client.transcribe("audio.mp3", model_name="Perigee-1")print(transcript.text)print(transcript.audio_duration) # Duration in secondsAutomatic Waiting
The
transcribe() method automatically waits for the transcription to complete before returning.Specify a Language
Transcribe with a specific African language:
main.py
python
# Transcribe in Hausatranscript = client.transcribe( "audio.mp3", language="hausa")# Transcribe in Igbotranscript = client.transcribe( "audio.mp3", language="igbo")See the full list of supported languages.
Model Selection
Choose the best AI model for your needs. You can list available models and their pricing:
main.py
python
# List available modelsmodels = client.get_models()for model in models: print(f"{model.model_name}: $\{model.transcription_rate_per_hour}/hr")# Transcribe using a specific modeltranscript = client.transcribe( "audio.mp3", model_name="Perigee-1" # Default model)Generate SRT Subtitles
Generate subtitle files in SRT format:
main.py
python
transcript = client.transcribe( "audio.mp3", language="yoruba", generate_srt=True)print(transcript.text)print(transcript.srt_content) # SRT subtitle content# Save to filewith open("subtitles.srt", "w", encoding="utf-8") as f: f.write(transcript.srt_content)Async Usage
Use the async client for non-blocking operations:
main.py
python
import asyncioimport orbitalsaiasync def transcribe_audio(): client = orbitalsai.AsyncClient(api_key="your_api_key_here") transcript = await client.transcribe("audio.mp3", language="swahili", model_name="Perigee-1") print(transcript.text)asyncio.run(transcribe_audio())Concurrent Processing
Use the async client to process multiple files concurrently for better performance.
Manual Task Control
Submit a transcription task without waiting:
main.py
python
# Submit tasktask = client.submit_transcription_task( "audio.mp3", language="hausa")print(f"Task ID: {task.task_id}")print(f"Status: {task.status}")# Check status latertask = client.get_transcription_task(task.task_id)if task.status == "completed": transcript = client.get_transcript(task.task_id) print(transcript.text)Error Handling
Handle common errors gracefully:
main.py
python
from orbitalsai.exceptions import ( AuthenticationError, InsufficientBalanceError, TranscriptionError, TimeoutError)try: transcript = client.transcribe("audio.mp3", language="pidgin") print(transcript.text)except AuthenticationError: print("Invalid API key")except InsufficientBalanceError: print("Not enough balance. Please top up your account.")except TranscriptionError as e: print(f"Transcription failed: {e}")except TimeoutError: print("Transcription took too long")except Exception as e: print(f"Unexpected error: {e}")Balance Management
Check your account balance and usage:
main.py
python
# Check balancebalance = client.get_balance()print(f"Current balance: $\{balance.balance:.2f}")print(f"Last updated: $\{balance.last_updated}")# Get usage historyusage = client.get_usage_history()for record in usage: print(f"Date: {record.date}, Amount: $\{record.amount:.2f}")Complete Example
A complete example with error handling and balance checking:
main.py
python
import orbitalsaifrom orbitalsai.exceptions import InsufficientBalanceError, TranscriptionErrorimport osdef main(): # Initialize client client = orbitalsai.Client(api_key=os.environ["ORBITALS_API_KEY"]) # Check balance balance = client.get_balance() print(f"Current balance: $\{balance.balance:.2f}") if balance.balance < 1.0: print("⚠️ Low balance. Please top up.") return # Transcribe audio try: transcript = client.transcribe( "audio.mp3", language="hausa", model_name="Perigee-1", generate_srt=True ) print("✅ Transcription successful!") print(f"Text: {transcript.text}") print(f"Duration: {transcript.audio_duration:.2f}s") print(f"Words: {transcript.word_count}") # Save transcript with open("transcript.txt", "w", encoding="utf-8") as f: f.write(transcript.text) # Save subtitles if transcript.srt_content: with open("subtitles.srt", "w", encoding="utf-8") as f: f.write(transcript.srt_content) except InsufficientBalanceError: print("❌ Insufficient balance") except TranscriptionError as e: print(f"❌ Transcription failed: {e}")if __name__ == "__main__": main()