Skip to main content

AutoSubtitle Python Client

Official Python client library for AutoSubtitle.net API - Automatically generate subtitles for videos.

Installation

pip install autosubtitle-api

Note: The package name on PyPI is autosubtitle-api, but you import it as autosubtitle:

from autosubtitle import AutoSubtitleClient

Quick Start

from autosubtitle import AutoSubtitleClient

# Initialize the client
client = AutoSubtitleClient(api_key="your-api-key")

# Create a subtitle job from video URL
response = client.create_subtitle(
    video_url="https://example.com/video.mp4",
    language="en",
    font_name="Montserrat",
    font_size=100,
    position="bottom"
)

transaction_id = response["transaction"]["id"]
print(f"Transaction created: {transaction_id}")

# Wait for the transaction to complete
transaction = client.wait_for_transaction(transaction_id)
print(f"Status: {transaction['status']}")

Features

  • ✅ Create subtitles from video URL or file
  • ✅ Get transaction history
  • ✅ Get specific transaction by ID
  • ✅ Get billing summary and usage
  • ✅ Wait for transaction completion with polling
  • ✅ Full type hints support
  • ✅ Comprehensive error handling

API Reference

AutoSubtitleClient

Constructor

client = AutoSubtitleClient(
    api_key: str,
    base_url: str = "https://api.autosubtitle.net"
)

Methods

create_subtitle()

Create a subtitle generation job.

response = client.create_subtitle(
    video_url: Optional[str] = None,
    video_file: Optional[Union[BinaryIO, bytes]] = None,
    language: Optional[str] = None,
    font_name: Optional[str] = None,
    font_size: Optional[int] = None,
    font_weight: Optional[str] = None,  # 'normal', 'bold', 'light'
    font_color: Optional[str] = None,  # Hex code
    highlight_color: Optional[str] = None,  # Hex code
    stroke_width: Optional[int] = None,
    stroke_color: Optional[str] = None,  # Hex code
    background_color: Optional[str] = None,  # Hex code
    background_opacity: Optional[float] = None,  # 0.0-1.0
    position: Optional[str] = None,  # 'top', 'center', 'bottom'
    y_offset: Optional[int] = None,
    words_per_subtitle: Optional[int] = None,
    enable_animation: Optional[bool] = None
)

Returns: Dict[str, Any] with transaction details

Example:

# From URL
response = client.create_subtitle(
    video_url="https://example.com/video.mp4",
    language="en",
    font_name="Montserrat"
)

# From file
with open("video.mp4", "rb") as f:
    response = client.create_subtitle(
        video_file=f,
        language="tr",
        font_size=120
    )
get_transactions()

Get all subtitle transactions.

response = client.get_transactions()

Returns: Dict[str, Any] with list of transactions

get_transaction(transaction_id: str)

Get a specific transaction by ID.

response = client.get_transaction("transaction-id")

Returns: Dict[str, Any] with transaction details

get_billing_summary()

Get billing summary and usage information.

summary = client.get_billing_summary()

Returns: Dict[str, Any] with billing information

wait_for_transaction()

Wait for a transaction to complete.

transaction = client.wait_for_transaction(
    transaction_id: str,
    interval: int = 2000,  # milliseconds
    timeout: int = 300000,  # milliseconds (5 minutes)
    on_progress: Optional[Callable[[Dict[str, Any]], None]] = None
)

Returns: Dict[str, Any] with completed transaction

Example:

def on_progress(transaction):
    print(f"Status: {transaction['status']}")

transaction = client.wait_for_transaction(
    transaction_id,
    interval=2000,
    timeout=60000,
    on_progress=on_progress
)

Error Handling

The client raises AutoSubtitleError for API errors:

from autosubtitle import AutoSubtitleClient, AutoSubtitleError

try:
    response = client.create_subtitle(video_url="invalid-url")
except AutoSubtitleError as e:
    print(f"Error: {e.message}")
    print(f"Status: {e.status}")
    print(f"Code: {e.code}")

Examples

Complete Workflow

from autosubtitle import AutoSubtitleClient

client = AutoSubtitleClient(api_key="your-api-key")

# Create subtitle job
response = client.create_subtitle(
    video_url="https://example.com/video.mp4",
    language="en",
    font_name="Montserrat",
    font_size=100,
    position="bottom",
    font_color="#FFFFFF",
    highlight_color="#800080"
)

transaction_id = response["transaction"]["id"]

# Wait for completion
def on_progress(transaction):
    print(f"Processing... Status: {transaction['status']}")

transaction = client.wait_for_transaction(
    transaction_id,
    on_progress=on_progress
)

if transaction["status"] == "completed":
    print(f"Result video: {transaction['result_video_url']}")
    print(f"Transcription: {transaction['transcription']}")

Get Transaction History

response = client.get_transactions()

for transaction in response["projects"]:
    print(f"ID: {transaction['id']}")
    print(f"Status: {transaction['status']}")
    print(f"Created: {transaction['created_at']}")
    print("---")

Get Billing Information

summary = client.get_billing_summary()

print(f"Plan: {summary['plan']['name']}")
print(f"Usage: {summary['usage']['used']}/{summary['usage']['limit']}")
print(f"Reset Date: {summary['usage']['resetDate']}")

Testing

Unit Tests (with mocking)

python -m pytest tests/test_client.py

Integration Tests (with real API)

export AUTOSUBTITLE_API_KEY="your-api-key"
python -m pytest tests/test_integration.py

Requirements

  • Python 3.8+
  • requests >= 2.28.0

License

MIT

Support

Metadata

Release files for autosubtitle-api 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for autosubtitle-api 1.0.1
File Size Uploaded
autosubtitle_api-1.0.1.tar.gz 9.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for autosubtitle-api 1.0.1
File Interpreter ABI Platform
autosubtitle_api-1.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 16.6 kB

Release files / autosubtitle_api-1.0.1.tar.gz

Download URL autosubtitle_api-1.0.1.tar.gz
Size 9.6 kB
Tags Source
SHA-256 checksum
How to use checksums
cd70e2a54f2757620761da91dade95caaba2dbfea31b84a196ca213e2afae01f
BLAKE2b-256 checksum
How to use checksums
b2ae109ab7922b240d0acfb0c313ed20f65225e6ec160e62d10c02c18127a59e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.6

Release files / autosubtitle_api-1.0.1-py3-none-any.whl

Download URL autosubtitle_api-1.0.1-py3-none-any.whl
Size 7.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f12e3b4f6955b1086b2408f3ebd10cf356fef92f12e9dd27dce9242362d8fdbf
BLAKE2b-256 checksum
How to use checksums
287e5cd99da93f4446a4103fb60c077bb8fe71fe193938bd09bb9bd1b853adf0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.6

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page