Auto captions API, $0.02 a minute
Word-by-word captions, burned into any video with one call
Send a video URL and get back an MP4 with TikTok-style captions burned in, plus SRT, VTT, ASS and a word-timed transcript. It costs $0.02 per output minute with transcription included, and a 30-second clip renders in 30 to 43 seconds. No ffmpeg to install, no GPU, no queue to run.
- Transcription included
- Clips up to 15 minutes
- Right-to-left scripts
Word timings
Quick start
One POST, one captioned MP4
Send the clip's URL and a style. The call waits up to 60 seconds for the result, so a 30-second clip comes back finished in the same response.
curl "https://api.reelsdk.com/v1/captions" \
-H "Authorization: Bearer $REELSDK_KEY" \
--json '{
"video_url": "https://your.app/clip.mp4",
"style": "bold"
}'{
"job": {
"id": "job_ujzde8gxd6ncf10epf91",
"op": "captions",
"status": "succeeded",
"stage": null,
"created_at": "2026-10-26T09:14:03.512Z",
"finished_at": "2026-10-26T09:14:39.087Z",
"outputs": {
"video": "https://api.reelsdk.com/f/out/job_ujzde8gxd6ncf10epf91/video.mp4",
"transcript": "https://api.reelsdk.com/f/out/job_ujzde8gxd6ncf10epf91/transcript.json",
"srt": "https://api.reelsdk.com/f/out/job_ujzde8gxd6ncf10epf91/captions.srt",
"vtt": "https://api.reelsdk.com/f/out/job_ujzde8gxd6ncf10epf91/captions.vtt",
"ass": "https://api.reelsdk.com/f/out/job_ujzde8gxd6ncf10epf91/captions.ass"
},
"result": null,
"duration_s": 30.03,
"error": null,
"usage": {
"output_seconds": 30.03,
"audio_seconds": 30.03,
"tts_characters": 0,
"images": 0
},
"poll_url": "https://api.reelsdk.com/v1/jobs/job_ujzde8gxd6ncf10epf91"
}
}Jobs that outlast the wait answer 202 with a poll_url. Add webhook_url and we POST the finished job to you instead.
Caption styles
Three presets, or your own style
Same clip, same words. These frames were rendered by the caption engine with each preset's real fonts.
Start from a preset, change what you need
Pass a style object instead of a name. Anything you leave out comes from the preset, and colors take hex codes or names like yellow, gold or magenta.
"style": {
"preset": "karaoke",
"font": "Anton",
"position": "middle",
"max_words": 2,
"uppercase": true,
"highlight_color": "#FF5C8A",
"size": 1.3
}What you control
Everything a captioning pipeline needs, in one field or two
Transcription built in
Whisper large-v3-turbo transcribes the audio and detects the language. Add a
promptof up to 500 characters so names, brands and jargon come out spelled right.Fonts, colors and layout
Montserrat, Anton, Bebas Neue or Poppins, at the top, middle or bottom, 1 to 8 words at a time and 0.5x to 2x size, in your own text, highlight and outline colors.
Right-to-left and non-Latin scripts
Arabic, Hebrew, Persian, Urdu and other right-to-left languages read the right way, karaoke fill included. Bundled Noto fonts cover Japanese, Chinese, Korean, Thai, Devanagari, Lao and Myanmar.
Subtitle files with every render
Each job also returns
transcript.jsonwith a start and end time for every word, pluscaptions.srt,captions.vttandcaptions.ass.Your framing, your audio
The clip keeps its aspect ratio and frame rate up to 60 fps, with the short side capped at 1,080 px. AAC audio is copied untouched and HDR footage is tone-mapped to standard range.
Wait, poll or webhook
Calls wait up to 60 seconds for the finished job, or 300 with
?wait=. Longer jobs answer 202 with apoll_url, or we POST the job to yourwebhook_url, signed with HMAC-SHA256.
Specs
Captions API specs
| Endpoint | POST /v1/captions |
|---|---|
| Input | video_url, any public link to a video ffmpeg can decode (MP4, MOV, WebM, MKV and more), or a file you upload first with POST /v1/uploads (up to 100 MB) |
| Size and length | Up to 500 MB and 15 minutes. The clip needs an audio track unless you send your own words. |
| Video out | H.264 MP4 in the source aspect ratio, short side up to 1,080 px, up to 60 fps |
| Audio out | AAC copied as is; other audio is encoded to 192 kbit/s AAC |
| Files returned | video.mp4, transcript.json, captions.srt, captions.vtt, captions.ass |
| Transcription | Whisper large-v3-turbo, language detected or set with language, optional prompt up to 500 characters, or skip it with your own words (up to 50,000) |
| Styles | bold (default), karaoke, minimal, or a style object with 4 fonts, 3 positions, 1 to 8 words and 0.5x to 2x size |
| Scripts | Right to left for Arabic, Persian, Urdu, Pashto, Sindhi, Hebrew and Yiddish; Noto fonts for CJK, Thai, Devanagari, Lao and Myanmar |
| Render time | 30 to 43 seconds for a 30-second 1080x1920 clip, measured end to end |
| Price | $0.02 per output minute, transcription included |
| Delivery | Download links live for 7 days; webhooks signed with HMAC-SHA256, 3 delivery attempts |
Pricing
$0.02 a minute, transcription included
You pay for the length of the video you get back. No subscription, no minimum, no per-seat plan.
$0.02per output minute
Whisper transcription, burn-in and all four subtitle files are part of that price.
Prepaid credit, and your first $1 of renders is free: that's 50 minutes of captions.
| Provider and plan | Per minute | 100 minutes |
|---|---|---|
| reelsdkPay as you go, slideshows and captions | $0.02/min | $2.00 |
| ShotstackPay as you go, $10 for 50 minutes | $0.20/min | $20.00 |
| ShotstackStarter, $39 a month for 250 minutes | $0.16/min | $16.00 |
| JSON2VideoProfessional, $49.95 a month for 200 minutes | $0.25/min | $25.00 |
| CreatomateEssential, $54 a month, 1080p at 25 fps | $0.84/min | $84.00 |
Use cases
Where captions earn their keep
- 01
Clips for TikTok, Reels and Shorts
Most people scroll with the sound off. Burn bold or karaoke captions into vertical clips before your users post or schedule them.
- 02
Podcast and interview clips
Put guest names, brands and show jargon in the prompt so they come out spelled right, and every word lights up as it's said.
- 03
A captions button in your app
Caption user uploads in a Lovable, bolt, Supabase or Vercel app without running ffmpeg or GPU workers yourself.
- 04
Subtitles for players and YouTube
The same call returns captions.vtt and captions.srt, ready for your own player or a YouTube upload next to the MP4.
FAQ
Captions API questions
How much does the captions API cost?
$0.02 per minute of output video, with transcription included. There's no subscription and no minimum: you prepay credit, and your first $1 of renders is free, which covers 50 minutes of captions.
How long does it take to caption a video?
On our measured runs, captioning a 30-second 1080x1920 clip takes 30 to 43 seconds end to end, and a fresh render machine is ready in 1.87 seconds at the median. Create calls wait up to 60 seconds by default, so a clip like that comes back finished in the first response.
Which languages can it caption?
Whisper large-v3-turbo detects the spoken language, or you set it with the language field. Captions run right to left for Arabic, Persian, Urdu, Pashto, Sindhi, Hebrew and Yiddish, and bundled Noto fonts cover Arabic, Hebrew, Japanese, Chinese, Korean, Thai, Devanagari, Lao and Myanmar.
Can I fix how names and brands are spelled?
Yes. Pass a prompt of up to 500 characters with names, brands and jargon and the transcriber uses it as a hint. If you already have a transcript, send your own words array with start and end times and we skip transcription.
What happens to my resolution, frame rate and audio?
Your framing is kept, whether that's 9:16, 16:9, square or anything else. The output is an H.264 MP4 with the short side scaled down to 1,080 px if it's larger, at up to 60 fps. AAC audio is copied without re-encoding, other audio becomes 192 kbit/s AAC, and HDR footage is tone-mapped to standard range.
What are the limits?
Clips can be up to 15 minutes long and 500 MB, and need an audio track unless you send your own words. Each key runs 3 jobs at once and up to 500 a day, a job can run for 10 minutes, and outputs stay downloadable for 7 days.
Can I call it from Lovable, bolt, Supabase or n8n?
Yes. It's one HTTPS request with a JSON body, so it works from Supabase Edge Functions, Cloudflare Workers, Vercel functions, Lovable and bolt apps, n8n or a cron job. There's nothing to install: ffmpeg runs on our side.
Ready to build?
Caption your first 50 minutes free
Sign up and create an API key in a minute. Your first $1 of renders is on us, then it's $0.02 a minute.



