The captions API built for AI agents
Give any workflow production-ready captions with one API call. Try every style live, then ship the same settings in code.
Caption settings
One request in. A captioned MP4 out.
Upload
Send your video straight from the client, no storage setup.
Transcribe
Speech-to-text runs server-side with word-level timestamps.
Render
Styled captions are burned into every frame, no client-side sync.
Download MP4
Get back a single, ready-to-post file.
Built for automated AI UGC pipelines.
caption.sh is built for pipelines, not people. Batch a folder of clips, get a webhook callback when each render finishes, and retry safely on failure: the same one endpoint whether you’re captioning ten videos a day or ten thousand.
Faceless YouTube automation
Script-to-video pipelines that publish daily: burn in captions on every faceless upload without a human ever opening an editor.
UGC ad generation at scale
Generate hundreds of ad variants and caption every one through the same call: styled and on-brand, every render.
TikTok, Reels & Shorts bulk captioning
Batch a folder of short-form clips and get back burned-in, word-level captions sized for every vertical format.
Avatar & voice pipelines
AI-avatar and text-to-speech tools pipe straight into caption.sh: it's the last step before a video ships.
18 built-in fonts
One price. No tiers to compare.
Everything captions need. Nothing they don't.
18 built-in fonts
Display, sans, serif, and script faces baked in and ready to render: pick a style key, no font files to host or license.
Resolution-agnostic
Captions scale to the source frame: vertical, square, or widescreen: so the same request works for TikTok, Reels, and Shorts, with no separate presets to maintain.
Fit guarantee
Lines wrap and shrink to stay inside the safe area. Nothing clips off-screen, ever.
Word-level timestamps
Karaoke-style emphasis tracks each spoken word as it lands: driven by word-level timestamps, not a guess.
Profanity censor
Flag or bleep restricted words automatically before render: one flag, no manual review pass.
One endpoint
POST a video, get back a captioned MP4: synchronous by default, webhook-friendly for batch jobs at scale. No polling, no SDK required.
Notes on shipping captions at scale.
Long-form guides on captioning APIs, UGC automation, and running video pipelines in production. Coming soon.
How to add captions to video via API
A developer walkthrough of sending a video, getting back a captioned MP4, and wiring it into your stack.
Automating UGC captions at scale
Patterns for batching, retrying, and monitoring caption jobs across thousands of clips a day.
Word-level timestamps, explained
What word-level timestamps are, why they drive karaoke-style captions, and how caption.sh generates them.
Questions developers ask.
Ship captions in minutes.
Grab an API key and post your first job. The full reference covers every font, sizing knob, and the async job lifecycle: everything your AI pipeline needs to burn in captions without a human touching an editor.
Quickstart
curl -X POST https://api-staging.caption.sh/v1/jobs \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"input_key":"inputs/clip.mp4"}'