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.

Vertical · 9:16
0:00
Widescreen · 16:9
0:00
Caption settings

Font

Layout

Size
Position
3
0.00

Style

Decoration

4

Colors

Motion

0°
Entrance
Emphasis
Ambient

API call

{}

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.

85%

of Facebook video views played with the sound off, per publisher data.

Digiday, 2016
69%

of US consumers watch video with the sound off in public places.

Verizon Media & Publicis, 2019
80%

are more likely to watch an entire video when captions are available.

Verizon Media & Publicis, 2019
+12%

average lift in view time for captioned video ads in internal tests.

Meta for Business

Stops 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.

AI caption API system

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.

Typed style options
Direct-to-R2 uploads
Idempotent job creation
Webhook-ready outputs

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.

01

Find the hook

An LLM scans trends and writes the script.

02

Generate the creator

AI avatar and voice read it on camera.

03

Cut the edit

B-roll, jump cuts, music, product shots.

04

Caption it

caption.sh adds word-timed, on-brand captions in any style.

POST /v1/videos
05

Publish everywhere

TikTok, Reels, Shorts, ads.

06

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.

agent

> 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¢

MCP
Captioned video output
agents
hook-captioned.mp40:31

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_video

Burns word-timed captions into a new MP4.

Used when: Any ask for captions, subtitles, or text on screen.

list_caption_styles

Every font, recipe, and what each one looks like.

Used when: The user says "make it pop" instead of settings.

get_caption_job

Waits for the render, returns the MP4 link.

Used when: Right after caption_video.

list_caption_jobs

Recent jobs with status and cost.

Used when: Auditing a batch or finding a lost job.

get_caption_balance

Credits 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.

POST /v1/videos202 ACCEPTED
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.

01

Upload once

Send video direct to storage. No Worker memory, no file juggling.

02

Style in JSON

Agents choose font, pacing, position, emphasis, and animation as data.

03

Render async

A durable queue drives isolated render workers built for real video jobs.

04

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 API
Caption API rendering at scale

Simple prepaid pricing

Pay for rendered minutes. Nothing else.

$0.10 / minute
  • No subscription or seat minimum
  • Credits never lock you into a tier
  • Every style and font included
Add credits

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.