Dubbing Quickstart
Dub audio or video into another language in 5 minutes. No SDK needed — just REST API calls.
Prerequisites
- A Pinch API key from the Developer Portal
- An audio file (WAV, MP3, FLAC, OGG, M4A, AAC, WMA) or video file (MP4, MOV, MKV, WebM, AVI) — or a public URL
Quick example
# 1. Create a dubbing job from a URL
curl -X POST https://api.startpinch.com/api/dubbing/jobs \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"source_url": "https://example.com/video.mp4",
"source_lang": "auto",
"target_lang": "es"
}'
# Response: { "job_id": "abc-123", "status": "pending", ... }
# 2. Poll for completion
curl https://api.startpinch.com/api/dubbing/jobs/abc-123 \
-H "Authorization: Bearer YOUR_API_KEY"
# 3. Download the result when status is "completed"
curl https://api.startpinch.com/api/dubbing/jobs/abc-123/result \
-H "Authorization: Bearer YOUR_API_KEY"
# Response: { "download_url": "https://...", "expires_at": "..." }
Upload a local file
If your file isn’t publicly accessible, upload it first:
# 1. Get a presigned upload URL
curl -X POST https://api.startpinch.com/api/dubbing/upload-url \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"filename": "my-video.mp4", "content_type": "video/mp4"}'
# Response: { "upload_url": "https://...", "source_url": "https://..." }
# 2. Upload the file directly to S3
curl -X PUT "UPLOAD_URL_FROM_STEP_1" \
-H "Content-Type: video/mp4" \
--data-binary @my-video.mp4
# 3. Create the dubbing job using the source_url from step 1
curl -X POST https://api.startpinch.com/api/dubbing/jobs \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"source_url": "SOURCE_URL_FROM_STEP_1",
"target_lang": "es"
}'
Job lifecycle
Jobs go through these statuses:
pending → downloading → processing → uploading → completed
→ failed
Poll GET /api/dubbing/jobs/{id} to track progress. Typical processing time is 2-5 minutes for 1 minute of input.
Pricing & limits
| Price | $0.50 per minute of input media |
| Max duration | 10 minutes |
| Min duration | 1 second |
| Max file size | 500 MB |
| Input formats | Video: MP4, MOV, MKV, WebM, AVI; Audio: WAV, MP3, FLAC, OGG, M4A, AAC, WMA |
| Output format | Video input: MP4 (H.264 + AAC); Audio input: MP3 or WAV |
| Rate limit | 10 jobs per minute |
| Output expiry | Download URLs expire after 48 hours |
Supported languages
| Code | Language |
|---|---|
en | English |
es | Spanish |
fr | French |
de | German |
it | Italian |
pt | Portuguese |
ru | Russian |
ja | Japanese |
ko | Korean |
zh | Chinese |
Next steps
- Dubbing API Reference — full endpoint documentation
- Dubbing Dashboard — dub audio and video from the browser
Guides
- How to Dub Videos with Python — complete Python tutorial with batch processing
- AI Video Dubbing API — deep dive into how dubbing APIs work
- Dubbing API Pricing Comparison — Pinch vs ElevenLabs vs Rask.ai pricing breakdown