Video infrastructure for agents

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.

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

{}
How it works

One request in. A captioned MP4 out.

01

Upload

Send your video straight from the client, no storage setup.

02

Transcribe

Speech-to-text runs server-side with word-level timestamps.

03

Render

Styled captions are burned into every frame, no client-side sync.

04

Download MP4

Get back a single, ready-to-post file.

Developer-first

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.

Batch requests
Async job API
Poll for status
Built to scale

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

Luckiest GuyDynaPuffLobsterBlack Ops OneUnifrakturMaguntiaRobotoInterFredokaMichromaMouse MemoirsMerriweatherNoto SerifArvoUltraShadows Into LightStory ScriptJim NightshadeImperial Script
Pricing

One price. No tiers to compare.

$0.10/ minute
0:45 clipbilled 1 min$0.10
  • Pay-as-you-go: billed only for what you render
  • Prepaid credits, top up any time
  • No subscription, no seat minimums
Features

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.

Articles

Notes on shipping captions at scale.

Long-form guides on captioning APIs, UGC automation, and running video pipelines in production. Coming soon.

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.

Coming soon

Automating UGC captions at scale

Patterns for batching, retrying, and monitoring caption jobs across thousands of clips a day.

Coming soon

Word-level timestamps, explained

What word-level timestamps are, why they drive karaoke-style captions, and how caption.sh generates them.

FAQ

Questions developers ask.

Docs

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"}'