The video captions layer for agent workflows
The captions API built for AI agents.
Turn raw video into post-ready content without opening an editor. One API for transcription, styling, rendering, and delivery.
Caption settings
Why captions
Most feeds play on mute. Captions keep people watching.
A video nobody hears still has to land. Captions turn silent autoplay into a video people finish, and finished videos are the ones that get shown to more people.
are more likely to watch an entire video when captions are available.
Verizon Media & Publicis, 2019Stops the scroll
Words on screen give muted viewers a reason to stay past the first second.
Holds attention
Word-by-word captions pull the eye through the video, beat by beat.
Reaches everyone
Sound off, noisy train, hard of hearing, second language. Captions work for all of them.
Made for machines, beautiful to people
Your agent already makes the video. Let it finish the job.
Captioning should be a programmable step, not another dashboard. caption.sh gives autonomous workflows the controls a human editor expects, in a spec an agent can write.
The AI UGC pipeline
Every step is automated. Captions should be too.
UGC factories already script, generate, and edit without a human. caption.sh is the step between the edit and the post, one API call your pipeline makes on its own.
Find the hook
An LLM scans trends and writes the script.
Generate the creator
AI avatar and voice read it on camera.
Cut the edit
B-roll, jump cuts, music, product shots.
Caption it
caption.sh adds word-timed, on-brand captions in any style.
POST /v1/videosPublish everywhere
TikTok, Reels, Shorts, ads.
Learn and repeat
Watch time feeds the next batch of hooks.
MCP server
Your agent can caption now.
Plug caption.sh into Claude Code, Cursor, or any MCP client. Every tool tells the agent what it does, what the video will look like, and when to use it. Ask for TikTok captions and it picks the style, renders, and hands back the MP4.
> caption hook.mp4 for tiktok, brand green
● list_caption_styles
picked short-form-punch
● caption_video
font: "luckiest-guy"
max_words: 1
position: "center"
highlight_color: "#22C55E"
● get_caption_job done · 31s · 6¢

One line to connect
claude mcp add --transport http caption https://mcp.caption.sh/mcp \
--header "Authorization: Bearer $CAPTION_API_KEY"Hosted, nothing to install. Grab an API key from Dashboard > Keys and you're connected.
caption_videoBurns word-timed captions into a new MP4.
Used when: Any ask for captions, subtitles, or text on screen.
list_caption_stylesEvery font, recipe, and what each one looks like.
Used when: The user says "make it pop" instead of settings.
get_caption_jobWaits for the render, returns the MP4 link.
Used when: Right after caption_video.
list_caption_jobsRecent jobs with status and cost.
Used when: Auditing a batch or finding a lost job.
get_caption_balanceCredits left and recent charges.
Used when: Before a big batch, or after a 402.
One clean request
A video primitive your stack can trust.
Upload, configure, and move on. Durable jobs keep rendering outside your request lifecycle.
const job = await caption.videos.create({
source: upload.url,
captions: {
font: "Satoshi",
position: "bottom",
words_per_group: 3,
highlight: "#F4FF52"
}
});From prompt to publish
Four steps. Zero timelines.
Upload once
Send video direct to storage. No Worker memory, no file juggling.
Style in JSON
Agents choose font, pacing, position, emphasis, and animation as data.
Render async
A durable queue drives isolated render workers built for real video jobs.
Ship the MP4
Poll or receive a webhook, then publish the finished asset anywhere.
Built for volume
One clip or ten thousand. Same call.
For UGC ads, faceless channels, avatar video, social automation, and whatever your agents invent next.
Explore the APISimple prepaid pricing
Pay for rendered minutes. Nothing else.
- No subscription or seat minimum
- Credits never lock you into a tier
- Every style and font included
FAQ
Questions, answered.
What is caption.sh?
+
caption.sh is a captions API built for AI agents and automated video pipelines. You send a video with speech and get back the same MP4 with animated, word-timed captions burned in, with the spoken word highlighted in sync and the text auto-fitted to the frame.
How do I add captions to a video with an API?
+
Create a job with POST https://api.caption.sh/v1/videos using your API key as a bearer token. Pass a source_url and the API pulls the video, or pass a filename and upload the file to the returned URL. Poll GET /v1/jobs/{id} until it's done, then download the MP4 from /v1/jobs/{id}/result.
Can AI agents like Claude or Cursor use caption.sh?
+
Yes. caption.sh runs a hosted MCP server at https://mcp.caption.sh/mcp. Add it to Claude Code, Cursor, Claude Desktop or any MCP client with your API key as a bearer token, and the agent can caption videos, pick a style and hand back the MP4. No install.
How much does caption.sh cost?
+
$0.10 per minute of video, rounded up to the next minute, paid from a prepaid balance. Credit packs are $5, $10, $20, $50 (includes a $5 bonus) and $100 (includes a $10 bonus). A job never starts if your balance can't cover it.
Does caption.sh make SRT or VTT subtitle files?
+
No. caption.sh burns the captions into a new MP4, drawn on the frames, so the video is ready to post on TikTok, Reels or Shorts without any editing.
What caption styles can I use?
+
Every look is plain JSON: 18 fonts, size, words per caption, position, text and highlight colours, outline or backdrop box, tilt, and profanity masking. There are ready-made recipes such as short-form punch, karaoke, clean subtitles, neon glow and brand-safe. Every option is optional.
Does it work for vertical, square and landscape video?
+
Yes. Caption size and wrapping are fractions of the frame, so the same options give proportional captions on 9:16, 1:1 and 16:9 video.
How long can videos be?
+
Up to 10 minutes per video. Finished results are kept for 24 hours for download.