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

{}

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

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

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