Video in.Captioned MP4 out.One call.

Pass a URL or upload a file. Get back a burned MP4 plus SRT, VTT, ASS and word timings. Built for n8n, Make and agents.

Caption this with the highlight preset, and get Acme and SK-7 spelled right.
cdn.acme.com/clip.mp4

caption_videocaptionpipe
inputUrl "https://cdn.acme.com/clip.mp4"
preset "highlight"
dictionary ["Acme", "SK-7"]
clip-captioned.mp4srtvttasswords.json

Done. 42 seconds charged, 4:18 left on your balance.

MCP and HTTP30 minutes maxNo subscription5 free minutes

How it works

Four steps. One job.

There is no editor to open and no ffmpeg on your side. Each of these is one call.

  1. create_upload

    Give us the video

    Pass a direct media URL and skip this entirely, or ask for an upload and PUT the bytes yourself.

  2. caption_video

    Say how you want it

    A preset, an optional dictionary of names the transcript should get right, an optional language.

  3. get_caption_job

    Collect the files

    Poll until it is done. A burned MP4 and four sidecars, available for 24 hours.

  4. render_captions

    Fix a word, re-burn

    Your agent edits the words and timings. We re-burn from them. Free, and it does not count against your balance.

See it

The same clip, before and after.

Drag the seam. Left is what you send. Right is what came back from one real job, with the words burned into the pixels rather than sitting in a sidecar file.

your clipafter one call

Demo. A generated clip, captioned by a real job on 7 September 2026. Muted.

In
12.05 s
Charged
13 s
Completed in
19 s
Files
MP4, SRT, VTT, ASS, words.json
Preset
highlight, #FFD400

Billed by the whole second, so 12.05 seconds cost 13. The five files came back together and stayed for 24 hours. It ran on the trial, so it had 1 free re-burn, which the corrections section below spends.

Presets

Three presets. That is the product.

Pick one per job. There are no custom fonts, colors or boxes, because every one of those is a decision you would have to make on every video.

highlight

The word being spoken takes the accent.

clean

White with a hard outline. Nothing else.

boxed

A plate behind the line, for busy footage.

Corrections

Your agent corrects. We just re-burn.

Send up to 1,000 terms with the job and the names come out right the first time. When something is still wrong, your agent edits the words and timings and we burn it again. Same job as above.

v1

first burn, highlight #FFD400

words.json, one word
- { "text": "notebook,", "startMs": 662, "endMs": 1163 }
+ { "text": "CaptionPipe", "startMs": 662, "endMs": 1163 }
render_captions
jobId          "job_8bb3..."
words          [ ...27 words ]
highlightColor "#00D4FF"
idempotencyKey "t35-render-1788810434"

v2 ready in 21 s. Charged 0 s.

The word was not wrong. It was swapped, and the colour with it, so the re-burn shows in the pixels. A real correction is the same call with a real edit.

v2

one word changed, highlight #00D4FF

Re-burning is free, 3 times per job on a paid account and 1 on the trial, for 24 hours. It does not touch your balance and it never runs a language model over your words. What you send is what gets burned.

Who it is for

For the layer that already has the video.

Workflow builders

You already move video through n8n or Make. This is one HTTP call in the middle of it, not a tool your team has to learn.

Generated-video pipelines

Your generator returns a URL. Pass that URL straight in. Nothing is downloaded to your side and nothing is re-encoded twice.

Agents

Connect over MCP and the tools show up where your agent already works. It reads the schema and sequences the calls itself.

Pricing

Try it free. Then buy only the minutes you need.

4¢ a minute, billed by the second. No subscription, nothing renews.

Free

For trying it on your own videos.

$0 no card needed

5 minutes, about 10 thirty-second videos

  • Videos up to 3 minutes
  • 1 job at a time
  • 1 free re-render per job
  • All five outputs on every job
Start free

Pay as you go

Choose how much to add to your balance. Use it whenever.

$10 for 250 minutes

$10$100
15-second videos
1,000
30-second videos
500
1-minute videos
250
  • Videos up to 30 minutes
  • 3 jobs at a time
  • 3 free re-renders per job
  • Paid minutes never expire
Buy minutes

Same 4¢ a minute at any amount. Billed by the whole second, and a failed job costs nothing.

Limits

Built for shorts. The 30-minute ceiling is deliberate.

Everything below is checked before you are charged, so a file we cannot take costs you nothing.

Length
Up to 30 minutes
Size
Up to 2 GB in
Output
1080p H.264, 60 fps ceiling
Shape
Portrait first. 16:9 supported. Square is refused before you are charged
Files
Available for 24 hours after a job finishes
Per call
One video

Questions

The things people ask first.

What do I actually get back?

A burned MP4, plus SRT, VTT, ASS and a words.json with per-word timings. All five, every job.

Do I need to upload the file?

Only if it lives on your machine. If your video is already at a URL, pass the URL and there is no upload step at all.

What happens if a name comes out wrong?

Send up to 1,000 terms with the job and they are used on the first burn. If something is still wrong, your agent edits the words and re-burns. That is free, 3 times per job on a paid account and 1 on the trial, for 24 hours.

How am I billed?

By the whole second, against a prepaid balance. Minutes come in $10 blocks of 250, 1 to 10 per checkout. No subscription, no seats, no auto-refill.

What if a job fails?

You are not charged. The hold on your balance is returned and the error tells you which of the limits you hit.

Is my video kept?

Files are deleted 24 hours after a job finishes. Dictionary terms are held for that job and deleted with its files.

Why is 30 minutes the ceiling?

Because it is the honest one. Longer files are a different product with different costs, and quoting a limit we cannot hold would be worse than the limit itself.

Wire it this afternoon.